Skip to content

Commit

Permalink
update creation/modification dates and review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
mrajashree committed May 26, 2021
1 parent eb761bb commit 833b8d9
Showing 1 changed file with 23 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
---

Expand Down Expand Up @@ -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

Expand Down

0 comments on commit 833b8d9

Please sign in to comment.