本主題僅供參考。說明如何從憑證授權單位 (CA) Let's Encrypt 取得 TLS 憑證。這些步驟主要提供做為範例,供您在沒有其他方法取得由 CA 授權的憑證/金鑰組時參考。本範例說明如何使用 Let's Encrypt CA、Certbot 用戶端和 Google Cloud Platform 的 Cloud DNS 產生憑證。
可使用這些證書的地方
您必須為叢集外部公開的 Runtime 輸入閘道提供 TLS 憑證。
另請參閱「外部連線」。需求條件
您需要透過網域名稱註冊商取得網域名稱。您可以透過 Google Domains 或您選擇的其他網域註冊商註冊網域名稱。
設定 Cloud DNS
如要取得授權的 TLS 憑證,您必須擁有合格的網域名稱。以下步驟說明如何使用 Google Cloud DNS 取得網域名稱,以及管理您的網域伺服器。- 開啟 Google Cloud 控制台並登入帳戶。
- 選取已安裝 Apigee hybrid 的專案。
- 如果尚未啟用,請啟用 Cloud DNS API。請參閱啟用 API。
- 建立靜態 IP 位址:
- 如果您使用的是 GKE,請按照「
設定靜態外部 IP 位址」中的操作說明建立靜態 IP 位址,讓外部程序可用來與混合式執行階段 ingress 通訊。您可以為地址命名,名稱不限,例如
apigee-hybrid-runtime
。完成後,您會在下一個步驟中使用叢集設定中的 IP 號碼。例如:34.66.75.196
- 如果您使用 Google Distributed Cloud,請按照「 規劃 IP 位址」和「建立使用者叢集」中的操作說明建立靜態 IP 位址。
- 如果您使用的是 GKE,請按照「
設定靜態外部 IP 位址」中的操作說明建立靜態 IP 位址,讓外部程序可用來與混合式執行階段 ingress 通訊。您可以為地址命名,名稱不限,例如
- 取得您剛剛保留的外部 IP。
- 為 Istio 執行階段的 ingress 端點建立記錄集。這是用於向混合型閘道發出 API 呼叫的位址。輸入上一個步驟取得的外部 IP,並在網域名稱前方加上前綴,例如
example-endpoint
。如需操作說明,請參閱「建立新記錄」。- 建立代管公開區域。如需操作說明,請參閱「 建立受管理的公開區域」。
- 使用下列方法建立新的記錄組合:
- DNS 名稱:端點外部 API 呼叫會與之通訊的名稱,例如
api-services
或example-endpoint
- 資源記錄類型:A
- TTL 和 TTL 單位:接受預設值
- IP 位址:您建立的靜態 IP。
- DNS 名稱:端點外部 API 呼叫會與之通訊的名稱,例如
- 「區域詳細資料」檢視畫面會列出四個 DNS 伺服器,做為新區域的 NS 資料。複製 DNS 記錄資料,如以下範例所示:
- 返回註冊商 (例如 Google Domains) 的網域頁面。
- 選取您的網域。
- 選取「DNS」DNS。
- 在「名稱伺服器」部分中,按一下「編輯」。
輸入從 Network Services Cloud DNS 頁面複製的網域名稱伺服器。例如:
這樣一來,Google Cloud DNS 就會管理網域的 DNS 記錄。
在 VM 上安裝 Certbot
您已設定 Cloud DNS 來管理網域伺服器,現在將在 Cloud VM 上安裝 Certbot 用戶端,並使用 dns_google 外掛程式。您可以透過用戶端,從 Let's Encrypt 端點取得網域的授權憑證。
- 開啟 Google Cloud 控制台,然後使用您在步驟 1:建立 Google Cloud 帳戶中建立的帳戶登入。
- 選取您在步驟 2:建立 Google Cloud 專案中建立的專案。
- 依序選取「IAM 與管理」>「服務帳戶」。
「Service accounts」檢視畫面會列出專案的服務帳戶。
- 如要建立新的服務帳戶,請按一下檢視畫面頂端的「+Create Service Account」。
畫面上會顯示「Service account details」檢視畫面。
- 在「Service account name」欄位中輸入服務帳戶的名稱。
您可以選擇在「服務帳戶說明」欄位中新增說明。說明可提醒您特定服務帳戶的用途。
- 按一下 [建立]。
Google Cloud 會建立新的服務帳戶,並顯示「服務帳戶權限」檢視畫面。使用這個檢視畫面為新服務帳戶指派角色。
- 按一下「請選擇角色」下拉式清單。
- 選取「專案擁有者」角色。
- 按一下「繼續」。
- 按一下 [完成]。
- 在 Google Cloud 控制台中,依序選取「Compute Engine」>「VM 執行個體」。
- 建立名為 certmanager 的 VM 執行個體。
- 在「Boot Disk」(開機磁碟) 部分下方,為 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.key README - 將
fullchain.pem
和privkey.key
檔案複製到本機電腦。 - 選用:使用憑證/金鑰組建立 Kubernetes 密鑰。請參閱「在 Istio ingress 上設定 TLS 和 mTLS」一文中的「選項 2:Kubernetes 密鑰」一節中的操作說明。
- 更新覆寫檔案,指向憑證和私密金鑰。
例如:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.key"
或者,如果使用 Kubernetes 密鑰:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group tlsMode: SIMPLE # Note: SIMPLE is the default, MUTUAL is also an available value. sslSecret: myorg-test-policy-secret" ...
- 套用
envs
設定的變更:針對要更新的每個環境執行 helm upgrade 。helm upgrade ENV_NAME apigee-env/ \ --namespace apigee \ --set env=ENV_NAME \ --atomic \ -f OVERRIDES_FILE.yaml
測試設定
部署及測試 Proxy。請參閱「建構第一個 API Proxy 總覽」。