当您的组织策略阻止VM上的外部IP时,如何完成GCP文档/教程?
在本操作指南中,您将解决一个常见的组织策略约束完成谷歌文档时不允许虚拟机上的外部IP部署基本Flask web服务器。在本指南中,您将使用云控制台创建资源。提供使用Hashicorp Terraform的后续服务
注意:您将在GCP中遇到IT组织政策的已知限制,我们将提供遵守这些限制的说明。
假设和前提
- GCP组织约束条件/compute.vmExternalIpAccess启用
- 学习项目,简称个人沙盒
创建虚拟机(VM)
谷歌云平台调用其虚拟机谷歌计算引擎(普通教育证书)
启用服务API
要使用GCE服务,必须在GCP项目上启用该服务
- 启用API服务(&S)
- 使用顶部导航的放大等级搜索服务
- 支持搜索的API
- 使用按钮“+Enabel APIs AND SERVICES”启用必要的API
- 启用计算引擎
创建GCE虚拟机
使用页面顶部的放大镜搜索“计算引擎”服务
选择“创建实例”
可选更改名称
离开区域/区域(例如us-central1和us-centracl1-b;请注意您的区域/区域,以便稍后使用)
更改机器类型为e2 micro(以节省学习期间的开支)
阅读下面的消息高级选项>网络>网络接口>默认值>外部IPv4
“VM实例的外部IP”组织策略不允许将外部IP地址与此实例关联。请联系您的组织政策管理员进行更改。了解更多信息
!! 这在以后很重要
在此处添加启动脚本:高级选项>管理>自动化>启动脚本
sudo apt-get更新;sudo apt-get安装-yq build-essential python3-pip rsync;pip3安装烧瓶
选择底部的“创建”
约束-无外部IP
啊哈!由于组织策略,GCE虚拟机不能有外部IP。结果是VM启动脚本将无法连接到外部注册表,并且无法下载Python包。
跳到下一步进行解决或通过以下步骤验证缺少访问权限
- 转到计算引擎页面
- 在您创建的VM旁边,选择文本ssh标准(上图)
- 授权弹出式ssh-in浏览器
- 在终端类型中
pip3列表
,请参阅错误消息
- 或尝试
curl example.com
,无响应
云NAT
通过在部署虚拟机的VPC网络中部署云NAT,出站流量将能够访问互联网,而不会暴露虚拟机本身的外部IP地址。
- 搜索服务云NAT
- 选择创建云NAT
- 给它一个名称,例如“my-default-network-nat”
- 选择Network“default”(网络“默认”)(必须与上面创建的VM相同)
- 选择区域“us-central1”(必须与上面创建的VM相同)
- 云路由器
- 创建新路由器
- 给它起个名字,例如“my-default-nat-router”
- 选择创建
- 选择“创建”
- 按照“创建GCE虚拟机”创建新虚拟机,并为新虚拟机指定不同的名称。
- 为什么?先前部署的VM执行了一次启动脚本(在启动时),并将运行命令。与修改现有虚拟机相比,替换虚拟机更符合云优先方法。
验证时间:
- 转到计算引擎页面
- 在上面创建的虚拟机旁边,选择文本ssh标准
- 授权弹出式ssh-in浏览器
- 在终端类型
pip3列表
,查看是否安装了烧瓶
安装并运行演示应用程序
SSH到VM
- 转到计算引擎页面
- 在上面创建的VM旁边(具有NAT)选择文本ssh标准
- 授权弹出式ssh-in浏览器
创建文件app.py(批准)
在shell提示符中使用以下命令
$cat<<EOT>应用程序.py从烧瓶进口烧瓶app=烧瓶(名称)@app.route(“/”)定义hello_cloud():return'你好云!'app.run(主机=“0.0.0.0”)EOT公司
验证$猫app.py
在SSH提示符下执行$python3应用程序.py
验证应用程序正在运行
打开第二个SSH并运行$curl本地主机:5000
。回应将是“你好,云!”
跳到下面清理或继续使用高级材料
可选:高级端口转发到本地浏览器
TL;DR;允许Cloud Shell访问VM端口5000和端口转发到本地浏览器的两个步骤
创建防火墙规则
你打算做什么?
- 您将允许Google IAP(身份感知代理)IP范围连接到默认专有网络中的任何虚拟机
- 搜索服务防火墙:VPC网络
- 选择“创建防火墙规则”
- 给它起个名字
- 网络,设置为默认值
- 目标,设置为“网络中的所有实例”
- 源IPv4范围,设置为
35.235.240.0/20
- 协议和端口
- 创建
创建IAP隧道
你在做什么?
- 使用
g云
要从Cloud Shell创建IAP隧道,现在Shell可以访问VM上的端口5000。
为什么?
- IAP添加了一个验证级别,检查您是否经过身份验证并获得访问此端口的授权
打开云控制台
使用您的VM名称更新以下脚本
$g云计算start-iap-tunnel<your_vm_here>5000--local-host-port=localhost:5000--zone=us-central1-a
授权Cloud Shell会话
输出>“…隧道连接正常”
在Cloud Shell中修改Web预览
- 选择Web预览
- 修改端口
- 输入5000
- 保存预览(&P)
- 新的浏览器选项卡将打开并显示“Hello,Cloud!”
清理
删除资源是将意外支出降至最低的最佳方式。
- 删除虚拟机
- 删除防火墙规则
- 删除云路由器和云NAT
总结与审查
- 由于组织政策约束,如无外部IP,完成的谷歌培训需要修改
- 对于GCE虚拟机来说,使用云NAT访问互联网以安装软件包提供了一种安全的方式来允许虚拟机进行互联网出站访问
- 使用云IAP创建到没有外部IP地址的虚拟机的隧道连接