|
1 | 1 | --- |
2 | 2 | title: Machine States & Preboot Bootstrapping |
| 3 | +<!-- START doctoc generated TOC please keep comment here to allow auto update --> |
| 4 | +<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> |
| 5 | + |
| 6 | + |
| 7 | +- [Machine States & Preboot Bootstrapping](#machine-states--preboot-bootstrapping) |
| 8 | + - [Table of Contents](#table-of-contents) |
| 9 | + - [Glossary](#glossary) |
| 10 | + - [Summary](#summary) |
| 11 | + - [Motivation](#motivation) |
| 12 | + - [Goals](#goals) |
| 13 | + - [Non-Goals/Future Work](#non-goalsfuture-work) |
| 14 | + - [Proposal](#proposal) |
| 15 | + - [Data model changes](#data-model-changes) |
| 16 | + - [States and transitions](#states-and-transitions) |
| 17 | + - [Pending](#pending) |
| 18 | + - [Transition Conditions](#transition-conditions) |
| 19 | + - [Expectations](#expectations) |
| 20 | + - [Provisioning](#provisioning) |
| 21 | + - [Transition Conditions](#transition-conditions-1) |
| 22 | + - [Expectations](#expectations-1) |
| 23 | + - [Provisioned](#provisioned) |
| 24 | + - [Transition Conditions](#transition-conditions-2) |
| 25 | + - [Expectations](#expectations-2) |
| 26 | + - [Running](#running) |
| 27 | + - [Transition Conditions](#transition-conditions-3) |
| 28 | + - [Expectations](#expectations-3) |
| 29 | + - [Deleting](#deleting) |
| 30 | + - [Transition Conditions](#transition-conditions-4) |
| 31 | + - [Expectations](#expectations-4) |
| 32 | + - [Deleted](#deleted) |
| 33 | + - [Transition Conditions](#transition-conditions-5) |
| 34 | + - [Expectations](#expectations-5) |
| 35 | + - [Failed](#failed) |
| 36 | + - [Transition Conditions](#transition-conditions-6) |
| 37 | + - [Expectations](#expectations-6) |
| 38 | + - [Sequence diagram: User creates a machine with Kubeadm bootstrapper.](#sequence-diagram-user-creates-a-machine-with-kubeadm-bootstrapper) |
| 39 | + - [User Stories](#user-stories) |
| 40 | + - [As a Kubernetes operator, I’d like to provide custom bootstrap data without the use of a Kubernetes controller.](#as-a-kubernetes-operator-id-like-to-provide-custom-bootstrap-data-without-the-use-of-a-kubernetes-controller) |
| 41 | + - [As a Kubernetes operator, I’d like to monitor the progress of fulfilling a Machine and understand what errors, if any, have been reported by the controllers involved.](#as-a-kubernetes-operator-id-like-to-monitor-the-progress-of-fulfilling-a-machine-and-understand-what-errors-if-any-have-been-reported-by-the-controllers-involved) |
| 42 | + - [As an infrastructure provider author, I would like to build the fewest number of components possible to support the full cluster-api.](#as-an-infrastructure-provider-author-i-would-like-to-build-the-fewest-number-of-components-possible-to-support-the-full-cluster-api) |
| 43 | + - [As an infrastructure provider author, I would like to take advantage of the kubernetes API to provide validation for provider-specific data needed to provision a machine.](#as-an-infrastructure-provider-author-i-would-like-to-take-advantage-of-the-kubernetes-api-to-provide-validation-for-provider-specific-data-needed-to-provision-a-machine) |
| 44 | + - [As an infrastructure provider author, I would like to build a controller to manage provisioning machines using tools of my own choosing.](#as-an-infrastructure-provider-author-i-would-like-to-build-a-controller-to-manage-provisioning-machines-using-tools-of-my-own-choosing) |
| 45 | + - [As an infrastructure provider author, I would like to build a controller to manage provisioning machines without being restricted to a CRUD API.](#as-an-infrastructure-provider-author-i-would-like-to-build-a-controller-to-manage-provisioning-machines-without-being-restricted-to-a-crud-api) |
| 46 | + - [As an infrastructure provider consumer, I would like to have validation for the provider-specific data I need to give the system to have it provision a machine.](#as-an-infrastructure-provider-consumer-i-would-like-to-have-validation-for-the-provider-specific-data-i-need-to-give-the-system-to-have-it-provision-a-machine) |
| 47 | + - [Implementation Details/Notes/Constraints](#implementation-detailsnotesconstraints) |
| 48 | + - [Machine Controller Role](#machine-controller-role) |
| 49 | + - [Machine Controller dynamic watchers](#machine-controller-dynamic-watchers) |
| 50 | + - [Object References, Templates, MachineSets and MachineDeployments](#object-references-templates-machinesets-and-machinedeployments) |
| 51 | + - [Controllers and the single responsibility approach](#controllers-and-the-single-responsibility-approach) |
| 52 | + - [Remote references and accessing a workload cluster](#remote-references-and-accessing-a-workload-cluster) |
| 53 | + - [The “Phase” field and its role](#the-phase-field-and-its-role) |
| 54 | + - [Showing a status summary to users](#showing-a-status-summary-to-users) |
| 55 | + - [Risks and Mitigations](#risks-and-mitigations) |
| 56 | + - [State transitions are inflexible](#state-transitions-are-inflexible) |
| 57 | + - [Machine Controller can access any machine or cluster in any namespace](#machine-controller-can-access-any-machine-or-cluster-in-any-namespace) |
| 58 | + - [Certificates and tokens are exposed in plaintext](#certificates-and-tokens-are-exposed-in-plaintext) |
| 59 | + - [Bootstrap data cannot be merged](#bootstrap-data-cannot-be-merged) |
| 60 | + - [MachineClass is deprecated and will be revisited later](#machineclass-is-deprecated-and-will-be-revisited-later) |
| 61 | + - [Design Details](#design-details) |
| 62 | + - [Test Plan](#test-plan) |
| 63 | + - [Graduation Criteria](#graduation-criteria) |
| 64 | + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) |
| 65 | + - [Version Skew Strategy](#version-skew-strategy) |
| 66 | + - [Implementation History](#implementation-history) |
| 67 | + - [Drawbacks](#drawbacks) |
| 68 | + - [Alternatives](#alternatives) |
| 69 | + - [Object References, Templates, MachineSets and MachineDeployments](#object-references-templates-machinesets-and-machinedeployments-1) |
| 70 | + |
| 71 | +<!-- END doctoc generated TOC please keep comment here to allow auto update --> |
| 72 | + |
3 | 73 | authors: |
4 | 74 | - "@ncdc" |
5 | 75 | - "@vincepri" |
|
0 commit comments