背景 链接到标题 今天继续来聊一聊 cluster-api,在上周看 cluster-api-provider-vsphere 代码的时候吐槽过,cluster-api 最近因为 v1alpha2 版本的开发,变化太快,几乎每天都在变,那么我们就来看看 v1alpha2 具体做了什么。
Cluster-API v1alpha2 链接到标题 虽然目前 v1alpha2 还没有正式的 release,但是已经趋于稳定,且两个主要的 provider:aws 和 vsphere 都在进行 v1alpha2 版本的适配(最近每天都有 pr 更新)。我们先来了解下为啥要进行 v1alpha2 改动,改动的目的是啥。
在 v1alpha1 版本中,cluster-api 要求 provider 实现从节点置备到 k8s 部署的全套流程,cluster-api 自身只负责具体的 API 定义及相关控制,在 provider 实现上也不是一个标准的 Operator,(至少)我从概念的理解上比较吃力,每个 provider 需要实现对应 cluster 与 machine 的 actuator ,开发起来要求对 cluster-api 项目本身很熟悉。
其次,每个 provider 都包含了 k8s 集群部署的流程,虽然大部分实现最终都是使用 kubeadm 工具,但是使用方式千差万别,有 cloud-init、有 ssh 配合密钥、有 ssh 配合密码等等。这部分 provider 中的代码完全都是重复的,可以复用的。
上面提到的一些缺点,在 v1alpha2 版本中进行了改进,对各个组件进行了拆分,现在使用 cluster-api 需要 3 个控制器: