作者|郝树伟(流生)

以 Kubernetes 为代表的云原生技能不仅屏蔽了各个云厂商和数据中心在基础设施上的差异性,还使得应用能够在不同的云上运用标准化的方法描述和布置运转。在此基础之上,咱们才能够低成本办理处于任何地理位置的 Kubernetes 集群。本文将首要为您介绍怎么实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群共同体会的集群办理和安全办理。

ACK 注册集群安全架构

要实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群共同体会的集群办理和安全办理,就必须先将其统一到同一操控平面,ACK 注册集群允许处于任何地理位置的自建 Kubernetes 集群经过公网或私网(云上云下网络打通)衔接端点接入阿里云容器服务办理系统。下面是 ACK 注册集群的架构示意图:

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

在 ACK 注册集群架构示意图中,首要包含以下几个组成部分:

  • ACK 容器服务操控台。

  • ACK 注册集群 Agent 组件:Agent 组件以 Deployment 的方法布置在自建 Kubernetes 集群中(或许其他云厂商的容器集群中),用于接纳 ACK 注册集群 Stub 组件(运用 ACK 容器服务操控台或 ACK 注册集群 kubeconfig)下发的恳求,并将其转发给方针集群的 Kubernetes API Server,同时接纳 Kubernetes API Server的响应并将其发送回 Stub 组件。

  • ACK 注册集群 Stub 组件:Stub组件布置的容器服务管控侧,每一个注册集群都对应一个 Stub 组件,用于署理转发 ACK 容器服务操控台或 ACK 注册集群 kubeconfig 拜访集群产生的恳求,转发到 Agent 组件并接纳来自 Agent 组件的响应,终究回来响应到用户端。

  • Kubernetes API Server:方针自建 Kubernetes 集群或其他云厂商容器集群的 Kubernetes API Server。

单向注册双向通讯

前面咱们提到,ACK 注册集群能够接入处于任何地理位置的自建 Kubernetes 集群,数据中心内自建的 Kubernetes 集群有一个特色便是通常情况下,这些自建集群处于一个受限的私有网络环境下,只能集群出公网拜访外部环境。ACK 注册集群为了解决这个问题,将 Stub/Agent 组件设计为 Agent 主动单向注册到 Stub 组件,Agent 衔接 Stub 时,会带上预先生成的 token 和证书等信息进行验证,整个通讯链路选用 TLS 协议确保数据加密。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

非“保管式”安全接入机制

经过 ACK 注册集群将自建 Kubernetes 集群接入到阿里云容器服务管控系统,用户最大的安全忧虑便是自有集群拜访权限的办理和操控,咱们经过以下几点来确保用户对自有集群的绝对安全操控。

  • ACK 管控侧不存储用户自有集群的任何秘钥信息。用户自建 Kubernetes 集群具有自己的一套证书系统,假如 ACK 注册集群运用用户自建 Kubernetes 集群的 kubeconfig 对其进行拜访,那么势必会造成用户集群拜访权限的不可控。实际上,无论是从安全视点考虑,还是从管控侧共同性体会的视点考虑,都要求咱们经过 ACK 注册集群来屏蔽管控侧与用户自建集群证书系统的差异性。那么具体的解法便是管控侧会运用 ACK 统一颁布的证书系统拜访注册集群 Stub 组件,在 Stub 和 Agent 组件完结恳求认证后,经由 Agent 以身份扮演的方法向方针 API Server作 7 层署理转发,终究在 API Server 完结恳求的 RBAC 鉴权和审计,如下图所示。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

  • 集群拜访权限的管控收敛到 Agent 组件。Agent 组件布置在用户自建集群中,ACK 管控侧经过 Stub/Agent 链路拜访用户自建集群的权限收敛在 Agent 组件侧,这样能够确保用户对自有集群拜访权限的全权操控。

  • Agent 组件“非侵入式”布置。Agent 组件以 Deployment 的方法布置在自建 Kubernetes 集群中,不对自建集群做任何更改和操作,后续会将 Agent 组件的源码开源出来。

  • 支持敞开安全审计。用户能够在注册集群中敞开安全审计功用,任何对集群的操作都能够进行查询和审计。

共同体会的集群办理

假定当前用户 A 已经在公共云创立了一个 ACK 集群,在数据中心内创立了一个自建 Kubernetes 集群,那么怎么运用共同的体会来办理这两个处于不同云环境的 Kubernetes 集群呢?很简单,创立一个 ACK 注册集群并接入自建集群即可。

创立 ACK 注册集群

咱们只需在 ACK 容器服务操控台创立注册集群页面选择离自建 Kubernetes 集群地理位置最近的区域并装备 VPC 网络和安全组,3 分钟即可完结注册集群的创立,如下图所示。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

集群概况页面能够看到衔接信息平别离有一个用于公网接入和私网接入自建 Kubernetes 集群的集群导入署理装备,如下图所示:

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

接入自建 Kubernetes 集群

在自建 Kubernetes 集群中布置上述集群导入署理装备:

$ kubectl apply -f agent.yaml

agent 组件运转正常后,咱们就能够在 ACK 容器服务操控台检查集群列表,如下图所示,名为 ack 的集群为 ACK 保管版集群,Kubernete 版别为 1.20.4-aliyun.1,名为 idc-k8s 的集群为 ACK 注册集群,接入的是用户自建的 Kubernetes 集群,Kubernetes版别为 1.19.4。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

运用注册集群 idc-k8s 即可办理自建 Kubernetes 集群,集群概览信息和节点列表信息如下图所示。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

接下来,用户就能够经过 ACK 容器服务操控台,运用共同体会来对云上云下集群进行集群办理、节点办理、应用办理和运维等操作。

共同体会的安全办理

在运用不同云平台上的 Kubernetes 集群时,不同云平台的安全办理才能和安全策略装备及办理方法也都不尽相同,这种良莠不齐的安全办理才能会导致运维团队在定义用户人物、拜访权限的时候都每个云平台的安全办理机制都十分了解,假如办理和安全拜访操控才能不足,则非常简单出现人物违规、拜访办理危险等问题。

例如,在一个各种项目都在运用 Kubernetes 容器集群,且容器集群归于不同的云平台的场景下,办理员需求能够将一切用户和他们的活动都引导到对应的容器集群,这样才能知道谁在什么时候做了什么,你可能会遇到有多个账户需求别离设置不同的拜访层级,或许有越来越多的人参加、离开、改换团队和项目的情况,怎么办理这些用户的权限会变得越来越复杂。

ACK 注册集群从以下几个方面为自建 Kubernetes 集群供给安全办理才能共同性体会。

运用阿里云主子账号认证系统和 Kubernetes RBAC 鉴权系统办理集群拜访操控

假定当前企业内有 2 个不同作业职责的用户,别离是开发人员 testuser01,测验人员 testuser02,那么办理员就可认为开发和测验人员创立子账号 testuser01 和 testuser02,接下来依据开发测验人员作业职责的不同,分配 ack 集群和 idc-k8s 集群的以下权限:

  • 开发人员 testuser01,颁发 ack 集群一切命名空间的读写权限,颁发 idc-k8s 集群test 命名空间的读写权限。

  • 测验人员testuser02,只颁发idc-k8s集群test命名空间的读写权限。

运用主账号为开发人员 testuser01 和测验人员 testuser02 授权,在ACK容器服务操控台授权办理中选择对应的 testuser01 和 testuser02 子账号,授权装备别离如下图所示:

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

依照导游完结 testuser01 和 testuser02 的授权后,运用子账号 testuser01 登录容器服务操控台能够测验 testuser01 对 ack 集群一切命名空间具有读写权限,只对 idc-k8s 集群test命名空间具有读写权限。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

运用子账号 testuser02 登录容器服务操控台能够测验 testuser02 看不到 ack 集群,且只对 idc-k8s 集群 test 命名空间具有读写权限。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

集群审计

在 Kubernetes 集群中,API Server 的审计日志能够协助集群办理人员记载或追溯不同用户的日常操作,是集群安全运维中重要的环节。在注册集群中能够运用集群审计功用协助用户可视化追溯不同用户的日常操作。

下面是自建 Kubernetes 集群的日志审计示例。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

装备巡检

装备巡检功用能够用来扫描集群中 Workload 装备的安全隐患,供给巡检概况和陈述,对结果进行分析解读,协助用户实时了解当前状态下运转应用的装备是否有安全隐患。

下面是自建 Kubernetes 集群的巡检概况示例。

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

作者简介

郝树伟(流生),阿里云容器服务技能专家,云原生分布式云团队核心成员,专心于云原生多集群的统一办理和调度、混合集群、应用交给和迁移等云原生技能的研究。

点击下方链接,检查相关视频解读~ www.bilibili.com/video/BV1WU…