自定义证书颁发机构(CA)允许向节点的信任存储添加多达 10 个 base64 编码的证书。 当节点上需要 CA(例如连接到专用注册表时)时,通常需要此功能。
本文介绍了如何创建自定义 CA 并将其应用于 AKS 群集。
- Azure 订阅。 如果没有 Azure 订阅,请创建一个试用帐户。
- 需要安装并配置 Azure CLI 2.72.0 或更高版本。 若要查找 CLI 版本,请运行
az --version
。 如果需要进行安装或升级,请参阅安装 Azure CLI。 - 一个 base64 编码的证书字符串或一个包含证书的文本文件。
- 不支持 Windows 节点池。
- 在同一个群集中,安装不同的认证中心(CA)是不被支持的。
创建包含 CA 的文件。
创建包含最多 10 个空白行分隔证书的文本文件。 将此文件传递到群集时,这些证书将安装在节点的信任存储中。
示例文本文件:
-----BEGIN CERTIFICATE----- cert1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- cert2 -----END CERTIFICATE-----
在继续下一步之前,请确保文本文件中没有空格。 如果未删除,则这些空格将导致下一步中出现错误。
使用
az aks create
或az aks update
将证书传递给群集。 作完成后,证书将安装在节点的信任存储中。使用
az aks create
命令并为--custom-ca-trust-certificates
参数指定文本文件,在创建群集期间安装 CA。az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --custom-ca-trust-certificates FileWithCAs \ --generate-ssh-keys
使用
az aks update
命令并为--custom-ca-trust-certificates
参数指定文本文件,在群集更新期间安装 CA。az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates <path-to-ca-file>
注意
此作会触发模型更新,以确保所有现有节点都安装了相同的 CA,以便进行正确的预配。 AKS 创建新的节点、清空现有节点、删除现有节点,并将其替换为安装了新 CA 集的节点。
检查是否已安装 CA。
使用 az aks show
命令检查 CA 已安装情况。
az aks show -g <resource-group-name> -n <cluster-name> | grep securityProfile -A 4
securityProfile 输出应包括自定义 CA 信任证书。
"securityProfile": {
"azureKeyVaultKms": null,
"customCaTrustCertificates": [
"values"
如果具有证书的文件格式不正确,则向群集添加证书可能会导致错误。
failed to decode one of SecurityProfile.CustomCATrustCertificates to PEM after base64 decoding
如果您遇到此错误,应检查输入文件中是否有多余的新行、空格或数据,确保文件中只有正确格式的证书,如示例文件所示。
AKS 要求传入用户创建的机密中的证书采用正确的格式并经过适当的 base64 编码。 确保传递的 CA 已经过适当的 base64 编码,并且包含 CA 的文件没有 CRLF 换行符。
传递给 --custom-ca-trust-certificates
的证书不应进行 base64 编码。
在节点的 shell 中,运行 systemctl restart containerd
。 一旦 containerd 重启,容器运行时就会选取新证书。
有关 AKS 安全性最佳做法的详细信息,请参阅 Azure Kubernetes 服务 (AKS) 中的群集安全性和升级的最佳做法。