如何使用Kubernetes Cluster API和ArgoCD创建和管理多个Kubernetes集群 - Piotr


在本文中,您将学习如何使用 Kubernetes Cluster API 和 ArgoCD 创建和管理多个 Kubernetes 集群。我们将使用 Kind 创建一个本地集群。在该集群上,我们将配置其他 Kubernetes 集群的创建过程。为了自动执行该过程,我们将使用 ArgoCD。多亏了它,我们可以从单个 Git 存储库处理整个过程。
您听说过一个名为Kubernetes Cluster API的项目吗?它提供声明式 API 和工具来简化配置、升级和管理多个 Kubernetes 集群。事实上,这是一个非常有趣的概念。我们正在创建一个管理其他集群生命周期的 Kubernetes 集群。在这个集群上,我们正在安装集群 API。然后我们只是通过创建集群 API 对象来定义新的工作负载集群。看起来很简单?就是这样。
 
Cluster API提供了一套扩展Kubernetes API的CRD。它们中的每一个都代表了对Kubernetes集群安装的定制。我不会深入了解这些细节。但是,如果你有兴趣,你可以在这里阅读更多关于它的信息。对我们来说最重要的是,它提供了一个CLI来处理集群API管理集群的生命周期。此外,它允许在多个基础设施上创建集群,包括AWS、GCP或Azure。然而,今天我们要在本地的Docker和Kind上运行整个基础设施。由于Kubernetes Cluster API支持Docker,所以也可以使用它。

我们将使用Cluster API CLI只是为了初始化管理集群和生成YAML模板。整个过程将由安装在管理集群上的ArgoCD来管理。Argo CD完全适合我们的方案,因为它支持多集群。安装在一个集群上的实例可以管理许多能够连接的其他集群。

最后,今天使用的最后一个工具 -  Kind.。多亏了它,我们可以使用Docker容器节点在同一台机器上运行多个Kubernetes集群。
让我们来看看本文中描述的解决方案的架构。
 
下面是我们的架构图。整个基础设施在本地的Docker上运行。我们在管理集群上安装Kubernetes Cluster API和ArgoCD。然后,使用这两个工具,我们正在创建带有Kind的新集群。之后,我们将把一些Kubernetes对象应用到工作负载集群(c1,c2)中,如命名空间Namespace、资源配额ResourceQuota 或角色绑定RoleBinding。当然,整个过程是由Argo CD实例管理的,配置存储在Git仓库中。

源代码
如果您想自己尝试一下,可以随时查看我的源代码。为此,您需要克隆我的 GitHub 存储库

详细点击标题