最近更新时间:2023.11.15 14:00:04
首次发布时间:2023.11.06 21:28:01
分布式云原生平台支持 Helm 应用的多集群分发功能,本文为您介绍两种常用的 Helm 应用多集群分发方式。
说明
Helm Chart 定义与安装的操作与单集群场景并无差异,为了实现多集群场景分发,需要进行以下配置:
优势 | 劣势 |
---|---|
|
|
已经创建联邦集群,并已添加成员集群构建可调度资源池。
已经获取联邦集群主控实例的 KubeConfig,且对应主控实例的 RBAC 权限可以创建 Chart 模板中的资源。
已安装 Helm 客户端(以 Helm 3 为例),可通过 Helm install、uninstall、upgrade 等命令与联邦主控实例 API Server 交互,进行 Helm 应用资源管理。
可在全新的 Chart 模板中定义以下资源,或者基于现有的针对单集群的 Chart 模板进行调整(增加部署策略、差异化策略资源)。
templates 中资源包括: deployment、configmap、Ingress、service、propagationpolicy、overridepolicy
./ ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── configmap.yaml │ ├── ingress.yaml │ ├── service.yaml │ ├── propagationpolicy.yaml │ ├── overridepolicy.yaml │ ├── _helpers.tpl │ ├── NOTES.txt └── values.yaml
场景一:Chart 模板中资源引用新建分发策略
Chart 模板中 需要 定义部署策略和差异化策略,待分发的资源(例如:Deployment)资源定义中需要增加“通过 label 指定分发策略名称”。
场景二:Chart 模板中资源引用已有分发策略
Chart 模板中 无需 定义部署策略和差异化策略,待分发的资源(例如:Deployment)资源定义中需要增加“通过 label 指定分发策略名称”。
说明
建议使用跟随调度能力提升分发体验:
对于 ConfigMap、Secret、ServiceAccount、Service、Ingress 等资源,虽然可以单独指定部署策略,但为了配置简单和运维方便,建议使用跟随调度机制进行配置。
在分布式云原生平台的联邦主控实例详情页,获取该用户对应权限的 KubeConfig。
Helm 客户端使用以上配置的 Chart 模板以及联邦主控实例的 KubeConfig 进行 Chart 安装(Helm Install),需要说明可支持 value.yaml 安装参数覆盖。
针对通过 Helm 应用分发到多个成员集群中的资源,可在成员集群中对该资源进行修改或删除操作,平台会自动安装 Chart 模板中的定义,进行资源覆盖/恢复。
对安装 Helm Release 实例进行 Upgrade、Rollback、Uninstall 操作,实现联邦主控实例中 Helm 应用的升级、回滚、卸载,同步更新成员集群中的资源。
示例如下:
成员集群中安装 flux 进行实际的 Helm 应用部署。
联邦集群中安装 flux 的 CRD 资源,包括:HelmRepository、HelmRelease。
通过联邦 flux 资源关联部署策略,实现多集群 Helm 应用分发。
成员集群安装 flux,详细介绍参见:官方文档。
参考以下文件中的 flux CRD 定义,在联邦集群中添加并开启 flux CRD 资源多集群分发能力。
apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: bitnami spec: interval: 1m url: https://charts.bitnami.com/bitnami --- apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: my-nginx spec: interval: 5m chart: spec: chart: nginx version: 15.3.0 sourceRef: kind: HelmRepository name: bitnami
创建资源并关联部署策略完成后,可以看到联邦 flux 资源已经分发,成员集群中查看 flux 资源已分发,Helm 应用也已部署。