Azure Kubernetes Service (AKS) 中的自訂憑證授權單位 (CA) (預覽)
本文說明如何建立自訂 CA,並將其套用至您的 AKS 叢集。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請建立免費帳戶。
- 已安裝 Azure CLI (2.43.0 版或更新版本)。
- base64 編碼的憑證字串或具有憑證的文字檔。
限制
- Windows 節點集區目前不支援此功能。
安裝 aks-preview
Azure CLI 延伸模組
重要
AKS 預覽功能可透過自助服務,以加入方式使用。 預覽會以「現狀」和「可供使用時」提供,其其不受服務等級協定和有限瑕疵擔保所保護。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:
使用
az extension add
命令,來安裝 aks-preview 延伸模組。az extension add --name aks-preview
使用
az extension update
命令,以更新為延伸模組最新版。az extension update --name aks-preview
註冊 CustomCATrustPreview
功能旗標
使用
az feature register
命令註冊CustomCATrustPreview
功能旗標。az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
狀態需要幾分鐘的時間才會顯示「已註冊」。
使用
az feature show
命令確認註冊狀態。az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
當狀態顯示為 [已註冊] 時,請使用
az provider register
命令來重新整理 Microsoft.ContainerService 資源提供者的註冊。az provider register --namespace Microsoft.ContainerService
AKS 節點集區上的自訂 CA 安裝
在 AKS 節點集區上安裝 CA
如果您的環境需要將自訂 CA 新增至節點信任存放區,才能正確佈建,您必須在
az aks create
或az aks update
作業期間傳遞包含最多 10 個空白行分隔憑證的文字檔。 範例文字檔:-----BEGIN CERTIFICATE----- cert1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- cert2 -----END CERTIFICATE-----
在節點集區建立期間安裝 CA
使用
az aks create
命令在節點集區建立期間安裝 CA,並指定 參數的--custom-ca-trust-certificates
文字檔。az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
節點集區開機期間可用性的 CA 輪替
使用
az aks update
命令在開機期間更新傳遞至叢集的 CA,並為--custom-ca-trust-certificates
參數指定文字檔。az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
注意
此作業會觸發模型更新,確保新節點具有正確佈建所需的最新 CA。 AKS 會建立其他節點、清空現有的節點、將其刪除,並且用已安裝新 CA 集的節點取代它們。
在建立節點集區之後安裝 CA
如果您的環境可以在沒有自訂 CA 的情況下成功佈建,您可以在 kube-system
命名空間中部署秘密來提供 CA。 這種方法允許憑證輪替,而不需要節點重新建立。
使用欄位中的base64編碼憑證字串
data
,建立 Kubernetes 秘密 YAML 指令清單。apiVersion: v1 kind: Secret metadata: name: custom-ca-trust-secret namespace: kube-system type: Opaque data: ca1.crt: | {base64EncodedCertStringHere} ca2.crt: | {anotherBase64EncodedCertStringHere}
此密碼中的資料會用來更新所有節點上的 CA。 請確定秘密名為
custom-ca-trust-secret
,並在kube-system
命名空間中建立。 在kube-system
命名空間中使用秘密安裝 CA,可讓您進行 CA 輪替,而不需要節點重新建立。 若要更新或移除 CA,可以編輯並套用 YAML 資訊清單。 叢集會輪詢變更,並據以更新節點。 套用變更可能需要幾分鐘的時間。注意
可能需要在節點上重新啟動容器,才能正確挑選 CA。 如果 CA 似乎未正確新增至節點的信任存放區,您可以使用節點殼層中的下列命令來觸發重新啟動:
systemctl restart containerd
設定新的 AKS 叢集以使用自訂 CA
使用
az aks create
命令搭配--enable-custom-ca-trust
參數,設定新的 AKS 叢集以使用自訂 CA。az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --generate-ssh-keys
設定新的 AKS 叢集,以在節點開機之前,先使用已安裝 CA 的自訂 CA
將新的 AKS 叢集設定為在節點開機之前,使用
--enable-custom-ca-trust
和--custom-ca-trust-certificates
參數的az aks create
命令,使用已安裝 CA 的自訂 CA。az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
將現有的 AKS 叢集設定為在節點開機前先安裝自訂 CA
將現有的 AKS 叢集設定為將自訂 CA 新增至節點的信任存放區,再搭配
--custom-ca-trust-certificates
參數使用az aks update
命令開機。az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
設定新的節點集區以使用自訂 CA
使用
az aks nodepool add
命令搭配--enable-custom-ca-trust
參數,設定新的節點集區以使用自訂 CA。az aks nodepool add \ --cluster-name <cluster-name> \ --resource-group <resource-group-name> \ --name <node-pool-name> \ --enable-custom-ca-trust \ --os-type Linux
如果沒有其他已啟用功能的節點集區存在,叢集必須協調其設定,變更才會生效。 此作業會在 AKS 的協調循環中自動發生。 在作業之前,精靈集和 Pod 不會出現在叢集上。 您可以使用
az aks update
命令來觸發立即協調作業。 精靈集和 Pod 會在更新完成之後出現。
設定現有的節點集區以使用自訂 CA
使用
az aks nodepool update
命令搭配--enable-custom-ca-trust
參數,設定現有的節點集區以使用自訂 CA。az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --enable-custom-ca-trust
如果沒有其他已啟用功能的節點集區存在,叢集必須協調其設定,變更才會生效。 此作業會在 AKS 的協調循環中自動發生。 在作業之前,精靈集和 Pod 不會出現在叢集上。 您可以使用
az aks update
命令來觸發立即協調作業。 精靈集和 Pod 會在更新完成之後出現。
停用節點集區上的自定義 CA
使用
az aks nodepool update
命令搭配--disable-custom-ca-trust
參數,停用現有節點集區上的自定義 CA 功能。az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --disable-custom-ca-trust
疑難排解
已啟用功能,並新增具有 CA 的秘密,但由於未知授權單位簽署的 X.509 憑證錯誤而作業失敗
祕密中傳遞的憑證格式不正確
AKS 要求傳入使用者建立秘密的憑證格式正確,並以 base64 編碼。 請確定您傳遞的 CA 已正確採用 base64 編碼,且具 CA 的檔案沒有 CRLF 換行符。
傳遞至 --custom-ca-trust-certificates
的憑證不應該以 base64 編碼。
containerd 尚未挑選新的憑證
從節點的殼層中,執行 systemctl restart containerd
。 容器重新啟動之後,容器運行時間會正確挑選新的憑證。
下一步
如需 AKS 安全性最佳做法的詳細資訊,請參閱在 Azure Kubernetes Service (AKS) 中叢集安全性和升級的最佳做法。