ACK ONE(Open Nexus Everywhere)注册集群帮助您将云下Kubernetes集群接入云端,快速搭建混合云集群,可以将本地数据中心Kubernetes集群或其他云厂商Kubernetes集群接入阿里云容器服务管理平台统一管理的集群形态。本文介绍注册集群支持的功能和关联的云资源。

为什么需要注册的集群

功能图
在日常运维过程中,您可能同时运维着云上ACK集群、本地数据中心自建Kubernetes集群甚至其他云厂商的容器集群,在多云或混合云多集群的云架构下,如果您有以下需求,可以考虑使用阿里云注册集群。
  • 通过阿里云容器服务控制台统一管理云上ACK集群和本地数据中心自建Kubernetes集群,包括一致的运维体验和安全治理能力。例如,使用容器服务控制台统一管理集群和应用,统一的日志、监控及告警体系,统一的阿里云账号及RAM用户的授权管理等。
  • 扩展本地数据中心自建Kubernetes集群使用云上计算资源进行弹性扩缩容。例如,手动或自动扩缩容云上ECS或神龙裸金属,并添加为本地数据中心自建Kubernetes集群的云上计算节点等。
  • 使用阿里云容器服务应用中心功能统一管理云上云下Kubernetes集群中的应用生命周期和GitOps交付,需要先将云下Kubernetes集群接入到注册集群,成为与云上ACK集群处于同一控制平面的容器集群。
  • 使用阿里云服务网格产品对云上云下Kubernetes集群进行统一的服务治理,需要先将云下Kubernetes集群接入到注册集群,成为与云上ACK集群处于同一控制平面的容器集群。

安全特性

在注册外部Kubernetes集群时,ACK Register Agent组件提供了多集群的管理能力,同时提供了在外部集群上应用的部署和生命周期管理能力。

组件说明

组件名称 组件功能
ACK Console ACK容器服务管理控制台。
ACK Register Agent ACK集群注册Agent,以Deployment形式部署在指定外部集群中,用于接收ACK集群注册代理组件的请求并转发给对应的K8s API Server,同时接收K8s API Server的返回并发送给ACK集群注册代理组件。
ACK Stub ACK集群注册代理组件,部署在容器服务管控侧,每一个注册外部集群都会部署一个与之对应的Stub代理组件,用于代理转发ACK管控组件和指定外部集群中注册Agent组件之间的请求。
K8s API Server 注册集群中运行的K8s API Server组件。

连接架构

通过ACK Stub和ACK Register Agent组件,可以将您在ACK控制台上的请求下发到指定的外部集群API Server,其中Register Agent组件会以Deployment双实例的形式部署在指定的外部集群中,并且和ACK管控平台中的Stub代理组件连通。Agent组件通过下图中的流程将请求发送到您指定的API Server。连接架构

当用户完成外部集群注册流程后,ACK Register Agent组件会完成部署并与ACK管控侧建立TLS 1.2的长链接。对于已授权用户或授权后的ACK管控服务,ACK Console组件通过链路向指定的外部集群发送请求,请求会首先发送到Stub代理组件,然后请求被转发到对应的Agent,并最终由Agent组件将请求发送到外部API Server。API Server在收到请求后,会经过认证(Authentication)、鉴权(Authorization)和准入控制(Admission Control)流程,在完成审计后返回请求。请求返回的路径同样经由Agent,Stub代理组件并最终返回给ACK管控服务。所有请求在链路上都经过了认证鉴权流程,保证了集群访问的安全可控。

组件访问安全

架构所有组件之间的访问均需要经过认证授权,所有访问目标都是经过安全校验后的合法对象,保证数据只在可信的对象之间传输。组件访问认证架构

在认证上,访问组件之间通过RAM账号的登录认证和组件之间的双向TLS认证,保证所有访问链接数据在传输过程中的TLS加密。而鉴权采用基于阿里云RAM服务的访问控制和x509证书校验中的白名单机制。

  • 请求链路安全

    在多云混合云管理请求链路上的所有访问凭证均包含了请求者的身份信息,包括用户使用阿里云容器服务下发的访问凭证和容器服务内部组件访问凭证,以保证所有发送到外部集群API Server的请求都能够经过鉴权和审计处理。

  • 终端用户请求链路
    所有终端用户的请求都需要使用ACK管控签发的带有用户身份的集群访问凭证,对于外部集群的访问流程如下图所示。终端用户请求链路

    在阿里云平台侧,集群的管理人员可以通过RAM访问控制策略配置指定终端用户对外部集群的控制权限。经过RAM鉴权的用户可以在容器服务控制台获取指定外部集群的访问凭证,该访问凭证会作为认证凭据在Stub和Agent组件处认证,且组件间所有的访问链路都经过TLS加密。在Agent组件完成认证后,会将用户访问凭证中的身份信息作为请求目标API Server的身份扮演header,在API Server中会根据接收到的用户身份完成认证,鉴权和请求审计等操作。

  • 服务组件请求链路
    ACK和ASM服务内部组件访问外部API Server的请求链路与终端用户访问链路类似,首先管控组件会使用集群注册时下发的Agent组件访问证书发起请求,在Stub和Agent组件完成请求认证后,经由Agent以身份扮演的方式向目标API Server作7层代理转发,最终在API Server完成请求的RBAC鉴权和审计。整个请求链路均经过了加密保证数据传输的安全性。服务组件请求链路

集群内部安全

Agent组件请求在目标集群API Server中的请求流程如下图所示。Agent请求
在集群API Server内部,首先会在认证阶段校验请求凭据的合法性。
  • 如果请求凭据不是一个合法的凭据,则API Server会直接返回401的认证失败错误。
  • 如果认证通过,API Server会查看请求是否有指定格式的身份扮演header,如果存在的话会以指定的身份扮演身份去进行下一段的鉴权流程。
在鉴权流程中,API Server会判断传入的用户身份是否有对目标资源的指定操作权限。
  • 如果鉴权失败,则API Server返回403的鉴权失败错误。
  • 如果鉴权成功,则经过审计流程后返回请求结果。

Agent组件是Go语言编写的代理转发和集群注册组件,代码的编写和发布均经过了阿里云相关团队的安全审核。与此同时,指定集群的管理员也需要根据Kubernetes相关的最佳安全实践规范保护集群节点的安全性,通过对基础设施和应用相关的安全配置保障Agent组件和集群的安全性。

注册集群与ACK集群的能力对比

分类 能力 ACK集群 注册集群
集群访问 使用kubectl和kubeconfig文件访问集群 ✔️ ✔️
使用控制台访问 ✔️ ✔️
K8s核心概念 管理名空间 ✔️ ✔️
管理Pod ✔️ ✔️
管理工作负载 ✔️ ✔️
管理持久化卷和Storage Classes ✔️

支持云盘、本地盘、NAS、CPFS、OSS。

✔️

支持的存储类型取决于注册集群的实际环境。

管理Service ✔️ ✔️
管理Ingress ✔️ ✔️
管理网络策略 ✔️

支持Terway网络模式。

✔️

取决于注册集群的实际环境。

管理Configmap ✔️ ✔️
管理Secret ✔️ ✔️
管理RBAC ✔️ ✔️
管理Pod Security Policy ✔️ ✔️
管理Resource Quotas ✔️ ✔️
管理CRD ✔️ ✔️
支持水平弹性伸缩 (HPA) ✔️ ✔️
支持Pod RuntimeClass ✔️

仅支持阿里云安全沙箱容器。

支持弹性容器实例(ECI) ✔️ ✔️

配置方法请参见通过自建Kubernetes集群的虚拟节点组件创建ECI Pod

应用管理 部署、管理Helm Charts应用 ✔️ ✔️
支持GitOps应用交付链 ✔️
支持Knative Addon ✔️ ✔️
支持Istio Addon ✔️ ✔️
支持托管服务网格ASM ✔️ ✔️

配置方法请参见通过ASM管理外部注册Kubernetes集群应用

安全治理 支持RAM统一身份认证和RBAC权限管理 ✔️ ✔️
支持基于日志服务(SLS)的集群审计 ✔️ ✔️
支持云安全中心 ✔️
配置巡检 ✔️ ✔️

配置方法请参见使用配置巡检功能检查注册集群Workload安全隐患

可观测性 支持事件中心(NPD) ✔️ ✔️

配置方法请参见创建并使用Kubernetes事件中心

支持Ingress图表 ✔️ ✔️

配置方法请参见Ingress访问日志分析与监控

支持日志采集 ✔️ ✔️

配置方法请参见将日志服务接入注册集群

支持ARMS-应用监控 ✔️ ✔️

配置方法请参见将应用实时监控服务ARMS接入注册集群

支持ARMS-Prometheus ✔️ ✔️

配置方法请参见将arms-prometheus接入注册集群

支持AHAS-架构感知 ✔️ ✔️

配置方法请参见将AHAS-架构感知接入注册集群

支持AHAS-应用限流 ✔️ ✔️

配置方法请参见将AHAS-应用限流接入注册集群

支持Node Problem Detector(NPD) ✔️ ✔️

配置方法请参见将事件中心接入注册集群

支持Metrics Adpater ✔️ ✔️

配置方法请参见将alibaba-cloud-metrics-adapter接入注册集群

支持云监控集成 ✔️
支持KMS集成 ✔️
集群生命周期管理 管理节点 ✔️ ✔️
管理节点池 ✔️
支持集群弹性伸缩 ✔️ ✔️

取决于注册集群的实际环境。

支持证书轮转 ✔️
支持集群升级 ✔️
支持系统组件管理 ✔️
支持集群检查 ✔️

注册集群的关联云资源或云服务

创建一个注册集群,用户侧将会涉及到以下云资源或云服务:
  • 专有网络VPC和VSwitch。要求专有网络VPC有访问公网能力,您需要为其配置绑定公网EIP或者设置SNAT,产生费用。
  • 一个弹性网卡ENI,不产生费用。
  • 一个私网负载均衡实例,产生实例规格费用。关于实例规格的费用,请参见实例规格
  • 可选:一个弹性公网IP,产生流量费用。关于流量费用,请参见按量付费
此外,如果您希望扩展本地数据中心自建Kubernetes使用云上计算资源进行弹性扩缩容,还涉及到以下云资源或云服务:
  • 云上弹性ECS、裸金属、ECI等计算资源,根据实际使用计算资源收费。
  • 开通ESS云服务,免费。

其余按使用的功能收取费用。