应用的多集群分发面临很多挑战,例如维护多个集群的KubeConfig入口不唯一,同应用在不同集群的差异化配置,缺少统一的视图查看应用在多集群的部署情况,同应用同时部署多个集群风险高等,您可以通过ACK One多集群管理的应用分发来解决以上问题。本文介绍ACK One多集群管理应用分发的原理和功能。

背景信息

ACK One多集群管理主控实例基于成熟的开源社区项目KubeVelaOpen Cluster Management构建,提供了统一标准的Kubernetes API接口,实现了Kubernetes原生资源在多集群间的分发,支持不同集群部署的差异化配置,支持基于工作流的集群间灰度发布。

应用分发原理

基于角色扮演的应用分发

用户(User A)在创建或修改应用后,主控实例会将应用所引用的资源下发到关联集群中,此时应用分发会扮演应用创建者或修改者的身份(User A),向关联集群发起资源创建或修改请求,在关联集群上看到的应用相关资源的创建者或修改者为用户User A。满足关联集群独立审计要求,并提升多集群安全水位。基于角色扮演的应用分发原理如下图所示。

实现阶段

ACK One多集群管理主控实例的应用分发功能实现包含以下两个阶段:

DIS
  1. 在主控实例中创建应用相关的Kubernetes原生资源,由第二阶段定义分发规则,分发到关联集群。目前应用分发支持的资源如下:
    说明 主控实例不会监视资源的创建,所以不会触发相应的资源创建,例如Deployment不会触发Pod的创建、Service不会触发Endpoint的创建。
    Kind apiVersion
    Deployment apps/v1
    Service v1
    Ingress networking.k8s.io/v1
    ConfigMap v1
    Secret v1
    StatefulSet apps/v1
    PersistentVolumeClaim v1
    ServiceExport multicluster.x-k8s.io/v1alpha1
    ServiceImport multicluster.x-k8s.io/v1alpha1
    HorizontalPodAutoscaler autoscaling/v1
  2. 在主控实例上创建分发规则,包括引用第一阶段创建的Kubernetes资源、选择分发目标集群、差异化配置、工作流和实现应用的多集群分发。

功能介绍

功能 描述 参考文档
应用复制分发 您可以通过访问ACK One主控实例,向多个集群下发Deployment、Service和Ingress等Kubernetes原生资源,包括创建应用相关的Kubernetes原生资源、创建应用部署目标、创建应用等,实现多集群复制部署和查看应用状态。 应用复制分发
应用分发差异化配置 您可以在ACK One多集群管理的主控实例上进行多集群应用分发差异化配置,实现同一个应用在不同目标关联集群上的配置不同,例如副本数量、镜像、环境变量不同。 应用分发差异化配置
应用集群间灰度分发 在应用的多集群分发部署中,您可以使用ACK One应用发布的工作流功能,实现应用在集群间分批发布。例如您可以将应用先发布到测试集群,经验证后再发布到生产集群,用来控制发布风险。 应用集群间灰度分发
选择分发目标集群 您通过访问ACK One主控实例使用应用分发功能时,需要定义应用分发的目标集群。ACK One支持通过关联集群名称和给关联集群打标的方式选择目标集群。 选择分发目标集群
差异化规则 您可以在ACK One主控实例上进行多集群应用分发差异化配置,实现同一个应用在不同目标集群上的配置不同。 差异化规则
应用容器水平伸缩(HPA) 您可以在ACK One应用分发中使用容器水平伸缩(HPA)控制关联集群的应用副本数。 应用容器水平伸缩(HPA)