简介:本文将主要为您介绍如何实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群一致体验的集群管理和安全治理。
作者| 郝树伟(流生)
以 Kubernetes 为代表的云原生技术不仅屏蔽了各个云厂商和数据中心在基础设施上的差异性,还使得应用可以在不同的云上使用标准化的方式描述和部署运行。在此基础之上,我们才可以低成本管理处于任何地理位置的 Kubernetes 集群。本文将主要为您介绍如何实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群一致体验的集群管理和安全治理。
要实现对公共云 ACK 集群和数据中心自建 Kubernetes 集群一致体验的集群管理和安全治理,就必须先将其统一到同一控制平面,ACK 注册集群允许处于任何地理位置的自建 Kubernetes 集群通过公网或私网(云上云下网络打通)连接端点接入阿里云容器服务管理系统。下面是 ACK 注册集群的架构示意图:
在 ACK 注册集群架构示意图中,主要包括以下几个组成部分:
前面我们提到,ACK 注册集群可以接入处于任何地理位置的自建 Kubernetes 集群,数据中心内自建的 Kubernetes 集群有一个特点就是通常情况下,这些自建集群处于一个受限的私有网络环境下,只能集群出公网访问外部环境。ACK 注册集群为了解决这个问题,将 Stub/Agent 组件设计为 Agent 主动单向注册到 Stub 组件,Agent 连接 Stub 时,会带上预先生成的 token 和证书等信息进行验证,整个通信链路采用 TLS 协议确保数据加密。
通过 ACK 注册集群将自建 Kubernetes 集群接入到阿里云容器服务管控系统,用户最大的安全担忧就是自有集群访问权限的管理和控制,我们通过以下几点来保证用户对自有集群的绝对安全控制。
假设当前用户 A 已经在公共云创建了一个 ACK 集群,在数据中心内创建了一个自建 Kubernetes 集群,那么如何使用一致的体验来管理这两个处于不同云环境的 Kubernetes 集群呢?很简单,创建一个 ACK 注册集群并接入自建集群即可。
我们只需在 ACK 容器服务控制台创建注册集群页面选择离自建 Kubernetes 集群地理位置最近的区域并配置 VPC 网络和安全组,3 分钟即可完成注册集群的创建,如下图所示。
集群详情页面可以看到连接信息中分别有一个用于公网接入和私网接入自建 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。
使用注册集群 idc-k8s 即可管理自建 Kubernetes 集群,集群概览信息和节点列表信息如下图所示。
接下来,用户就可以通过 ACK 容器服务控制台,使用一致体验来对云上云下集群进行集群管理、节点管理、应用管理和运维等操作。
在使用不同云平台上的 Kubernetes 集群时,不同云平台的安全治理能力和安全策略配置及管理方式也都不尽相同,这种参差不齐的安全治理能力会导致运维团队在定义用户角色、访问权限的时候都每个云平台的安全管理机制都十分熟悉,如果管理和安全访问控制能力不足,则非常容易出现角色违规、访问管理风险等问题。
例如,在一个各种项目都在使用 Kubernetes 容器集群,且容器集群属于不同的云平台的场景下,管理员需要能够将所有用户和他们的活动都引导到对应的容器集群,这样才能知道谁在什么时候做了什么,你可能会遇到有多个账户需要分别设置不同的访问层级,或者有越来越多的人加入、离开、变换团队和项目的情况,如何管理这些用户的权限会变得越来越复杂。ACK 注册集群从以下几个方面为自建 Kubernetes 集群提供安全治理能力一致性体验。
假设当前企业内有 2 个不同工作职责的用户,分别是开发人员 testuser01,测试人员 testuser02,那么管理员就可以为开发和测试人员创建子账号 testuser01 和 testuser02,接下来根据开发测试人员工作职责的不同,分配 ack 集群和 idc-k8s 集群的以下权限:
使用主账号为开发人员 testuser01 和测试人员 testuser02 授权,在ACK容器服务控制台授权管理中选择对应的 testuser01 和 testuser02 子账号,授权配置分别如下图所示:
按照向导完成 testuser01 和 testuser02 的授权后,使用子账号 testuser01 登录容器服务控制台可以测试 testuser01 对 ack 集群所有命名空间拥有读写权限,只对 idc-k8s 集群test命名空间拥有读写权限。
使用子账号 testuser02 登录容器服务控制台可以测试 testuser02 看不到 ack 集群,且只对 idc-k8s 集群 test 命名空间拥有读写权限。
在 Kubernetes 集群中,API Server 的审计日志可以帮助集群管理人员记录或追溯不同用户的日常操作,是集群安全运维中重要的环节。在注册集群中可以使用集群审计功能帮助用户可视化追溯不同用户的日常操作。
下面是自建 Kubernetes 集群的日志审计示例。
配置巡检功能可以用来扫描集群中 Workload 配置的安全隐患,提供巡检详情和报告,对结果进行分析解读,帮助用户实时了解当前状态下运行应用的配置是否有安全隐患。
下面是自建 Kubernetes 集群的巡检详情示例。
如果你对以上任一问题有自己的观点,11 月 1 日 18:00 前,欢迎你发表在留言区和大家探讨,阿里巴巴云原生公众号将精选留言点赞前 3 位,各送出阿里云容器服务技术专家郝树伟新著《多云和混合云:云原生多集群和应用管理》一书。期待你的交流!
郝树伟(流生),阿里云容器服务技术专家,云原生分布式云团队核心成员,专注于云原生多集群的统一管理和调度、混合集群、应用交付和迁移等云原生技术的研究。
点击阅读原文,查看相关视频解读~
#从实践出发,解锁 Serverless 的不同面#
11 月 1 日(下周一)晚上20:00
扫描下方二维码或者搜索微信号(AlibabaCloud888)添加云原生小助手!加入社群,直播间不见不散!入群即可获云原生一手资讯~
原文链接:https://developer.aliyun.com/article/798582?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。