From 833b8d95c48b76614dead2b1bddec946ed922fd1 Mon Sep 17 00:00:00 2001 From: Rajashree Mandaogane Date: Wed, 26 May 2021 13:08:09 -0700 Subject: [PATCH] update creation/modification dates and review comments --- ...=> 20210524-etcdadm-bootstrap-provider.md} | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) rename docs/proposals/{20210323-etcdadm-bootstrap-provider.md => 20210524-etcdadm-bootstrap-provider.md} (94%) diff --git a/docs/proposals/20210323-etcdadm-bootstrap-provider.md b/docs/proposals/20210524-etcdadm-bootstrap-provider.md similarity index 94% rename from docs/proposals/20210323-etcdadm-bootstrap-provider.md rename to docs/proposals/20210524-etcdadm-bootstrap-provider.md index f13d04affb51..3ea68cd442a7 100644 --- a/docs/proposals/20210323-etcdadm-bootstrap-provider.md +++ b/docs/proposals/20210524-etcdadm-bootstrap-provider.md @@ -2,8 +2,8 @@ title: Add support for managed external etcd clusters in CAPI authors: - "@mrajashree" -creation-date: 2021-03-23 -last-updated: 2021-03-23 +creation-date: 2021-05-24 +last-updated: 2021-05-26 status: provisional --- @@ -35,19 +35,33 @@ status: provisional - [Implementation History](#implementation-history) ## Glossary +Current open source projects referred in this CAEP: +Etcdadm: +Etcd-manager: -Refer to the [Cluster API Book Glossary](https://cluster-api.sigs.k8s.io/reference/glossary.html). +New components: +Etcdadm bootstrap provider: +Etcd cluster controller: + +Abbreviations used in this CAEP: +CAPI: Cluster API +Refer to the [Cluster API Book Glossary](https://cluster-api.sigs.k8s.io/reference/glossary.html). If this proposal adds new terms, or defines some, make the changes to the book's glossary when in PR stage. ## Summary +This is a proposal for adding support for provisioning external etcd clusters in Cluster API. CAPI supports using an external etcd cluster, but the user needs to create and manage it. CAPI currently does not have a provider that can create and manage etcd clusers. +This proposal intends to: +- Add a new provider that uses [etcdadm](https://github.com/kubernetes-sigs/etcdadm) to create and manage an etcd cluster. + - One of the goals mentioned in the [etcdadm project roadmap](https://github.com/kubernetes-sigs/etcdadm/blob/master/ROADMAP.md) is to integrate it with CAPI to support the "external etcd" use case. + - This etcdadm based provider will have two main components: + - An etcd bootstrap provider, that uses etcdadm to convert a Machine into an etcd member, by running the required etcdadm commands. This bootstrap provider is only responsible for turning individual Machines into etcd members. + - An etcd controller that manages the etcd cluster's lifecycle. This controller will manage a new API type, through which the user can specify etcd cluster requirements such as size and version. It will create the resources required by the etcd bootstrap provider to run the etcdadm commands. +- Define a contract for adding pluggable etcd providers. + - Just like the control plane and infrastructure providers are pluggable, we can define a contract to make etcd providers pluggable too. This proposal defines such a contract which includes: + - The required services and API types an etcd provider should add. + - Contract for how the control plane providers and infrastructure providers can interact with an etcd provider. -This is a proposal for adding support for provisioning external etcd clusters in Cluster API. CAPI's KubeadmControlPlane supports using an external etcd cluster. However, it currently does not support provisioning and managing this external etcd cluster. -As per [this KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/etcdadm/2496-etcdadm), there are ongoing -efforts to rebase [etcd-manager](https://github.com/kopeio/etcd-manager) (used in kOps) on to etcdadm, so as to make etcdadm a consistent etcd solution to be used across all projects, including cluster-api. -This can be achieved for CAPI by adding a new pluggable provider that has two main components: -- A bootstrap provider, that uses [etcdadm](https://github.com/kubernetes-sigs/etcdadm) to convert a machine into an etcd member. -- A new controller that manages this etcd cluster's lifecycle ## Motivation