华为云 CCE Cluster API Provider 集群管理参考架构

举报
华为云架构中心 发表于 2026/09/10 14:11:18 2026/09/10
【摘要】 将 Cluster API 对象(Cluster、MachinePool)翻译为华为云 CCE API 调用

1. 用途和受众

1.1 预期用途

将 Cluster API 对象(Cluster、MachinePool)翻译为华为云 CCE API 调用,实现以下能力:

  • 创建 CCE 托管集群(控制面由华为云托管),支持 CCE Standard 与 CCE Turbo 两种集群类型
  • 通过 MachinePool 管理 CCE 节点池,修改 replicas 即可扩缩容
  • 通过 clusterctl get kubeconfig 获取工作集群的 kubeconfig
  • 兼容 clusterctl 全流程(init / describe / get kubeconfig / delete)
  • GitOps 就绪,通过 ArgoCD/Flux 从 Git 全流程驱动集群生命周期

使用场景:

  • 适用行业:金融、互联网、制造业等需要大规模管理 Kubernetes 集群的企业组织
  • 业务场景:多团队共享平台管理多个 CCE 集群;GitOps 驱动的基础设施即代码流水线;跨可用区高可用工作负载部署
  • 合规要求:IAM 最小权限原则,AK/SK 凭证仅通过 Secret/环境变量提供;CCE 访问策略可精细化到命名空间级权限控制
  • 部署规模:适用于管理 2-50+ 个 CCE 托管集群的中大型平台团队;单管理集群可管理多个工作负载集群

1.2 目标受众

平台工程师与 SRE 团队——通过 kubectl、clusterctl 或华为云 CloudShell 操作管理 Kubernetes 集群生命周期的运维人员。适用于希望以 Kubernetes 原生声明式方式管理华为云 CCE 集群的组织,特别是已熟悉 源参考 EKS + Cluster API 工作流的团队。

2. 参考架构概述

2.1 架构描述

CAPI CCE Provider 是面向华为云托管 Kubernetes 集群生命周期管理的基础设施 Provider 架构,旨在通过集成 Cluster API 合约、华为云 CCE/ECS/VPC/IAM 服务和 GitOps 工具链,加速华为云托管集群的声明式管理落地采纳。

架构类型:Cluster API Infrastructure Provider(Kubernetes 原生集群生命周期管理)
云平台:华为云 cn-north-4
对标项目:cluster-api-provider-aws (CAPA) / 源参考 EKS 托管模式
项目状态:incubating(PoC 已验证,CRD + 控制器 + 服务层 + webhook + 部署清单已就位)

架构分为四层:

层级 包含组件 作用 通俗比喻
运维/交付层(外部) 用户(kubectl·clusterctl·CloudShell)、GitHub Release、Public SWR 提供操作入口、发布物分发和容器镜像仓库 "工具箱 + 零件仓库 + 说明书货架"
管理集群层(CCE) cluster-api core、capi-cce Provider、cert-manager、webhook、Secrets 运行 CAPI 核心控制器和 Provider 控制器,翻译 CAPI 对象为华为云 API 调用 "总指挥部——接收指令、翻译并下发命令"
华为云基础设施层 IAM、VPC/子网、CCE 控制面 API、ECS、EIP/ELB 提供身份鉴权、网络隔离、托管集群控制面、工作节点和公网访问 "门禁 + 道路 + 代管车间 + 公网入口"
工作负载集群层(CCE) API Server、节点池 pool-0/1/2(AZ 4a/4b/4g) 实际运行业务应用的目标 Kubernetes 集群,跨多可用区部署 "生产线——真正干活的地方,分布在多个车间"

2.2 业务背景

项目 描述
业务问题 平台工程师和 SRE 团队需要用 Kubernetes 原生工具链以声明式方式管理华为云 CCE 集群,而非手动控制台操作;现有华为云集群管理缺乏对标 源参考 EKS 托管模式的标准化 CAPI Provider
期望的结果 通过 Cluster API 标准 CRD 声明式创建/扩缩容/删除 CCE 托管集群与节点池,支持 CCE Standard 与 Turbo 双模式,兼容 clusterctl 全流程,GitOps 就绪
主要用户 平台工程师、SRE 团队——通过 kubectl、clusterctl 或 CloudShell 操作管理集群的运维人员
关键制约因素 项目状态为 incubating(PoC 已验证);要求 IAM 用户具备 CCE 相关权限的 AK/SK;账户需有足够余额(CCE 集群与节点按需计费);目标区域需预存在 VPC 和子网;需一个 SSH 密钥对用于节点池
成功指标 空集群创建→Available、节点池绝对值扩缩容、kubeconfig 轮换、带清理的删除、公网 EIP 绑定、限流行为——均在真实华为云 CCE 账号上验证通过

2.3 架构优点

  • 声明式管理托管集群:CCE 控制面完全由华为云托管,Provider 只负责翻译与调谐,用户通过 YAML 声明期望状态即可,无需手动控制台操作
  • CCE Standard + CCE Turbo 双支持:两种集群类型都支持,默认推荐 Turbo(与 EKS 托管定位对齐),用户可按需选择
  • MachinePool ↔ 节点池直通:通过 MachinePool.spec.replicas 即可扩缩容节点池,托管节点池无需 bootstrap provider,对标 EKS 托管模式
  • 兼容 clusterctl 全流程:metadata.yaml + infrastructure-components.yaml 已发布为 GitHub Release v0.1.0,支持 clusterctl describe cluster / get kubeconfig / init / delete 全流程
  • GitOps 就绪:通过 ArgoCD/Flux 从 Git 全流程驱动集群创建、扩缩容和删除,实现基础设施即代码
  • CCE 访问策略(对标 EKS access entries):在控制面用声明式 spec.accessPolicies[] 将 IAM 用户/组/委托映射到 CCE 权限角色(ClusterAdmin/Admin/Edit/View),可限定到命名空间
  • 身份管理对标 CAPA:按集群 CCEClusterIdentity(AK/SK Secret 或 SecretKey 对象引用)与控制器默认身份,支持多集群独立凭证
  • 孤儿资源 GC:可选的定期清扫器删除 Cluster CR 已不存在的 CCE 集群,对标 CAPA ExternalResourceGC,防止资源泄漏
  • 真实云验证通过:云侧行为已在真实华为云 CCE 账号上端到端验证(空集群创建→Available、节点池扩缩容、kubeconfig 轮换、带清理的删除、公网 EIP 绑定、限流行为)

2.4 设计关注点

安全性 可靠性 可扩展性 运维效率
AK/SK 凭证仅通过 Secret/环境变量提供,禁止硬编码 限流/配额错误自动指数退避重试(APIGW.0308 429) MachinePool replicas 声明式扩缩容节点池 clusterctl 全流程支持,无需手动控制台操作
webhook 准入校验(6 个准入 webhook + TLS 证书) finalizer 保障删除顺序:节点池→集群→kubeconfig Secret 多可用区节点池部署(AZ 4a/4b/4g) GitOps 就绪,ArgoCD/Flux 全流程驱动
IAM 委托与最小权限原则 空集群创建幂等,可接管已有集群 CCE Standard/Turbo 双模式按需选择 孤儿资源 GC 定期清扫泄漏集群
CCE 访问策略精细化到命名空间级 kubeconfig 自动轮换 多集群独立凭证(CCEClusterIdentity) Prometheus 指标暴露控制器运行状态
效益 架构如何实现它 测量
声明式集群管理 通过 CAPI CRD(Cluster/MachinePool)声明期望状态,Provider 自动调谐 kubectl get ccemanagedcontrolplane 条件全部 True
零手动控制台操作 clusterctl init + apply YAML 全自动创建集群和节点池 集群 Available 且节点数 == replicas
GitOps 驱动 ArgoCD/Flux 从 Git 仓库同步 CAPI 资源 Git commit → 集群状态变更延迟 < 30s
跨可用区高可用 节点池跨 AZ 4a/4b/4g 部署 单 AZ 故障时工作负载自动迁移
成本可控 按需计费(billingMode: 0),空集群也可创建;可接管已有集群避免新建计费资源 集群删除后无 EIP/EVS/ELB 拖留
安全凭证隔离 每集群独立 <clusterName>-credentials Secret 凭证不跨集群共享,IAM 最小权限
限流自愈 控制器对 APIGW.0308(429)自动指数退避重试 连续创建大量集群时短暂限流后自动恢复

2.5 典型架构

2.6 流程描述

  1. 下载发布物:用户 → GitHub Release v0.1.0(下载 clusterctl.yaml 配置、组件清单和集群模板)
  2. 初始化管理集群:用户 → cluster-api core(通过 clusterctl init / kubectl 安装 CAPI 核心组件)
  3. 安装 Provider 组件:GitHub Release → cluster-api core(将 cert-manager、cce-provider 镜像部署到管理集群)
  4. 触发调谐:cluster-api core → capi-cce Provider(通过 infrastructureRef / controlPlaneRef 引用触发 Provider 控制器 reconcile)
  5. 签发 webhook 证书:cert-manager → webhook(自动签发准入 webhook 的 TLS 证书)
  6. IAM 鉴权:capi-cce Provider → IAM(SDK 以 AK/SK 访问密钥鉴权,获取委托凭证)
  7. 创建托管集群:capi-cce Provider → CCE 控制面 API(创建 CCE 托管集群、节点池、获取 kubeconfig)
  8. 读写凭证:capi-cce Provider → Secrets(读写 AK/SK 凭证 Secret 和 kubeconfig Secret)
  9. 创建工作节点:CCE 控制面 API → ECS(创建节点池中的 ECS 工作节点,如 c7.xlarge.2)
  10. 挂接网络:CCE 控制面 API → VPC/子网(将集群和节点挂接到用户提供的 VPC 和子网)
  11. 绑定公网访问:CCE 控制面 API → EIP/ELB(当开启 endpointAccess.public 时绑定公网访问端点)
  12. 拉取镜像:ECS → Public SWR(工作节点从公共 SWR 拉取 CAPI、cert-manager、cce-provider 镜像)
  13. kubeconfig 回写:CCE 控制面 API → Secrets(将工作集群 kubeconfig 写入 Secret 供用户获取)
  14. 获取 kubeconfig:用户 → Secrets(通过 clusterctl get kubeconfig 获取工作集群访问凭证)
  15. 访问工作负载:用户 → API Server(使用 kubeconfig 访问工作负载集群,kubectl get nodes 验证节点就绪)

2.7 云服务产品清单

分类 服务或产品 推荐配置
运维/交付层 SWR(容器镜像服务) 公共 SWR,免认证拉取;存放 CAPI 核心、cert-manager、cce-provider 镜像
管理集群层 CCE(云容器引擎) Turbo 集群,cn-north-4 区域;管理集群运行 CAPI 核心控制器和 Provider 控制器
管理集群层 cert-manager 自动签发 webhook TLS 证书,与 webhook 服务配套部署
华为云基础设施层 IAM(统一身份认证服务) IAM 用户 AK/SK 凭证,具备 CCE 集群/节点池读写权限;支持委托授权
华为云基础设施层 VPC(虚拟私有云) 用户预提供的 VPC 和子网;区分节点子网和 ENI 子网;容器/服务网段在同一 VPC 内唯一
华为云基础设施层 CCE 控制面 API Turbo 集群类型,billingMode: 0(按需计费);控制面由华为云托管
华为云基础设施层 ECS(弹性云服务器) c7.xlarge.2 规格,由 CCE 节点池管理;按节点计费,billingMode 随节点池配置
华为云基础设施层 EIP / ELB 仅当开启 endpointAccess.public 时绑定;EIP 提供公网 IP,ELB 负载均衡 API Server
工作负载集群层 CCE(云容器引擎) Turbo 集群,跨多可用区部署(AZ 4a/4b/4g);节点池 pool-0/1/2 分别对应不同 AZ

3. 参考链接

4. 使用限制

  • 参考架构非生产就绪:本文档为参考架构,项目状态为 incubating(PoC 已验证)。提供设计蓝图和最佳实践指导,不包含可直接部署的自动化脚本或完整配置。实际部署需根据组织具体需求进行定制化适配
  • 云平台版本要求:要求 clusterctl v1.14.x 与 CAPI 合约匹配;华为云部分服务可能需企业版账号或特定版本才能开通使用,建议在部署前确认所需服务的可用性
  • 服务白名单:部分高级服务(如 CCE Turbo)可能需提前申请白名单开通;IAM 用户需具备 CCE 集群/节点池相关权限的 AK/SK
  • 跨区域部署限制:当前验证在 cn-north-4 区域完成;跨区域部署时需考虑数据同步延迟和合规要求(如数据本地化),部分服务可能不支持跨区域联动
  • 推荐部署规模:适用于需要管理多个 CCE 托管集群的中大型组织;小型组织可能无需全栈部署。CCE API 限流为 10 次/分钟,连续大量创建集群时需注意退避重试
  • 组件替换风险:架构设计支持组件替换和新增,但替换已验证的组件(如 cert-manager、webhook)可能引入集成兼容性问题,需额外测试验证
  • 合规认证依赖:架构对标 源参考 EKS 托管模式和 CAPA 设计模式,但实际合规认证需组织自行完成认证流程,本架构不替代正式合规审计
  • 持续运维要求:架构需要持续的策略调优、版本升级和监控运营。kubeconfig 需定期轮换,孤儿资源 GC 需定期运行,Prometheus 指标需持续监控。非一次性部署即可永久生效

附录 A. 术语和缩略语

缩略语 全称 说明
CAPI Cluster API Kubernetes SIG 官方的集群生命周期管理框架,定义 Cluster/MachinePool 等标准 CRD
CCE Cloud Container Engine 云容器引擎,华为云托管的 Kubernetes 集群服务
CCE Standard — CCE 标准集群类型,控制面由华为云托管
CCE Turbo — CCE Turbo 集群类型,增强版托管集群,与 EKS 托管定位对齐
CAPA cluster-api-provider-aws 华为云的 Cluster API Provider,本项目的对标参考实现
CRD Custom Resource Definition Kubernetes 自定义资源定义
MachinePool — CAPI 标准 CRD,代表一组工作节点(对应 CCE 节点池)
clusterctl — Cluster API 官方命令行工具,支持 init/describe/get kubeconfig/delete 全流程
IAM Identity and Access Management 统一身份认证服务,管理 AK/SK 和委托授权
AK/SK Access Key / Secret Key IAM 用户的访问密钥对,用于 API 鉴权
SWR Software Repository 容器镜像服务,存储和分发容器镜像
VPC Virtual Private Cloud 虚拟私有云,提供隔离的网络环境
EIP Elastic IP 弹性公网 IP,提供公网访问能力
ELB Elastic Load Balance 弹性负载均衡,分发流量到多个节点
ECS Elastic Cloud Server 弹性云服务器,CCE 节点池管理的工作节点
GitOps — 通过 Git 仓库驱动基础设施和应用部署的运维模式,常用工具 ArgoCD/Flux
finalizer — Kubernetes 控制器模式,保障资源删除顺序的清理钩子
reconcile — 控制器调谐循环,将实际状态向期望状态收敛的过程
webhook — Kubernetes 准入 webhook,对资源变更进行校验和默认值填充
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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