这篇文章旨在概述如何使用Cluster API清单对ClusterOps进行建模,以及如何使用GitOps工具(例如ArgoCD和Flux)进行自动化构建。
理论上在创建集群方面,已经采用了许多解决方案和发行版来简化跨云服务商的Kubernetes引导过程。但是,在开放源代码领域中脱颖而出的工具之一是Cluster API,因为它为现有供应商(例如GCP,AWS,Azure,阿里云,Packet)之间的平台创建提供了一个通用接口,Cluster API将基础架构定义简化为两个清单,从而充分利用了Kubernetes构建块或CRD。自最新版本(v1alpha3)起,Cluster API引入了5种自定义资源:
集群API CRD
Cluster -包含基础架构提供商创建Kubernetes集群所需的详细信息(例如,用于Pod,服务的CIDR块)
ControlPlane —概述了Kubeadm的声明性控制平面生命周期管理机制
Machine —封装了Kubernetes节点的配置(例如kubelet版本)
MachineSet-确保始终启动并运行所需数量的计算机资源(类似于ReplicaSet)
MachineDeployment —通过在MachineSet配置之间采用可靠的部署策略来协调对Machine资源的更改(类似于Deployment)
因此,概述了一个新概念,将群集标识为自定义资源(CaaCRD或CaaR)。使用Cluster API,将使用CRD概述Kubernetes控件和数据平面并将其存储为YAML清单。平台生成的下一个有机步骤是模板和自动化。默认情况下,可以对一组清单进行参数设置并与Helm和Kustomize打包在一起。这使跨不同区域和云提供商的具有预定义技术要求的集群得以定制。另外,值得一提的是,将现有清单,图表和模板存储在git存储库中是一种很好的做法。这可以解锁GitOps工具的集成,从而解决了集群生成的自动化部分。
GitOps是一种应用程序交付机制,它具有git存储库来表示所需的应用程序状态。这表明,IDE和集群部署之间的差异仅在PR之外。GitOps与数据自动调节相关联,这意味着它具有拉动系统,始终监视新提交。 Flux (CNCF沙盒项目)和 ArgoCD (CNCF孵化项目)展示了GitOps的流行实现。实用的既然已经强调了所有技术概念,那么下一步就是将所有这些组件都放在同一个画布中。以下示例旨在概述有关如何使用ClusterAPI和ArgoCD在AWS中创建Kubernetes集群的指南。
要设置集群API,需要一个管理集群,可以使用Kind(Kubernetes的docker化版本)创建管理集群。一旦满足此要求,就可以初始化控制器管理器:
要设置集群API,需要一个管理集群,可以使用Kind(Kubernetes的docker化版本)创建管理集群。一旦满足此要求,就可以初始化控制器管理器:一旦所有Cluster API组件启动并运行,就可以安装ArgoCD:
下一步是配置ArgoCD应用程序,请参考Helm chart,该chart 包含AWS中平台扩展的清单:
就是这样!通过ArgoCD中的自动协调,将可以识别和应用集群控制和数据平面的资源。