目标
在本教程中,您将了解以下内容:
创建 Compute Engine 实例模板和代管式实例组 (MIG)。
获取域名和证书。
创建 HTTPS 负载均衡器 (带证书)。
启用 IAP。
测试 IAP 是否正常运行。
费用
本教程使用 Google Cloud的可计费组件,包括以下组件:
Compute Engine
- 4 个虚拟机 (VM)
网络
全球 负载均衡器转发规则
入站流量
如需根据预计使用量估算费用,请参阅此价格计算器。
准备工作
在开始本教程之前,您需要做好以下准备:
第 1 步:创建 Compute Engine 模板
在 Google Cloud 控制台中,前往 Compute Engine > 创建实例模板页面,然后选择要在其中创建模板的项目。
除以下几项外,其他设置均使用默认值:
机器类型:
- micro (f1-micro)
访问权限范围:
针对每个 API 设置访问权限
Compute Engine:只读
防火墙:
- 允许 HTTP 流量
复制以下脚本并将其粘贴到管理部分的自动化 > 启动脚本下方:
完成值的更新后,点击创建以创建模板。
第 2 步:创建托管式实例组
在 Google Cloud 控制台中,前往 Compute Engine > 创建新的实例组页面,然后选择要在其中创建托管式实例组的项目。
除以下几项外,其他设置均使用默认值:
名称:my-managed-instance-group
位置:多地区
实例模板:选择您在第 1 步中创建的实例模板
实例数:如需更改实例数,您必须先关闭自动扩缩功能。
自动扩缩模式:不自动扩缩
健康检查:选择创建健康检查,然后输入以下值:
名称:my-health-check
协议:HTTP
点击保存并继续,使用新的健康检查。
更新完值后,点击创建以创建托管实例组 (MIG)。
第 3 步:获取域名和证书
如需将负载均衡器用于 HTTPS 流量,您需要一个域名和签名证书。您可以在 Cloud Domains 上注册一个域名,也可以使用自己选择的域名注册商。请先注册网域,然后再继续操作。
设置证书
创建证书,以向用户标识您的网站。如需了解如何创建证书,请参阅使用 Google 管理的 SSL 证书。
您的 CA 必须验证注册的域名是否为您所有。在以下步骤中,您将创建一个虚拟机,以便向 CA 验证您的网域。
创建一个虚拟机来验证您的网域所有权
在 Google Cloud 控制台中,前往 Compute Engine > 创建实例页面。
除以下几项外,其他设置均使用默认值:
名称:certbot-vm
机器类型:micro (f1-micro)
访问权限范围:
针对每个 API 设置访问权限
Compute Engine:读写
启动磁盘映像:
- Debian GNU/Linux 9(拉伸)
防火墙:
允许 HTTP 流量
允许 HTTPS 流量
更新完值后,点击创建以创建虚拟机实例。请记下刚刚创建的虚拟机的外部 IP 地址。下一步操作将会用到该地址。
将您的网域设置为指向虚拟机
如需将您的网域设置为指向虚拟机,请按照以下步骤配置 A 记录:
通过网域托管服务商登录您的网域账号。
找到相关页面以更新网域的 DNS 记录。该页面的名称可能是“DNS 管理”“域名服务器管理”或“高级设置”。
将 A 记录更改为以下值:
名称/主机/别名:@
值:您创建用于验证上述网域所有权的虚拟机的外部 IP 地址。
TTL:注册商的默认值,或 86400(一天)。
等待 DNS 记录更新。您所添加的记录最长可能需要一天的时间来传播。
如需了解详情,请参阅关于 A 记录。
测试服务器
如需测试服务器是否正常运行,请按以下步骤操作:
在 Google Cloud 控制台中,前往 Compute Engine > 虚拟机实例页面。
前往“虚拟机实例”页面在 certbot-vm 对应的 Connect 下方,点击 SSH.
运行以下命令以在虚拟机上运行小型网络服务器:
mkdir web cd web echo "Hello" > index.html sudo busybox httpd -v -f在网络浏览器中,转到您之前注册的域名。您的网络浏览器应显示
Hello,并且您的 SSH 会话应显示一条包含... response:200的消息。否则,请等待几分钟,然后重复此步骤。测试成功完成后,按 Ctrl+C 停止网络服务器。
创建证书
如需创建证书,请在虚拟机上运行以下命令来注册 Let's Encrypt,其中 YOUR_DOMAIN 是您的域名,不包括协议:
sudo pkill busybox sudo apt-get install -y certbot sudo certbot certonly --standalone -d YOUR-DOMAIN
在此过程中,Let's Encrypt 可能会向您索要电子邮件地址,以便在您的证书到期时(默认为在颁发 3 个月后到期)发送提醒。此外,您还必须同意 Let's Encrypt 的服务条款。
成功注册后,系统会显示一条消息,其内容为 Congratulations! Your certificate and chain have been saved at...。
将证书添加到项目中
如需将证书添加到项目中,请在虚拟机上运行以下命令:
sudo su cd /etc/letsencrypt/live/YOUR_DOMAIN gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem
成功创建证书后,系统会显示如下所示的消息:Created
[https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert]
在继续操作之前,请先关闭 SSH 会话。
第 4 步:创建负载均衡器
在开始执行此步骤之前,请确保您在上一步中启动的 SSH 会话已关闭。准备就绪后,请按照以下步骤创建负载平衡器:
在 Google Cloud 控制台中,前往网络服务 > 创建负载均衡器页面,然后选择要在其中创建负载均衡器的项目。
转到“创建负载均衡器”页面在 HTTP(S) 负载均衡下,点击开始配置。
选择 从互联网到我的虚拟机。
在显示的新建 外部应用负载均衡器页面上,为您的负载均衡器输入名称。
点击后端配置。
在后端服务和后端存储桶下,选择创建后端服务。
为您的后端服务添加名称,例如
my-backend-service。
前往安全部分,然后选择启用 IAP 来保护对应用的访问。
Cloud CDN 与 IAP 不兼容。如果您已启用 Cloud CDN,但选择启用 IAP,则 Cloud CDN 会自动停用。
点击创建。系统会加载负载均衡页面,并在负载均衡器列表中显示您的新负载均衡器。
在 Google Cloud 控制台创建完新负载均衡器后,点击该负载均衡器的名称,并记下详细信息 > 前端下方显示的外部 IP 地址。您将在下一步骤中用到它。
将您的网域设置为指向负载均衡器
如需将您的网域设置为指向负载均衡器,请按照以下步骤配置 A 记录:
通过网域托管服务商登录您的网域账号。
找到相关页面以更新网域的 DNS 记录。该页面的名称可能是“DNS 管理”“域名服务器管理”或“高级设置”。
将 A 记录更改为以下值:
名称/主机/别名:@
值:您之前创建的负载均衡器的外部 IP 地址。不要将端口
:443添加到 DNS 记录中。TTL:注册商的默认值,或 86400(一天)。
等待 DNS 记录更新。要传播您刚刚添加的记录,最长可能需要一天的时间。
如需测试负载均衡器,请使用网络浏览器通过
https://协议访问您的网域。如果负载均衡器尚未设置,您会看到“HTTP 502”错误。
负载均衡器准备就绪后,您会看到“Unauthorized request”(未经授权的请求)。
如需了解详情,请参阅关于 A 记录。
重启虚拟机
要对来自 IAP 的请求正确进行身份验证,您必须重启 MIG 中的虚拟机。
在 Google Cloud 控制台中,前往 Compute Engine > 实例组页面。
前往“实例组”页面点击 my-managed-instance-group。
在显示的实例组详情页面顶部,点击滚动式重新启动/替换。
在重启/替换 my-managed-instance-group 的实例页面上,设置以下值:
操作:重新启动
不可用的实例数上限:3 个实例,共 3 个实例
最短等待时间:0 s
更新完值后,点击重新启动。
第 5 步:设置 IAP
配置防火墙
接下来,配置防火墙以阻止对底层虚拟机的访问,仅允许通过 IAP 进行访问:
前往 Google Cloud 控制台 VPC 网络 > 防火墙规则。
前往“防火墙规则”页面选中以下规则旁边的复选框:
default-allow-http
default-allow-https
default-allow-internal
点击删除。
点击创建防火墙规则并设置以下值:
名称:allow-iap-traffic
目标:网络中的所有实例
来源 IP 范围(在此字段中每粘贴一个值,都需要按一次 Enter 键):您必须允许来自这些 IP 地址范围的流量,以便负载均衡器可以与后端通信。
130.211.0.0/22
35.191.0.0/16
协议和端口:
指定的协议和端口
tcp:80
更新完值后,点击创建。
设置 IAP
如需为您的项目设置 IAP,请按照以下步骤操作:
在 Google Cloud 控制台中,前往安全性 > Identity-Aware Proxy 页面,然后选择要为其启用 IAP 的项目。
转到 Identity-Aware Proxy 页面如果尚未配置项目的 OAuth 权限请求页面,系统将提示您进行配置:
-
转到 OAuth 同意屏幕。
配置同意屏幕 - 在支持电子邮件地址下,选择要显示为公开联系人的电子邮件地址。该电子邮件地址必须属于当前登录的用户账号,或者属于当前登录的用户是管理员或所有者的 Google 群组。
- 输入您要显示的应用名称。
- 根据需要添加任何可选详细信息。
- 点击保存。
如需稍后更改 OAuth 同意屏幕上的信息(例如产品名称或电子邮件地址),请重复上述步骤配置同意屏幕。
-
转到 OAuth 同意屏幕。
在 my-backend-service 旁边,
在所显示的开启 IAP 窗口中,选中“我已阅读配置要求,并根据文档配置了我的 Compute Engine 资源”旁边的复选框。
点击开启。
将主账号添加到访问列表中
接下来,您需要将主账号添加到项目的 IAP 访问权限列表中。
在安全 > Identity-Aware Proxy 右侧的访问权限部分中,点击添加。
输入您要向其授予访问权限的主账号(包括您自己),并为主账号分配 IAP-secured Web App User 角色。主账号可以是:
Google 账号:user@gmail.com
Google 群组:admins@googlegroups.com
服务账号:server@example.
Google Workspace 网域:example.com
步骤 6:测试 IAP
如需测试 IAP 是否正常运行,请按以下步骤操作:
在网络浏览器中,前往您的域名。如果您看到“未经授权的请求”,请过几分钟后重试。
如果您看到 Google 登录屏幕,请使用您在上一步中授予了访问权限的 Google 账号进行登录。
系统会显示一条消息,例如“Hi, user@example.com. I am my-managed-instance-group-29z6.”。
请尝试刷新页面。浏览器应显示代管式实例组中 3 台机器的名称。这是在实例组中的虚拟机之间分配流量的负载均衡器。
恭喜!您已经使用 IAP 成功启用了负载均衡服务。
清除数据
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
为 Compute Engine 设置完 IAP 后,您可以清理在 Google Cloud 上创建的资源,以免日后产生费用。以下部分介绍如何删除或关闭这些资源。
删除项目
为了避免产生费用,最简单的方法是删除您为本教程创建的项目。
要删除项目,请执行以下操作:
- 在 Google Cloud 控制台中,前往管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
删除实例
要删除 Compute Engine 实例,请运行以下命令:
- 在 Google Cloud 控制台中,前往虚拟机实例页面。
- 选中要删除的实例对应的复选框。
- 如需删除实例,请点击更多操作,点击删除,然后按照说明操作。
删除默认网络的防火墙规则
如需删除防火墙规则,请执行以下操作:
- 在 Google Cloud 控制台中,前往防火墙页面。
- 选中要删除的防火墙规则对应的复选框。
- 如需删除防火墙规则,请点击删除。