本主题仅作为示例。其介绍了如何从证书授权机构 (CA) Let's Encrypt 获取 TLS 证书。如果您没有其他方法可以获取由 CA 授权的证书/密钥对,则可以遵循这些主要作为示例提供的步骤。本示例显示了如何使用 Let's Encrypt CA、Certbot 客户端和 Google Cloud Platform Cloud DNS 生成证书。
使用这些凭据的位置
您必须为集群外部公开的两个 Istio Ingress 网关提供 TLS 凭据:
网关 | TLS 要求 |
---|---|
MART 入站流量网关 | 需要已获授权的 TLS 证书/密钥对。 |
运行时入站流量网关 | 您可以使用自签名证书/密钥对或经过授权的 TLS 凭据。 |
要求
您需要通过域名注册商获取的域名。您可以通过 Google Domains 或自己选择的其他网域注册商注册域名。
配置 Cloud DNS
如需获得已授权的 TLS 凭据,您必须拥有合格的域名。以下步骤介绍了如何使用 Google Cloud DNS 来获取域名和管理您的网域服务器。- 打开 Google Cloud 控制台,然后使用您在第 1 步:创建 Google Cloud 账号中创建的账号进行登录。
- 选择您在第 2 步:创建 GCP 项目中创建的项目。
- 启用 Cloud DNS API。请参阅启用 API。
- 创建两个静态 IP 地址:
- 如果您使用的是 GKE,请按照预留静态外部 IP 地址中的说明创建两个静态 IP 地址。您可以随意为地址指定名称,例如
apigee-hybrid-mart
和apigee-hybrid-runtime
。完成后,您将在下一步中有两个 IP 号用于集群配置。例如35.225.131.189
和34.66.75.196
- 如果您使用的是 Anthos GKE,请按照 Anthos GKE 文档中的说明创建两个静态 IP 地址。
- 如果您使用的是 GKE,请按照预留静态外部 IP 地址中的说明创建两个静态 IP 地址。您可以随意为地址指定名称,例如
- 创建托管公开区域。如需相关说明,请参阅创建托管公开区域。
- 获取您为
apigee-hybrid-mart
预留的外部 IP。 - 为 MART 端点创建记录集。输入您在上一步中获得的外部 IP,并在域名中添加前缀,例如
mart
。如需了解相关说明,请参阅创建新记录。 - 获取您为
apigee-hybrid-runtime
预留的外部 IP。 - 为 Istio Ingress 端点创建记录集。这是对混合网关进行 API 调用的地址。输入您在上一步中获得的外部 IP,并在域名中添加前缀,例如
apitest
。如需了解相关说明,请参阅创建新记录。 - 复制 DNS 记录数据,如以下示例所示:
- 通过 Google Domains 返回到您的网域页面。
- 选择您的网域。
- 选择 DNS。
- 在“域名服务器”部分,点击修改。
输入您从 Network Service Cloud DNS 页面复制的域名服务器:
现在,您的 Google Cloud DNS 将管理您网域的 DNS 记录。
在虚拟机上安装 Certbot
现在,您已经设置了 Cloud DNS 来管理您的网域服务器,接下来需要使用 Cloud 虚拟机上的 dns_google 插件安装 Certbot 客户端。该客户端允许您从 Let's Encrypt 端点获取网域的授权证书。
- 打开 Google Cloud 控制台,然后使用您在第 1 步:创建 Google Cloud 账号中创建的账号进行登录。
- 选择您在第 2 步:创建 GCP 项目中创建的项目。
- 选择 IAM 和管理 > 服务账号。
服务账号视图会显示项目的服务账号列表。
- 如需创建新的服务账号,请点击视图顶部的 +创建服务账号。
此时会显示服务账号详细信息视图。
- 在服务账号名称字段中,输入服务账号的名称。
您可以选择在服务账号说明字段中添加说明。说明可提醒您特定服务账号的用途。
- 点击创建。
GCP 会创建一个新的服务账号,并显示服务账号权限视图。使用此视图为新服务账号分配角色。
- 点击选择角色下拉列表。
- 选择 Project Owner 角色。
- 点击继续。
- 点击完成。
- 在 GCP Console 中,选择 Compute Engine > 虚拟机实例。
- 创建一个名为 certmanager 的虚拟机实例。
- 在“启动磁盘”部分,为 SSD 永久性云端硬盘选择 CentOS7 和 20 GB。
- 将服务账号设置为您之前创建的服务账号。
- 在机器上安装 Certbot 和 dns_google 插件并运行 Certbot 客户端:
sudo su -
yum -y install yum-utils
yum install certbot -y
yum install certbot-dns-google -y
certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
例如:
sudo su -
yum -y install yum-utils
yum install certbot -y
yum install certbot-dns-google -y
certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
- 您现在可以在此目录中找到已授权的证书和私钥文件:
cd /etc/letsencrypt/live/your_domain_name/
例如:
cd /etc/letsencrypt/live/apigee-hybrid-docs.net
ls
cert.pem chain.pem fullchain.pem privkey.pem README - 将文件
fullchain.pem
和privkey.pem
复制到本地机器。 - 将您的替换文件更新为指向证书和私钥。对于
hostAliases
,请使用您之前创建的 DNS 名称。例如:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: default hostAliases: ["apitest.apigee-hybrid-docs.net"] sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem" routingRules: - env: test mart: nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-runtime sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem" replicaCountMin: 1 replicaCountMax: 1 hostAlias: "mart.apigee-hybrid-docs.net"
- 应用更改:
如果您更改了
mart
配置,请应用更改:apigeectl apply -f your_overrides_file -c mart
如果您更改了
envs
配置,请应用更改:apigeectl apply -f your_overrides_file -c runtime
测试配置
部署和测试代理,如创建和部署新 API 代理中所述。