From dba9969608d2c60e6ed355e52bada015e46dfdcc Mon Sep 17 00:00:00 2001 From: fabriziopandini Date: Sat, 28 Sep 2019 16:25:51 +0200 Subject: [PATCH] provisional KEP --- .../kubeadm/20190916-kubeadm-operator.md | 202 ++++++++++++++++++ .../kubeadm/20190916-kubeadm-operator.png | Bin 0 -> 56386 bytes 2 files changed, 202 insertions(+) create mode 100644 keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.md create mode 100644 keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.png diff --git a/keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.md b/keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.md new file mode 100644 index 00000000000..c13fffc4323 --- /dev/null +++ b/keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.md @@ -0,0 +1,202 @@ +--- +title: Kubeadm operator +authors: + - "@fabriziopandini" +owning-sig: sig-cluster-lifecycle +participating-sigs: + - sig-cluster-lifecycle +reviewers: + - "@neolit123" + - "@rosti" + - "@ereslibre" + - "@detiber" + - "@vincepri" + - "@yastij" + - "@chuckha" +approvers: + - "@timothysc" + - "@luxas" +editor: "@fabriziopandini" +creation-date: 2019-09-16 +last-updated: 2019-09-28 +status: provisional +--- + +# Kubeadm operator + +## Table of Contents + + +- [Release Signoff Checklist](#release-signoff-checklist) +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) + - [User Stories](#user-stories) + - [Story 1](#story-1) + - [Story 2](#story-2) + - [Story 3](#story-3) + - [Story 4](#story-4) + - [Story 5](#story-5) + - [Implementation Details/Notes/Constraints](#implementation-detailsnotesconstraints) + - [Risks and Mitigations](#risks-and-mitigations) +- [Design Details](#design-details) + - [Test Plan](#test-plan) + - [Graduation Criteria](#graduation-criteria) + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) + - [Version Skew Strategy](#version-skew-strategy) +- [Implementation History](#implementation-history) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [Infrastructure Needed](#infrastructure-needed) + + +## Release Signoff Checklist + +- [x] kubernetes/enhancements issue in release milestone, which links to KEP (this should be a link to the KEP location + in kubernetes/enhancements, not the initial KEP PR) +- [x] KEP approvers have set the KEP status to `implementable` +- [x] Design details are appropriately documented +- [ ] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input +- [ ] Graduation criteria is in place +- [ ] "Implementation History" section is up-to-date for milestone +- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io] +- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, + relevant PRs/issues, release notes + +## Summary + +Kubeadm operator would like to enable declarative control of kubeadm workflows, automating the execution and the +orchestration of such tasks across existing nodes in a cluster. + +## Motivation + +Kubeadm binary can execute operations only on the machine where it is running e.g. it is not possible to execute +operations on other nodes, to copy files across nodes, etc. + +As a consequence, most of the kubeadm workflows, like [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/), +consists of a complex sequence of tasks that should be manually executed and orchestrated across all the existing nodes +in the cluster. + +Such a user experience is not ideal due to the error-prone nature of humans running commands. The manual approach +can be considered a blocker for implementing more complex workflows such as rotating certificate authorities, +modifying the settings of an existing cluster or any task that requires coordination of more than one Kubernetes node. + +This KEP aims to address such problems by applying the operator pattern to kubeadm workflows. + +### Goals + +- To allow declarative control of kubeadm operations that lead to "in place" mutations[1] of kubeadm generated + artifacts. More specifically kubeadm artifacts are static pod manifests, certificates, kubeconfig file, + bootstrap token, kubeadm generated configmap and secrets, while this proposal initially includes the following + kubeadm workflows: + - kubeadm upgrade + - certificate renewal + - certificate authority rotation (NEW) + - change configuration in an existing cluster (NEW) + +> [1] Please note that we are referring to "in place" mutations of kubeadm generated artifacts in order to highlight +> the difference between the kubeadm operator and other SCL projects like [Cluster API](https://cluster-api.sigs.k8s.io/), +> which instead assume nodes and underlying machines are immutable. + +Considering the complexity of this topic, this document is expected to be subject to some iterations. +The goal of the current iteration is to: + +- Get initial approval on Summary and Motivation paragraphs +- To identify a semantic for defining “Operations” to be performed by the kubeadm-operator. +- To define how the kubeadm-operator should manage kubeadm workflows. +- To define how the users should interact with the kubeadm-operator, including also observability and error handling. +- To define how the kubeadm-operator should be deployed in a Kubernetes cluster. + +### Non-Goals + +- To provide or manage any infrastructure elements such as underlying machines, load balancers, storage, etc. +- To manage and automate the kubeadm init and join workflows. +- To manage any artifact *not* generated by kubeadm. The only exception are the kubelet, kubeadm, andkubectl + binaries which are considered in-scope as required by the upgrade workflow. +- To replace kubeadm "raw" workflows. The user will always be able to run kubeadm workflows in isolation in + manual fashion. + +## Proposal + +### User Stories + +#### Story 1 + +As a Kubernetes operator, I would like to be able to declaratively control upgrades in a systematic fashion. + +#### Story 2 + +As a Kubernetes operator, I would like to be able to declaratively control certificate renewal in a systematic fashion. + +#### Story 3 + +As a Kubernetes operator, I would like to be able to declaratively control changes of the current cluster's settings +in a systematic fashion. + +#### Story 4 + +As a Kubernetes operator, I would like to be able to declaratively rotate my certificate authorities. + +#### Story 5 +As a Kubernetes operator, I would like to control whether nodes are cordoned and drained for tasks or if they are +performed without disruption to the workloads on the node, referred to as a "hot" update. + +### Implementation Details/Notes/Constraints + +At his core the kubeadm operator is a controller that watches kubeadm ClusterConfiguration object, and according +to its changes, to trigger the required operations to reconcile the desired state and the current state, where +each operations is one of the supported kubeadm workflow. + +![](20190916-kubeadm-operator.png) + +In order to break down the the implementation of the kubeadm operator into smaller, actionable items, the current +iteration of this KEP focuses on a more limited scope, that is the orchestration of the operations that +the kubeadm operator is going to execute for reconcyling the currente state and the desired state. + +A POC will be executed in order to: + +- Identify a semantic for defining “Operations” to be performed by the kubeadm-operator. +- Define how the kubeadm-operator should manage kubeadm workflows. +- Define how the users should interact with the kubeadm-operator, including also observability and error handling. +- Define how the kubeadm-operator should be deployed in a Kubernetes cluster. + +### Risks and Mitigations + +TBD + +## Design Details + +### Test Plan + +TBD + +### Graduation Criteria + +TBD + +### Upgrade / Downgrade Strategy + +TBD + +### Version Skew Strategy + +TBD + +## Implementation History + +- the `Summary` and `Motivation` sections being merged signaling SIG acceptance + +## Drawbacks + +TBD + +## Alternatives + +[1] To NOT implement the kubeadm operator, and let the user automate workflows/orchestration of kubeadm +actions across nodes with other tools. + +## Infrastructure Needed + +TBD diff --git a/keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.png b/keps/sig-cluster-lifecycle/kubeadm/20190916-kubeadm-operator.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e544ecfe3c231dba658e78287d095231bff7ec GIT binary patch literal 56386 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ΠBVX^I8|-DOtcV5i1PmW@DQa7L$%>`-~Qb@O+jQE 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 nMD|yO2?&*GHI^LHHYuMUcAtI5NmRKD{-<