TMC Self-Managed 提升跨多云环境安全性

news2024/11/24 16:50:32

作为云原生技术栈的关键技术之一,Kubernetes 被企业用户广泛试用并开始支撑实际业务应用运行,实现技术先进性带来的生产力提升。但与此同时,随着 Kubernetes 技术的不断广泛与深化使用,企业用户也开始面临诸多技术上的挑战,诸如在不同的基础架构环境中 (私有数据中心、公有云或边缘计算)统一管理的复杂度高,跨不同环境将 Kubernetes 作为一项标准服务交付到不同团队极具挑战性,不同环境和团队的运维方式不一致会导致安全性和合规性风险等等。

面对如此诸多挑战,VMware 推出了面向多云 / 混合云环境的 Kubernetes 资源统一管理的产品解决方案,VMware Tanzu Mission Control(简称 TMC)。这是一个集中式的管理平台,可跨多云环境和多集群进行一致的运维管理和安全保护。它为运维人员提供了单一控制点,使开发人员能够根据需要独立地推进业务向前发展,同时确保跨不同环境实现一致的管理和运维,以提升安全性和监管效果。

长久以来,TMC 只能以提供 SaaS 服务的方式供客户订阅使用。但是在很多情况下,尤其是一些对网络隔离性要求极高的用户,不允许将私有的 Kubernetes 集群开放给公网,导致这些用户无法使用 TMC 解决方案。所以,VMware 针对这种场景正式发布了 TMC 自管理版本(TMC Self-managed,TMC-SM) ,它将 TMC 作为本地部署的方式推向市场,使原先无法使用 TMC SaaS 服务的用户能够尝试使用该 Kubernetes 管理平台,或者原有 SaaS 用户在一些特殊情况下(比如断网)能够作为管理平台的高可用性备份。

本文将主要介绍 TMC-SM 的高层次架构以及部署步骤,让读者快速掌握和了解 TMC-SM 的功能。

高层次架构

TMC-SM 部署全部基于云原生,所以需要一个遵循 CNCF 规范的 Kubernetes 集群。TMC-SM 的高层次架构用一张图来表示如下:

在这里插入图片描述

其中:

  • 灰色的部分需要用户自己提供,主要包括:基础架构的 CNI 组件,CSI 组件以及外部负载均衡器(LB);遵循 OIDC 标准的身份管理服务;私有镜像仓库;证书管理器和相关 secrets 等。
  • 紫色的部分是自带的支撑服务组件,主要包括 Ingress 控制器 - Contour,登录服务 - Pinniped,S 3 存储服务 - Minio,消息服务 - Kafka 以及 SQL 服务 - Postgres 等。
  • 黄色的部分是集群代理,需要被管辖的集群都必须安装。
  • 绿色的部分是 TMC-SM 服务本体,所有的与用户交互的功能,例如集群生命周期管理,健康观测,数据保护,集群一致性检查,审计等等都在此处实现。TMC-SM 不仅包含交互式 Web 界面,而且还提供命令行工具 TMC CLI 来进行操作,以便集成进一些自动化流程中。

部署准备

在部署之前,我们需要做一些准备工作,主要清单如下:

  1. 一个遵循 CNCF 标准的 Kubernetes 集群,Api 版本 1.23.X,至少 1 个 Master 节点和 3 个 Worker 节点,每个节点的配置在 4 核 / 8 G 内存 / 40 G 本地磁盘以上。本文使用了 vSphere with Tanzu 7u3L 作为 Kubernetes 集群来源。
  2. 外部负载均衡器。本文使用 NSX-ALB 作为外部负载均衡器。
  3. 创建 DNS 记录。假设部署的子域名是 ,分配到的负载均衡器虚拟 IP 为 < load-balancer-ip>,那么需要创建的 DNS 记录清单如下:
    在这里插入图片描述
  4. 遵循 OIDC 标准的身份管理服务。此项可以集成现有客户环境的身份服务,或者自建。因为仅做示范之用,本文使用了 OKTA 的 SaaS 服务作为身份管理服务:

前往

在这里插入图片描述

注册开发者账户,然后创建新的 app integration:

在这里插入图片描述

注意设置参数:

1)Grant Type:

a.Client Credentials

b.Authorization Code

c.Refresh Token

d.Resource Owner Password (optional)

2)Sign-in Redirect URI: https://pinniped-supervisor./provider/pinniped/callback
3)创建新的组 tmc:admin 并把自己的 ID 加入该组。然后把 tmc:admin 加入存取 app 的权限。
4)创建 custom claim mapping。增加名字为 groups 的新 claim,正则表达式 regex 可以是 tmc.* 或者 (tmc:admin|tmc:member) 或者仅仅是 .* 以保证 tmc:admin 和 tmc:member 组都能被选中。

  1. 私有镜像仓库。本文使用了自建的 Harbor 镜像服务器 harbor-tanzu.eng.vmware.com,并建立了公共项目 tmc。安装镜像将存储在该项目中。

  2. 安装证书管理器。本文使用 cert-manager 作为证书管理器,并创建相应的 ClusterIssuer,如下:

  1. 直接安装 cert-manager 如下,本文使用 1.10.2 版本:

#kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.10.2/cert-manager.yaml

如需离线安装,则须下载相应的容器镜像并推送私有镜像仓库,修改 yaml 文件重定向容器镜像后再执行 kubectl apply。

  1. 创建自签名证书,获得 ca 证书和私钥 key,此步骤可以通过多种方法获得,常用的就是使用 openssl 命令。然后将 ca 证书和私钥 key 放入 secret/ca-key-pair:

apiVersion: v1

kind: Secret

metadata:

name: ca-key-pair

namespace: cert-manager

data:

tls.crt: LS0tLS1CRUdJTiBDR…

tls.key: LS0tLS1CRUdJTiBFQ…

a) 创建名为 letsencrypt-prod 的 ClusterIssuer,样本 yaml 文件如下:

apiVersion: cert-manager.io/v1

kind: ClusterIssuer

metadata:

name: letsencrypt-prod

spec:

ca:

secretName: ca-key-pair

部署

在准备好上述的部署前置条件之后,我们下载 TMC-SM 安装包并解压到 tmc 目录中,然后推送安装镜像到私有镜像仓库中:

#tmc/tmc-local push-images harbor --project harbor-tanzu.eng.vmware.com/tmc --username admin --password vmware

从安装程序中解出缺省的部署配置文件 values.yaml:

#tmc/tmc-local generate-values-schema --output-file values.yaml.tmpl

对 values.yaml 文件做相应的配置,主要的配置点有:

  1. oidc 服务配置

在这里插入图片描述

  1. 信任 ca 证书配置,包括 tls 和 harbor 的 ca 证书:
    在这里插入图片描述

然后执行部署安装,并观察 tmc-local 命名空间中 pod 的运行情况,如果都在 running 状态表示部署成功:

#tmc/tmc-local deploy --image-prefix harbor-tanzu.eng.vmware.com/tmc --kubeconfig ~/.kube/config --values=values.yaml

在这里插入图片描述

访问 TMC-SM 控制台

使用浏览器访问 https://,并通过身份验证后,便进入了 TMC-SM 的主界面:

在这里插入图片描述

你会发现,TMC-SM 和 TMC SaaS 服务的界面几乎一样。同样的,两者的功能也几乎一致,完全可以作为高可用性备份。

总结

TMC 从单一控制点管理所有 Kubernetes 集群,涵盖打包 Kubernetes 发行版、代管 Kubernetes 服务和 DIY 服务。运维人员可以全面了解所有 Kubernetes 资源的状态,随时了解每个集群的运行状况,掌握访问策略、容器镜像仓库策略、网络策略和安全策略等。

TMC Self-managed 版本的推出,将 TMC 的使用范围扩大到了企业的私有环境,而且支持和原有的 SaaS 版本互为备份,提供管理平台的高可用性。

本文作者:熊铭杰,应用现代化解决方案架构师

内容来源|公众号:VMware 中国研发中心

有任何疑问,欢迎扫描下方公众号联系我们哦~

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

功能解析丨客户端策略即时生效,向日葵“云策略”是什么

企业选择IT管理类的解决方案时&#xff0c;能否进行批量部署是一个很重要的考量&#xff0c;优秀的批量部署能力可以大幅降低IT管理人员的工作量&#xff0c;提升管理效率。 以常用的远程控制解决方案为例&#xff0c;部署方案是批量对客户端软件进行权限管理就是这一能力的具…

中电金信新企架 开启数字化转型“轻”时代

2022年12月15日&#xff0c;中国国际金融论坛在上海举办。国内外金融机构、生态企业共襄盛会&#xff0c;共议绿色金融、银行业数字化转型等议题&#xff0c;共享服务实体经济高质量发展的新举措、新模式。 △中电金信研究院副院长、企业数字化架构转型咨询部总经理曲向阳发布会…

摸准天气“小心思”,躲避恶劣天气“偷袭”

打开天气预报一看&#xff0c;天气真的很“善变”&#xff0c;既是高温又暴雨&#xff0c;偶尔还有台风路过&#xff0c;“蒸”的让人太太太难受了。看着天气在放晴和即将下雨之间“徘徊”&#xff0c;总是纠结带不带雨伞&#xff0c;让我的每次出门都成了一场冒险之旅。 持…

低代码平台:简化软件开发步骤,让开发更简单

目录 一、与传统IT开发相比&#xff0c;低代码开发的优势 二、低代码是时代发展的产物 三、善用低代码 四、总结 软件开发已经成为企业发展不可或缺的一环。然而&#xff0c;传统的软件开发模式常常面临着繁琐冗长的工作流程、高昂的开发成本以及难以跟进快速变化的市场需求的挑…

AudioCodes桌面电话和Zoom ZTP曝出严重漏洞,用户面临窃听风险

近日&#xff0c;AudioCodes桌面电话和Zoom的Zero Touch Provisioning (ZTP)被曝存在多个安全漏洞&#xff0c;恶意攻击者可能利用这些漏洞进行远程攻击。 SySS安全研究员Moritz Abrell在周五&#xff08;8月11日&#xff09;发表的一份分析报告中提到&#xff1a;外部攻击者可…

设备管理系统能起到什么作用?

在现代工业运营中&#xff0c;设备的高效管理和维护对于保障生产稳定运行和提升企业竞争力至关重要。而设备管理系统作为一种关键工具&#xff0c;能够极大地提高企业的生产效率和设备维护的准确性。本文将深入探讨设备管理系统的作用&#xff0c;以PreMaint设备数字化平台为例…

年薪6.5万美元|生物医学老师获美国耶鲁大学博士后职位

I老师就职于双非二本院校&#xff0c;希望通过出国研修以提升科研背景&#xff0c;在公派访学和申请导师出资的博士后之间&#xff0c;其选择了后者。最终我们落实了美国耶鲁大学的职位&#xff0c;头衔为Associate Research Scientist&#xff08;副研究科学家&#xff09;&am…

springboot使用configtree读取树形文件目录中的配置

文章目录 一、介绍二、演示环境三、项目演示1. 配置文件2. 导入配置3. 检测配置属性 四、应用场景五、源码解析1. ConfigTreeConfigDataLocationResolver2. ConfigTreeConfigDataLoader 六、总结 一、介绍 相信绝大多数使用springboot开发项目的朋友们在添加配置时&#xff0c…

Linux NTP原理及配置使用

一、NTP简介 1.NTP简介 NTP&#xff08;Network Time Protocol&#xff0c;网络时间协议&#xff09;是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC&#xff0c;其精度在局域网内可达0.1ms&#xff0c;在互联网上绝大多数的…

判断链表有环的证明

目录 1.问题 2.证明 3.代码实现 1.问题 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用…

使用vue3 + ts + vite + v-md-editor 在前端页面预览markdown文件

1.效果预览 2. 依赖包安装 yarn add kangc/v-md-editornext v-md-editor中文官网&#xff1a;https://code-farmer-i.github.io/vue-markdown-editor/zh/ v-md-editor分为4种组件&#xff1a; 轻量版编辑器进阶版编辑器预览组件html预览组件 对UI组件库页面&#xff0c;我只需…

如何应用项目管理软件进行敏捷开发管理

敏捷开发&#xff08;Agile Development&#xff09;是一种软件开发方法论&#xff0c;强调在不断变化的需求和环境下&#xff0c;通过迭代、协作和自适应的方式来开发软件。敏捷方法的目标是提供更快、更灵活、更高质量的软件交付&#xff0c;以满足客户需求并实现项目成功。 …

Jmeter 参数化的几种方法

目录 配置元件-用户自定义变量 前置处理器-用户参数 配置元件-CSV Data Set Config Tools-函数助手 配置元件-用户自定义变量 可在测试计划、线程组、HTTP请求下创建用户定义的变量 全局变量&#xff0c;可以跨线程组调用 jmeter执行的时候&#xff0c;只获取一次&#xff0…

储能电站盈利模式

0 概述 在我国新型电力系统中&#xff0c;新能源装机容量逐年提高&#xff0c;但是新能源比如光伏发电、风力发电是不稳定的能源&#xff0c;所以要维持电网稳定&#xff0c;促进新能源发电的消纳&#xff0c;储能将成为至关重要的一环&#xff0c;是分布式光伏、风电等新能源…

这是一篇关于SQL 脚本表间连接join的可视化说明

使用SQL合并两个数据集可以通过JOINS来完成。JOIN是查询的FROM子句中的SQL指令&#xff0c;用于标识要查询的表以及它们应该如何组合。 主键和外键 通常&#xff0c;在关系数据库中&#xff0c;数据被组织到由属性&#xff08;列&#xff09;和记录&#xff08;行&#xff09…

Android Sutdio 导入libs文件夹下的jar包没反应

有点离谱&#xff0c;笨笨的脑子才犯的错误 首先发现问题&#xff1a;转移项目的时候 直接复制粘贴libs文件夹下的jar包到新项目&#xff0c;在build.gradle文件下 使用语句并应用也没反应&#xff08;jar包没有出现箭头且代码报错&#xff0c;找不到&#xff09; implementa…

1个用户促成800万订单背后:三翼鸟将极致用户运营进行到底

今年暑假档&#xff0c;《长安三万里》是一批当之无愧的黑马&#xff0c;总票房正式超过光线动画《姜子牙》&#xff0c;创造了追光动画的票房新纪录。 当朋友们纷纷打卡分享强烈安利这部电影时&#xff0c;我不由感叹“它究竟有怎样的魔力”&#xff0c;形成如此炸裂的口碑传…

zabbix自动注册服务器以及部署代理服务器

文章目录 Zabbix自动注册服务器及部署代理服务器一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用&#xff1a;2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 …

Harmony创建项目ohpm报错

Harmony创建FA模型的项目时报如下错&#xff1a; The registry is empty - edit .ohpmrc file or use "ohpm config set registry your_registry" command to set registry.解决方法&#xff1a; File -> Settings -> Build,Execution,Deployment -> Ohpm …

error_Network Error

此页面为订单列表&#xff0c;是混合开发(页面嵌入在客户端中) 此页面为订单列表&#xff0c;此需求在开发时后端先将代码发布在测试环境&#xff0c;我在本地调试时调用的后端接口进行联调没有任何问题。 此后我将代码发布在测试环境&#xff0c;在app中打开页面&#xff0c…