CCE 集群根证书更新小技巧

举报
Jack20 发表于 2025/09/29 14:44:57 2025/09/29
【摘要】 华为云 CCE 根证书与自建 Kubernetes 集群证书更新差异华为云容器集群引擎(CCE)的根证书更新机制与自建 Kubernetes 集群存在显著差异。根据华为云官方文档,CCE 集群的根证书由系统自动维护且不会过期,用户无法直接手动更新。 一、根证书的自动维护机制证书生命周期管理CCE 集群的根证书是 Kubernetes 认证体系的基础,由华为云统一管理。系统会定期自动更新证书...

华为云 CCE 根证书与自建 Kubernetes 集群证书更新差异

华为云容器集群引擎(CCE)的根证书更新机制与自建 Kubernetes 集群存在显著差异。根据华为云官方文档,CCE 集群的根证书由系统自动维护且不会过期,用户无法直接手动更新。

一、根证书的自动维护机制

  1. 证书生命周期管理

    CCE 集群的根证书是 Kubernetes 认证体系的基础,由华为云统一管理。系统会定期自动更新证书,确保安全性和兼容性,无需用户干预。例如,华为云在 2025 年 1 月进行了 TrustAsia 品牌根证书切换,新签发的证书会自动使用更新后的根证书,而旧证书仍可正常使用。

  2. 证书不可见性

    用户无法通过 CCE 控制台或 API 获取集群根证书的具体内容,也无法直接修改其配置。这是华为云为保障集群安全采取的标准化措施。

二、自建 CA 证书的特殊场景

在 CCE 集群中使用自建 CA 证书(例如通过 TLS 双向认证实现服务间通信),需手动管理证书更新:

  1. 替换 CA 证书
  • 步骤 1:在 Kubernetes 集群中,根证书通常存储在 kube-system 命名空间的 cluster-ca-cert Secret 中。通过以下命令备份旧证书:
kubectl get secret cluster-ca-cert -n kube-system -o jsonpath='{.data.tls\\.crt}' | base64 -d > old-ca.crt
  • 步骤 2:生成新的 CA 证书和私钥,并将其转换为 Base64 编码:
openssl req -x509 -newkey rsa:2048 -keyout ca.key -out ca.crt -days 365 -nodes

echo \$(base64 -w 0 ca.crt) > ca.crt.b64

echo \$(base64 -w 0 ca.key) > ca.key.b64
  • 步骤 3:使用新证书更新 Secret:
kubectl patch secret cluster-ca-cert -n kube-system \
  --type='json' \
  -p='[{"op": "replace", "path": "/data/tls.crt", "value": "$(cat ca.crt.b64)"}]'
kubectl patch secret cluster-ca-cert -n kube-system \
  --type='json' \
  -p='[{"op": "replace", "path": "/data/tls.key", "value": "$(cat ca.key.b64)"}]'
  • 步骤 4:重启依赖该证书的组件(如 kube-apiserver、kubelet)以生效。
  1. 节点证书更新

    若自建 CA 用于节点认证,需逐一更新节点证书:

  • 步骤 1:在节点上删除旧证书:
rm -f /etc/kubernetes/pki/ca.crt
  • 步骤 2:将新 CA 证书复制到节点的信任存储目录(如 /etc/pki/ca-trust/source/anchors/),并执行更新命令:
update-ca-trust extract
  • 步骤 3:重启 kubelet 服务:
systemctl restart kubelet

三、应用证书的更新方法

若用户需更新集群中应用的 SSL/TLS 证书(如 Ingress 证书),可通过以下方式操作:

  1. 通过 CCE 控制台更新
  • 步骤 1:在 CCE 控制台的 “密钥管理” 页面,创建新的 IngressTLS 类型 Secret,上传证书文件(.crt)和私钥(.key)。

  • 步骤 2:编辑 Ingress 资源,将 tls.secretName 字段指向新创建的 Secret。

  • 步骤 3:华为云负载均衡(ELB)会自动同步 CCE 的证书,无需额外配置。

  1. 通过 kubectl 命令更新
  • 步骤 1:直接修改现有 Secret 的证书内容:
kubectl edit secret ingress-tls-secret -n namespace
  • 步骤 2:批量更新多个 Ingress 的证书引用(适用于泛域名场景):
kubectl get ingress -n namespace -o json | jq '.items\[].spec.tls\[0].secretName = "new-secret-name"' | kubectl apply -f -

四、关键注意一下下

  1. 权限要求

    更新自建 CA 证书需具备 cce:cluster:update 权限,通常由 Tenant AdministratorCCE Administrator 角色提供。应用证书更新需对目标命名空间有 edit 权限。

  2. 兼容性验证

  • 若使用自建 CA,需确保集群所有组件(如 kubectl、CoreDNS、CNI 插件)信任新的根证书。

  • 建议在非生产环境测试证书更新流程,避免影响业务连续性。

  1. 证书清理

    节点证书文件过多(>1000 个)可能导致升级异常。可通过以下命令清理残留证书:

cd /opt/cloud/cce/kubernetes/kubelet/pki/

find -maxdepth 1 -type f -name 'kubelet-server-\*.pem' -delete

rm -f ./kubelet-server-current.pem

清理后需重启 kubelet 服务。

五、总结一下下

  • 系统根证书:由华为云自动维护,用户无需干预,也无法手动更新。

  • 自建 CA 证书:需通过 Kubernetes Secret 手动替换,并更新节点信任存储。

  • 应用证书:通过 CCE 控制台或 kubectl 更新 Secret,并关联到 Ingress 资源。

建议优先使用华为云的自动管理的根证书,以降低运维复杂度。对于自建 CA 场景,需严格遵循证书轮换流程,并确保所有组件的兼容性。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。