From a20fcf9fe9563dab2c03e2b21aedbff3fea6b4c5 Mon Sep 17 00:00:00 2001 From: Spencer Smith Date: Fri, 9 Apr 2021 10:31:39 -0400 Subject: [PATCH] docs: create v0.2 docs and add note about specifying TALOS_VERSION This PR adds the 0.2 docs, as well as mentions TALOS_VERSION in those docs, to try and avoid some user confusion Signed-off-by: Spencer Smith --- .../docs/v0.2/Configuration/environments.md | 78 ++++ .../docs/v0.2/Configuration/metadata.md | 30 ++ .../docs/v0.2/Configuration/serverclasses.md | 33 ++ .../docs/v0.2/Configuration/servers.md | 111 ++++++ .../docs/v0.2/Getting Started/architecture.md | 12 + .../v0.2/Getting Started/images/dc-view.png | Bin 0 -> 129632 bytes .../docs/v0.2/Getting Started/installation.md | 14 + .../docs/v0.2/Getting Started/introduction.md | 32 ++ .../docs/v0.2/Getting Started/resources.md | 119 ++++++ .../content/docs/v0.2/Guides/bootstrapping.md | 339 ++++++++++++++++++ .../content/docs/v0.2/Guides/first-cluster.md | 148 ++++++++ docs/website/content/docs/v0.2/Guides/flow.md | 82 +++++ .../content/docs/v0.2/Guides/patching.md | 58 +++ docs/website/content/docs/v0.2/index.md | 20 ++ docs/website/gridsome.config.js | 9 +- 15 files changed, 1084 insertions(+), 1 deletion(-) create mode 100644 docs/website/content/docs/v0.2/Configuration/environments.md create mode 100644 docs/website/content/docs/v0.2/Configuration/metadata.md create mode 100644 docs/website/content/docs/v0.2/Configuration/serverclasses.md create mode 100644 docs/website/content/docs/v0.2/Configuration/servers.md create mode 100644 docs/website/content/docs/v0.2/Getting Started/architecture.md create mode 100644 docs/website/content/docs/v0.2/Getting Started/images/dc-view.png create mode 100644 docs/website/content/docs/v0.2/Getting Started/installation.md create mode 100755 docs/website/content/docs/v0.2/Getting Started/introduction.md create mode 100644 docs/website/content/docs/v0.2/Getting Started/resources.md create mode 100644 docs/website/content/docs/v0.2/Guides/bootstrapping.md create mode 100644 docs/website/content/docs/v0.2/Guides/first-cluster.md create mode 100644 docs/website/content/docs/v0.2/Guides/flow.md create mode 100644 docs/website/content/docs/v0.2/Guides/patching.md create mode 100644 docs/website/content/docs/v0.2/index.md diff --git a/docs/website/content/docs/v0.2/Configuration/environments.md b/docs/website/content/docs/v0.2/Configuration/environments.md new file mode 100644 index 000000000..be9309df7 --- /dev/null +++ b/docs/website/content/docs/v0.2/Configuration/environments.md @@ -0,0 +1,78 @@ +--- +description: "" +weight: 1 +--- + +# Environments + +Environments are a custom resource provided by the Metal Controller Manager. +An environment is a codified description of what should be returned by the PXE server when a physical server attempts to PXE boot. + +Especially important in the environment types are the kernel args. +From here, one can tweak the IP to the metadata server as well as various other kernel options that [Talos](https://www.talos.dev/docs/v0.8/introduction/getting-started/#kernel-parameters) and/or the Linux kernel supports. + +Environments can be supplied to a given server either at the Server or the ServerClass level. +The hierarchy from most to least respected is: + +- `.spec.environmentRef` provided at `Server` level +- `.spec.environmentRef` provided at `ServerClass` level +- `"default"` `Environment` created by administrator + +A sample environment definition looks like this: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: Environment +metadata: + name: default +spec: + kernel: + url: "https://github.com/talos-systems/talos/releases/download/v0.8.1/vmlinuz-amd64" + sha512: "" + args: + - init_on_alloc=1 + - init_on_free=1 + - slab_nomerge + - pti=on + - consoleblank=0 + - random.trust_cpu=on + - ima_template=ima-ng + - ima_appraise=fix + - ima_hash=sha512 + - console=tty0 + - console=ttyS1,115200n8 + - earlyprintk=ttyS1,115200n8 + - panic=0 + - printk.devkmsg=on + - talos.platform=metal + - talos.config=http://$PUBLIC_IP:9091/configdata?uuid= + initrd: + url: "https://github.com/talos-systems/talos/releases/download/v0.8.1/initramfs-amd64.xz" + sha512: "" +``` + +Example of overriding `"default"` `Environment` at the `Server` level: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: Server +... +spec: + environmentRef: + namespace: default + name: boot + ... +``` + +Example of overriding `"default"` `Environment` at the `ServerClass` level: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: ServerClass +... +spec: + environmentRef: + namespace: default + name: boot + ... +``` diff --git a/docs/website/content/docs/v0.2/Configuration/metadata.md b/docs/website/content/docs/v0.2/Configuration/metadata.md new file mode 100644 index 000000000..5ea473a16 --- /dev/null +++ b/docs/website/content/docs/v0.2/Configuration/metadata.md @@ -0,0 +1,30 @@ +--- +description: "" +weight: 4 +--- + +# Metadata + +The Metadata server manages the Machine metadata. +In terms of Talos (the OS on which the Kubernetes cluster is formed), this is the +"[machine config](https://www.talos.dev/docs/v0.8/reference/configuration/)", +which is used during the automated installation. + +## Talos Machine Configuration + +The configuration of each machine is constructed from a number of sources: + +- The Talos bootstrap provider. +- The `Cluster` of which the `Machine` is a member. +- The `ServerClass` which was used to select the `Server` into the `Cluster`. +- Any `Server`-specific patches. + +The base template is constructed from the Talos bootstrap provider, using data from the associated `Cluster` manifest. +Then, any configuration patches are applied from the `ServerClass` and `Server`. + +Only configuration patches are allowed in the `ServerClass` and `Server` resources. +These patches take the form of an [RFC 6902](https://tools.ietf.org/html/rfc6902) JSON (or YAML) patch. +An example of the use of this patch method can be found in [Patching Guide](../../guides/patching/). + +Also note that while a `Server` can be a member of any number of `ServerClass`es, only the `ServerClass` which is used to select the `Server` into the `Cluster` will be used for the generation of the configuration of the `Machine`. +In this way, `Servers` may have a number of different configuration patch sets based on which `Cluster` they are in at any given time. diff --git a/docs/website/content/docs/v0.2/Configuration/serverclasses.md b/docs/website/content/docs/v0.2/Configuration/serverclasses.md new file mode 100644 index 000000000..f605aaa02 --- /dev/null +++ b/docs/website/content/docs/v0.2/Configuration/serverclasses.md @@ -0,0 +1,33 @@ +--- +description: "" +weight: 3 +--- + +# Server Classes + +Server classes are a way to group distinct server resources. +The "qualifiers" key allows the administrator to specify criteria upon which to group these servers. +There are currently three keys: `cpu`, `systemInformation`, and `labelSelectors`. +Each of these keys accepts a list of entries. +The top level keys are a "logical AND", while the lists under each key are a "logical OR". +Qualifiers that are not specified are not evaluated. + +An example: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: ServerClass +metadata: + name: default +spec: + qualifiers: + cpu: + - manufacturer: Intel(R) Corporation + version: Intel(R) Atom(TM) CPU C3558 @ 2.20GHz + - manufacturer: Advanced Micro Devices, Inc. + version: AMD Ryzen 7 2700X Eight-Core Processor + labelSelectors: + - "my-server-label": "true" +``` + +Servers would only be added to the above class if they had _EITHER_ CPU info, _AND_ the label associated with the server resource. diff --git a/docs/website/content/docs/v0.2/Configuration/servers.md b/docs/website/content/docs/v0.2/Configuration/servers.md new file mode 100644 index 000000000..addbbede4 --- /dev/null +++ b/docs/website/content/docs/v0.2/Configuration/servers.md @@ -0,0 +1,111 @@ +--- +description: "" +weight: 2 +--- + +# Servers + +Servers are the basic resource of bare metal in the Metal Controller Manager. +These are created by PXE booting the servers and allowing them to send a registration request to the management plane. + +An example server may look like the following: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: Server +metadata: + name: 00000000-0000-0000-0000-d05099d333e0 +spec: + accepted: false + configPatches: + - op: replace + path: /cluster/network/cni + value: + name: custom + urls: + - http://192.168.1.199/assets/cilium.yaml + cpu: + manufacturer: Intel(R) Corporation + version: Intel(R) Atom(TM) CPU C3558 @ 2.20GHz + system: + family: Unknown + manufacturer: Unknown + productName: Unknown + serialNumber: Unknown + skuNumber: Unknown + version: Unknown +``` + +## Installation Disk + +A an installation disk is required by Talos on bare metal. +This can be specified in a `configPatch`: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: Server +... +spec: + accepted: false + configPatches: + - op: replace + path: /machine/install/disk + value: /dev/sda1 +``` + +The install disk patch can also be set on the `ServerClass`: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: ServerClass +... +spec: + configPatches: + - op: replace + path: /machine/install/disk + value: /dev/sda1 +``` + +## Server Acceptance + +In order for a server to be eligible for consideration, it _must_ be `accepted`. +This is an important separation point which all `Server`s must pass. +Before a `Server` is accepted, no write action will be performed against it. +Thus, it is safe for a computer to be added to a network on which Sidero is operating. +Sidero will never write to or wipe any disk on a computer which is not marked as `accepted`. + +This can be tedious for systems in which all attached computers should be considered to be under the control of Sidero. +Thus, you may also choose to automatically accept any machine into Sidero on its discovery. +Please keep in mind that this means that any newly-connected computer **WILL BE WIPED** automatically. +You can enable auto-acceptance by pasing the `--auto-accept-servers=true` flag to `sidero-controller-manager`. + +Once accepted, a server will be reset (all disks wiped) and then made available to Sidero. + +You should never change an accepted `Server` to be _not_ accepted while it is in use. +Because servers which are not accepted will not be modified, if a server which +_was_ accepted is changed to _not_ accepted, the disk will _not_ be wiped upon +its exit. + +## IPMI + +Sidero can use IPMI information to control `Server` power state, reboot servers and set boot order. + +IMPI connection information can be set in the `Server` spec after initial registration: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: Server +... +spec: + bmc: + endpoint: 10.0.0.25 + user: admin + pass: password +``` + +If IPMI information is set, server boot order might be set to boot from disk, then network, Sidero will switch servers +to PXE boot once that is required. + +Without IPMI info, Sidero can still register servers, wipe them and provision clusters, but Sidero won't be able to +reboot servers once they are removed from the cluster. If IPMI info is not set, servers should be configured to boo first from network, +then from disk. diff --git a/docs/website/content/docs/v0.2/Getting Started/architecture.md b/docs/website/content/docs/v0.2/Getting Started/architecture.md new file mode 100644 index 000000000..fa8a0560a --- /dev/null +++ b/docs/website/content/docs/v0.2/Getting Started/architecture.md @@ -0,0 +1,12 @@ +--- +description: "" +weight: 3 +--- + +# Architecture + +The overarching architecture of Sidero centers around a "management plane". +This plane is expected to serve as a single interface upon which administrators can create, scale, upgrade, and delete Kubernetes clusters. +At a high level view, the management plane + created clusters should look something like: + +![Alternative text](./images/dc-view.png) diff --git a/docs/website/content/docs/v0.2/Getting Started/images/dc-view.png b/docs/website/content/docs/v0.2/Getting Started/images/dc-view.png new file mode 100644 index 0000000000000000000000000000000000000000..6b27997ac736b4142237f73e715ed8a24bd5e2e5 GIT binary patch literal 129632 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 literal 0 HcmV?d00001 diff --git a/docs/website/content/docs/v0.2/Getting Started/installation.md b/docs/website/content/docs/v0.2/Getting Started/installation.md new file mode 100644 index 000000000..1f5c17c26 --- /dev/null +++ b/docs/website/content/docs/v0.2/Getting Started/installation.md @@ -0,0 +1,14 @@ +--- +description: "" +weight: 2 +--- + +# Installation + +As of Cluster API version 0.3.9, Sidero is included as a default infrastructure provider in clusterctl. + +To install Sidero and the other Talos providers, simply issue: + +```bash +clusterctl init -b talos -c talos -i sidero +``` diff --git a/docs/website/content/docs/v0.2/Getting Started/introduction.md b/docs/website/content/docs/v0.2/Getting Started/introduction.md new file mode 100755 index 000000000..dc90dc46d --- /dev/null +++ b/docs/website/content/docs/v0.2/Getting Started/introduction.md @@ -0,0 +1,32 @@ +--- +description: "" +weight: 1 +--- + +# Introduction + +Sidero ("Iron" in Greek) is a project created by the [Talos Systems](https://www.talos-systems.com/) team. +The goal of this project is to provide lightweight, composable tools that can be used to create bare-metal Talos + Kubernetes clusters. +These tools are built around the Cluster API project. +Sidero is also a subproject of Talos Systems' [Arges](https://github.com/talos-systems/arges) project, which will publish known-good versions of these components (along with others) with each release. + +## Overview + +Sidero is made currently made up of three components: + +- Metal Metadata Server: Provides a Cluster API (CAPI)-aware metadata server +- Metal Controller Manager: Provides custom resources and controllers for managing the lifecycle of metal machines +- Cluster API Provider Sidero (CAPS): A Cluster API infrastructure provider that makes use of the pieces above to spin up Kubernetes clusters + +Sidero also needs these co-requisites in order to be useful: + +- [Cluster API](https://github.com/kubernetes-sigs/cluster-api) +- [Cluster API Control Plane Provider Talos](https://github.com/talos-systems/cluster-api-control-plane-provider-talos) +- [Cluster API Bootstrap Provider Talos](https://github.com/talos-systems/cluster-api-bootstrap-provider-talos) + +All componenets mentioned above can be installed using Cluster API's `clusterctl` tool. + +Because of the design of Cluster API, there is inherently a "chicken and egg" problem with needing an existing Kubernetes cluster in order to provision the management plane. +Talos Systems and the Cluster API community have created tools to help make this transition easier. +That being said, the management plane cluster does not have to be based on Talos. +If you would, however, like to use Talos as the OS of choice for the Sidero management plane, you can find a number of ways to deploy Talos in the [documentation](https://www.talos.dev). diff --git a/docs/website/content/docs/v0.2/Getting Started/resources.md b/docs/website/content/docs/v0.2/Getting Started/resources.md new file mode 100644 index 000000000..f48a98caf --- /dev/null +++ b/docs/website/content/docs/v0.2/Getting Started/resources.md @@ -0,0 +1,119 @@ +--- +description: "" +weight: 4 +--- + +# Resources + +Sidero, the Talos bootstrap/controlplane providers, and Cluster API each provide several custom resources (CRDs) to Kubernetes. +These CRDs are crucial to understanding the connections between each provider and in troubleshooting problems. +It may also help to look at the [cluster template](https://github.com/talos-systems/sidero/blob/master/templates/cluster-template.yaml) to get an idea of the relationships between these. + +--- + +## Cluster API (CAPI) + +It's worth defining the most basic resources that CAPI provides first, as they are related to several subsequent resources below. + +### `Cluster` + +`Cluster` is the highest level CAPI resource. +It allows users to specify things like network layout of the cluster, as well as contains references to the infrastructure and control plane resources that will be used to create the cluster. + +### `Machines` + +`Machine` represents an infrastructure component hosting a Kubernetes node. +Allows for specification of things like Kubernetes version, as well as contains reference to the infrastructure resource that relates to this machine. + +### `MachineDeployments` + +`MachineDeployments` are similar to a `Deployment` and their relationship to `Pods` in Kubernetes primitives. +A `MachineDeployment` allows for specification of a number of Machine replicas with a given specification. + +--- + +## Cluster API Bootstrap Provider Talos (CABPT) + +### `TalosConfigs` + +The `TalosConfig` resource allows a user to specify the type (init, controlplane, join) for a given machine. +The bootstrap provider will then generate a Talos machine configuration for that machine. +This resource also provides the ability to pass a full, pre-generated machine configuration. +Finally, users have the ability to pass `configPatches`, which are applied to edit a generate machine configuration with user-defined settings. +The `TalosConfig` corresponds to the `bootstrap` sections of Machines, `MachineDeployments`, and the `controlPlaneConfig` section of `TalosControlPlanes`. + +### `TalosConfigTemplates` + +`TalosConfigTemplates` are similar to the `TalosConfig` above, but used when specifying a bootstrap reference in a `MachineDeployment`. + +--- + +## Cluster API Control Plane Provider Talos (CACPPT) + +### `TalosControlPlanes` + +The control plane provider presents a single CRD, the `TalosControlPlane`. +This resource is similar to `MachineDeployments`, but is targeted exclusively for the Kubernetes control plane nodes. +The `TalosControlPlane` allows for specification of the number of replicas, version of Kubernetes for the control plane nodes, references to the infrastructure resource to use (`infrastructureTemplate` section), as well as the configuration of the bootstrap data via the `controlPlaneConfig` section. +This resource is referred to by the CAPI Cluster resource via the `controlPlaneRef` section. + +--- + +## Sidero + +### Cluster API Provider Sidero (CAPS) + +#### `MetalClusters` + +A `MetalCluster` is Sidero's view of the cluster resource. +This resource allows users to define the control plane endpoint that corresponds to the Kubernetes API server. +This resource corresponds to the `infrastructureRef` section of Cluster API's `Cluster` resource. + +#### `MetalMachines` + +A `MetalMachine` is Sidero's view of a machine. +Allows for reference of a single server or a server class from which a physical server will be picked to bootstrap. + +#### `MetalMachineTemplates` + +A `MetalMachineTemplate` is similar to a `MetalMachine` above, but serves as a template that is reused for resources like `MachineDeployments` or `TalosControlPlanes` that allocate multiple `Machines` at once. + +#### `ServerBindings` + +`ServerBindings` represent a one-to-one mapping between a Server resource and a `MetalMachine` resource. +A `ServerBinding` is used internally to keep track of servers that are allocated to a Kubernetes cluster and used to make decisions on cleaning and returning servers to a `ServerClass` upon deallocation. + +### Metal Controller Manager + +#### `Environments` + +These define a desired deployment environment for Talos, including things like which kernel to use, kernel args to pass, and the initrd to use. +Sidero allows you to define a default environment, as well as other environments that may be specific to a subset of nodes. +Users can override the environment at the `ServerClass` or `Server` level, if you have requirements for different kernels or kernel parameters. + +See the [Environments](/docs/v0.1/configuration/environments/) section of our Configuration docs for examples and more detail. + +#### `Servers` + +These represent physical machines as resources in the management plane. +These `Servers` are created when the physical machine PXE boots and completes a "discovery" process in which it registers with the management plane and provides SMBIOS information such as the CPU manufacturer and version, and memory information. + +See the [Servers](/docs/v0.1/configuration/servers/) section of our Configuration docs for examples and more detail. + +#### `ServerClasses` + +`ServerClasses` are a grouping of the `Servers` mentioned above, grouped to create classes of servers based on Memory, CPU or other attributes. +These can be used to compose a bank of `Servers` that are eligible for provisioning. + +See the [ServerClasses](/docs/v0.1/configuration/serverclasses/) section of our Configuration docs for examples and more detail. + +### Metal Metadata Server + +While the metadata server does not present unique CRDs within Kubernetes, it's important to understand the metadata resources that are returned to physical servers during the boot process. + +#### Metadata + +The metadata server may be familiar to you if you have used cloud environments previously. +Using Talos machine configurations created by the Talos Cluster API bootstrap provider, along with patches specified by editing `Server`/`ServerClass` resources or `TalosConfig`/`TalosControlPlane` resources, metadata is returned to servers who query the metadata server at boot time. + +See the [Metadata](/docs/v0.1/configuration/metadata/) section of our Configuration docs for examples and more detail. diff --git a/docs/website/content/docs/v0.2/Guides/bootstrapping.md b/docs/website/content/docs/v0.2/Guides/bootstrapping.md new file mode 100644 index 000000000..afef85528 --- /dev/null +++ b/docs/website/content/docs/v0.2/Guides/bootstrapping.md @@ -0,0 +1,339 @@ +--- +description: "A guide for bootstrapping Sidero management plane" +weight: 1 +--- + +# Bootstrapping + +## Introduction + +Imagine a scenario in which you have shown up to a datacenter with only a laptop and your task is to transition a rack of bare metal machines into an HA management plane and multiple Kubernetes clusters created by that management plane. +In this guide, we will go through how to create a bootstrap cluster using a Docker-based Talos cluster, provision the management plane, and pivot over to it. +Guides around post-pivoting setup and subsequent cluster creation should also be found in the "Guides" section of the sidebar. + +Because of the design of Cluster API, there is inherently a "chicken and egg" problem with needing a Kubernetes cluster in order to provision the management plane. +Talos Systems and the Cluster API community have created tools to help make this transition easier. + +## Prerequisites + +First, you need to install the latest `talosctl` by running the following script: + +```bash +curl -Lo /usr/local/bin/talosctl https://github.com/talos-systems/talos/releases/latest/download/talosctl-$(uname -s | tr "[:upper:]" "[:lower:]")-amd64 +chmod +x /usr/local/bin/talosctl +``` + +You can read more about Talos and `talosctl` at [talos.dev](https://www.talos.dev/docs/latest). + +Next, there are two big prerequisites involved with bootstrapping Sidero: routing and DHCP setup. + +From the routing side, the laptop from which you are bootstrapping _must_ be accessible by the bare metal machines that we will be booting. +In the datacenter scenario described above, the easiest way to achieve this is probably to hook the laptop onto the server rack's subnet by plugging it into the top-of-rack switch. +This is needed for TFTP, PXE booting, and for the ability to register machines with the bootstrap plane. + +DHCP configuration is needed to tell the metal servers what their "next server" is when PXE booting. +The configuration of this is different for each environment and each DHCP server, thus it's impossible to give an easy guide. +However, here is an example of the configuration for an Ubiquti EdgeRouter that uses vyatta-dhcpd as the DHCP service: + +This block shows the subnet setup, as well as the extra "subnet-parameters" that tell the DHCP server to include the ipxe-metal.conf file. + +```bash +$ show service dhcp-server shared-network-name MetalDHCP + + authoritative enable + subnet 192.168.254.0/24 { + default-router 192.168.254.1 + dns-server 192.168.1.200 + lease 86400 + start 192.168.254.2 { + stop 192.168.254.252 + } + subnet-parameters "include "/etc/dhcp/ipxe-metal.conf";" + } +``` + +Here is the ipxe-metal.conf file. + +```bash +$ cat /etc/dhcp/ipxe-metal.conf + +allow bootp; +allow booting; + +next-server 192.168.1.150; +if exists user-class and option user-class = "iPXE" { + filename "http://192.168.1.150:8081/boot.ipxe"; +} elsif substring (option vendor-class-identifier, 0, 10) = "HTTPClient" { + option vendor-class-identifier "HTTPClient"; + filename "http://192.168.1.150:8081/tftp/ipxe.efi"; +} else { + filename "ipxe.efi"; +} + +host talos-mgmt-0 { + fixed-address 192.168.254.2; + hardware ethernet d0:50:99:d3:33:60; +} +``` + +Notice that it sets a static address for the management node that I'll be booting, in addition to providing the "next server" info. +This "next server" IP address will match references to `PUBLIC_IP` found below in this guide. + +## Create a Local Cluster + +The `talosctl` CLI tool has built-in support for spinning up Talos in docker containers. +Let's use this to our advantage as an easy Kubernetes cluster to start from. + +Set an environment variable called `PUBLIC_IP` which is the "public" IP of your machine. +Note that "public" is a bit of a misnomer. +We're really looking for the IP of your machine, not the IP of the node on the docker bridge (ex: `192.168.1.150`). + +```bash +export PUBLIC_IP="192.168.1.150" +``` + +We can now create our Docker cluster. +Issue the following to create a single-node cluster: + +```bash +talosctl cluster create \ + -p 69:69/udp,8081:8081/tcp,9091:9091/tcp,50100:50100/tcp \ + --workers 0 \ + --endpoint $PUBLIC_IP +``` + +Note that there are several ports mentioned in the command above. +These allow us to access the services that will get deployed on this node. + +Once the cluster create command is complete, issue `talosctl kubeconfig /desired/path` to fetch the kubeconfig for this cluster. +You should then set your `KUBECONFIG` environment variable to the path of this file. + +## Untaint Control Plane + +Because this is a single node cluster, we need to remove the "NoSchedule" taint on the node to make sure non-controlplane components can be scheduled. + +```bash +kubectl taint node talos-default-master-1 node-role.kubernetes.io/master:NoSchedule- +``` + +## Install Sidero + +As of Cluster API version 0.3.9, Sidero is included as a default infrastructure provider in clusterctl. + +To install Sidero and the other Talos providers, simply issue: + +```bash +clusterctl init -b talos -c talos -i sidero +``` + +## Patch Components + +We will now want to ensure that the Sidero services that got created are publicly accessible across our subnet. +This will allow the metal machines to speak to these services later. + +### Patch the Metadata Server + +Update the metadata server component with the following patches: + +```bash +## Update args to use 9091 for port +kubectl patch deploy -n sidero-system sidero-metadata-server --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args", "value": ["--port=9091"]}]' + +## Tweak container port to match +kubectl patch deploy -n sidero-system sidero-metadata-server --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/ports", "value": [{"containerPort": 9091,"name": "http"}]}]' + +## Use host networking +kubectl patch deploy -n sidero-system sidero-metadata-server --type='json' -p='[{"op": "add", "path": "/spec/template/spec/hostNetwork", "value": true}]' +``` + +### Patch the Metal Controller Manager + +```bash +## Update args to specify the api endpoint to use for registration +kubectl patch deploy -n sidero-system sidero-controller-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/1/args", "value": ["--api-endpoint='$PUBLIC_IP'","--metrics-addr=127.0.0.1:8080","--enable-leader-election"]}]' + +## Use host networking +kubectl patch deploy -n sidero-system sidero-controller-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/hostNetwork", "value": true}]' +``` + +## Register the Servers + +At this point, any servers on the same network as Sidero should PXE boot using the Sidero PXE service. +To register a server with Sidero, simply turn it on and Sidero will do the rest. +Once the registration is complete, you should see the servers registered with `kubectl get servers`: + +```bash +$ kubectl get servers -o wide +NAME HOSTNAME ACCEPTED ALLOCATED CLEAN +00000000-0000-0000-0000-d05099d33360 192.168.254.2 false false false +``` + +## Accept the Servers + +Note in the output above that the newly registered servers are not `accepted`. +In order for a server to be eligible for consideration, it _must_ be marked as `accepted`. +Before a `Server` is accepted, no write action will be performed against it. +Servers can be accepted by issuing a patch command like: + +```bash +kubectl patch server 00000000-0000-0000-0000-d05099d33360 --type='json' -p='[{"op": "replace", "path": "/spec/accepted", "value": true}]' +``` + +For more information on server acceptance, see the [server docs](/docs/v0.1/configuration/servers). + +## Create the Default Environment + +We must now create an `Environment` in our bootstrap cluster. +An environment is a CRD that tells the PXE component of Sidero what information to return to nodes that request a PXE boot after completing the registration process above. +Things that can be controlled here are kernel flags and the kernel and init images to use. + +To create a default environment that will use the latest published Talos release, issue the following: + +```bash +cat < management-plane.yaml +``` + +Note that there are several variables that should be set in order for the templating to work properly: + +- `CONTROL_PLANE_ENDPOINT`: The endpoint used for the Kubernetes API server (e.g. `https://1.2.3.4:6443`). + This is the equivalent of the `endpoint` you would specify in `talosctl gen config`. + There are a variety of ways to configure a control plane endpoint. + Some common ways for an HA setup are to use DNS, a load balancer, or BGP. + A simpler method is to use the IP of a single node. + This has the disadvantage of being a single point of failure, but it can be a simple way to get running. +- `CONTROL_PLANE_SERVERCLASS`: The server class to use for control plane nodes. +- `WORKER_SERVERCLASS`: The server class to use for worker nodes. +- `KUBERNETES_VERSION`: The version of Kubernetes to deploy (e.g. `v1.19.4`). +- `CONTROL_PLANE_PORT`: The port used for the Kubernetes API server (port 6443) +- `TALOS_VERSION`: This should correspond to the minor version of Talos that you will be deploying (e.g. `v0.9`). + This value is used in determining the fields present in the machine configuration that gets generated for Talos nodes. + +For instance: +```bash +export CONTROL_PLANE_SERVERCLASS=master +export WORKER_SERVERCLASS=worker +export KUBERNETES_VERSION=v1.20.1 +export CONTROL_PLANE_PORT=6443 +export CONTROL_PLANE_ENDPOINT=1.2.3.4 +clusterctl config cluster management-plane -i sidero > management-plane.yaml +``` + +In addition, you can specify the replicas for control-plane & worker nodes in management-plane.yaml manifest for TalosControlPlane and MachineDeployment objects. Also, they can be scaled if needed: + +```bash +kubectl get taloscontrolplane +kubectl get machinedeployment +kubectl scale taloscontrolplane management-plane-cp --replicas=3 +``` + +Now that we have the manifest, we can simply apply it: + +```bash +kubectl apply -f management-plane.yaml +``` + +**NOTE: The templated manifest above is meant to act as a starting point. If customizations are needed to ensure proper setup of your Talos cluster, they should be added before applying.** + +Once the management plane is setup, you can fetch the talosconfig by using the cluster label. +Be sure to update the cluster name and issue the following command: + +```bash +kubectl get talosconfig \ + -l cluster.x-k8s.io/cluster-name= \ + -o yaml -o jsonpath='{.items[0].status.talosConfig}' > management-plane-talosconfig.yaml +``` + +With the talosconfig in hand, the management plane's kubeconfig can be fetched with `talosctl --talosconfig management-plane-talosconfig.yaml kubeconfig` + +## Pivoting + +Once we have the kubeconfig for the management cluster, we now have the ability to pivot the cluster from our bootstrap. +Using clusterctl, issue: + +```bash +clusterctl init --kubeconfig=/path/to/management-plane/kubeconfig -i sidero -b talos -c talos +``` + +Followed by: + +```bash +clusterctl move --to-kubeconfig=/path/to/management-plane/kubeconfig +``` + +Upon completion of this command, we can now tear down our bootstrap cluster with `talosctl cluster destroy` and begin using our management plane as our point of creation for all future clusters! diff --git a/docs/website/content/docs/v0.2/Guides/first-cluster.md b/docs/website/content/docs/v0.2/Guides/first-cluster.md new file mode 100644 index 000000000..cb0169c96 --- /dev/null +++ b/docs/website/content/docs/v0.2/Guides/first-cluster.md @@ -0,0 +1,148 @@ +--- +description: "A guide for creating your first cluster with the Sidero management plane" +weight: 2 +--- + +# Creating Your First Cluster + +## Introduction + +This guide will detail the steps needed to provision your first bare metal Talos cluster after completing the bootstrap and pivot steps detailed in the previous guide. +There will be two main steps in this guide: reconfiguring the Sidero components now that they have been pivoted and the actual cluster creation. + +## Reconfigure Sidero + +### Patch Services + +In this guide, we will convert the metadata service to a NodePort service and the other services to use host networking. +This is also necessary because some protocols like TFTP don't allow for port configuration. +Along with some nodeSelectors and a scale up of the metal controller manager deployment, creating the services this way allows for the creation of DNS names that point to all management plane nodes and provide an HA experience if desired. +It should also be noted, however, that there are many options for acheiving this functionality. +Users can look into projects like MetalLB or KubeRouter with BGP and ECMP if they desire something else. + +Metal Controller Manager: + +```bash +## Use host networking +kubectl patch deploy -n sidero-system sidero-controller-manager --type='json' -p='[{"op": "add", "path": "/spec/template/spec/hostNetwork", "value": true}]' +``` + +Metadata Server: + +```bash +# Convert metadata server service to nodeport +kubectl patch service -n sidero-system sidero-metadata-server --type='json' -p='[{"op": "replace", "path": "/spec/type", "value": "NodePort"}]' + +## Set a known nodeport for metadata server +kubectl patch service -n sidero-system sidero-metadata-server --type='json' -p='[{"op": "replace", "path": "/spec/ports", "value": [{"port": 80, "protocol": "TCP", "targetPort": "http", "nodePort": 30005}]}]' +``` + +#### Update Environment + +The metadata server's information needs to be updated in the default environment. +Edit the environment with `kubectl edit environment default` and update the `talos.config` kernel arg with the IP of one of the management plane nodes (or the DNS entry you created) and the nodeport we specified above (30005). + +### Update DHCP + +The DHCP options configured in the previous guide should now be updated to point to your new management plane IP or to the DNS name if it was created. + +A revised ipxe-metal.conf file looks like: + +```bash +allow bootp; +allow booting; + +next-server 192.168.254.2; +if exists user-class and option user-class = "iPXE" { + filename "http://192.168.254.2:8081/boot.ipxe"; +} else { + if substring (option vendor-class-identifier, 15, 5) = "00000" { + # BIOS + if substring (option vendor-class-identifier, 0, 10) = "HTTPClient" { + option vendor-class-identifier "HTTPClient"; + filename "http://192.168.254.2:8081/tftp/undionly.kpxe"; + } else { + filename "undionly.kpxe"; + } + } else { + # UEFI + if substring (option vendor-class-identifier, 0, 10) = "HTTPClient" { + option vendor-class-identifier "HTTPClient"; + filename "http://192.168.254.2:8081/tftp/ipxe.efi"; + } else { + filename "ipxe.efi"; + } + } +} + +host talos-mgmt-0 { + fixed-address 192.168.254.2; + hardware ethernet d0:50:99:d3:33:60; +} +``` + +## Register the Servers + +At this point, any servers on the same network as Sidero should PXE boot using the Sidero PXE service. +To register a server with Sidero, simply turn it on and Sidero will do the rest. +Once the registration is complete, you should see the servers registered with `kubectl get servers`: + +```bash +$ kubectl get servers -o wide +NAME HOSTNAME ACCEPTED ALLOCATED CLEAN +00000000-0000-0000-0000-d05099d33360 192.168.254.2 false false false +``` + +## Accept the Servers + +Note in the output above that the newly registered servers are not `accepted`. +In order for a server to be eligible for consideration, it _must_ be marked as `accepted`. +Before a `Server` is accepted, no write action will be performed against it. +Servers can be accepted by issuing a patch command like: + +```bash +kubectl patch server 00000000-0000-0000-0000-d05099d33360 --type='json' -p='[{"op": "replace", "path": "/spec/accepted", "value": true}]' +``` + +For more information on server acceptance, see the [server docs](/docs/v0.1/configuration/servers). + +## Create the Cluster + +The cluster creation process should be identical to what was detailed in the previous guide. +Note that, for this example, the same "default" serverclass that we used in the previous guide is used again. +Using clusterctl, we can create a cluster manifest with: + +```bash +clusterctl config cluster workload-cluster -i sidero > workload-cluster.yaml +``` + +Note that there are several variables that should be set in order for the templating to work properly: + +- `CONTROL_PLANE_ENDPOINT`: The endpoint used for the Kubernetes API server (e.g. `https://1.2.3.4:6443`). + This is the equivalent of the `endpoint` you would specify in `talosctl gen config`. + There are a variety of ways to configure a control plane endpoint. + Some common ways for an HA setup are to use DNS, a load balancer, or BGP. + A simpler method is to use the IP of a single node. + This has the disadvantage of being a single point of failure, but it can be a simple way to get running. +- `CONTROL_PLANE_SERVERCLASS`: The server class to use for control plane nodes. +- `WORKER_SERVERCLASS`: The server class to use for worker nodes. +- `KUBERNETES_VERSION`: The version of Kubernetes to deploy (e.g. `v1.19.4`). +- `TALOS_VERSION`: This should correspond to the minor version of Talos that you will be deploying (e.g. `v0.9`). + This value is used in determining the fields present in the machine configuration that gets generated for Talos nodes. + Note that the default is currently `v0.8`. + +Now that we have the manifest, we can simply apply it: + +```bash +kubectl apply -f workload-cluster.yaml +``` + +**NOTE: The templated manifest above is meant to act as a starting point. If customizations are needed to ensure proper setup of your Talos cluster, they should be added before applying.** + +Once the workload cluster is setup, you can fetch the talosconfig with a command like: + +```bash +kubectl get talosconfig -o yaml workload-cluster-cp-xxx -o jsonpath='{.status.talosConfig}' > workload-cluster-talosconfig.yaml +``` + +Then the workload cluster's kubeconfig can be fetched with `talosctl --talosconfig workload-cluster-talosconfig.yaml kubeconfig /desired/path`. diff --git a/docs/website/content/docs/v0.2/Guides/flow.md b/docs/website/content/docs/v0.2/Guides/flow.md new file mode 100644 index 000000000..ba5024f90 --- /dev/null +++ b/docs/website/content/docs/v0.2/Guides/flow.md @@ -0,0 +1,82 @@ +--- +description: "Diagrams for various flows in Sidero." +weight: 4 +--- + +## Provisioning Flow + +```mermaid +graph TD; + Start(Start); + End(End); + + %% Decisions + + IsOn{Is server is powered on?}; + IsRegistered{Is server is registered?}; + IsAccepted{Is server is accepted?}; + IsClean{Is server is clean?}; + IsAllocated{Is server is allocated?}; + + %% Actions + + DoPowerOn[Power server on]; + DoPowerOff[Power server off]; + DoBootAgentEnvironment[Boot agent]; + DoBootEnvironment[Boot environment]; + DoRegister[Register server]; + DoWipe[Wipe server]; + + %% Chart + + Start-->IsOn; + IsOn--Yes-->End; + IsOn--No-->DoPowerOn; + + DoPowerOn--->IsRegistered; + + IsRegistered--Yes--->IsAccepted; + IsRegistered--No--->DoBootAgentEnvironment-->DoRegister; + + DoRegister-->IsRegistered; + + IsAccepted--Yes--->IsAllocated; + IsAccepted--No--->End; + + IsAllocated--Yes--->DoBootEnvironment; + IsAllocated--No--->IsClean; + IsClean--No--->DoWipe-->DoPowerOff; + + IsClean--Yes--->DoPowerOff; + + DoBootEnvironment-->End; + + DoPowerOff-->End; +``` + +## Installation Flow + +```mermaid +graph TD; + Start(Start); + End(End); + + %% Decisions + + IsInstalled{Is installed}; + + %% Actions + + DoInstall[Install]; + DoReboot[Reboot]; + + %% Chart + + Start-->IsInstalled; + IsInstalled--Yes-->End; + IsInstalled--No-->DoInstall; + + DoInstall-->DoReboot; + + DoReboot-->IsInstalled; +``` diff --git a/docs/website/content/docs/v0.2/Guides/patching.md b/docs/website/content/docs/v0.2/Guides/patching.md new file mode 100644 index 000000000..d2efce468 --- /dev/null +++ b/docs/website/content/docs/v0.2/Guides/patching.md @@ -0,0 +1,58 @@ +--- +description: "A guide describing patching" +weight: 3 +--- + +# Patching + +Server resources can be updated by using the `configPatches` section of the custom resource. +Any field of the [Talos machine config](https://www.talos.dev/docs/v0.8/reference/configuration/) +can be overridden on a per-machine basis using this method. +The format of these patches is based on [JSON 6902](http://jsonpatch.com/) that you may be used to in tools like kustomize. + +Any patches specified in the server resource are processed by the Metal Metadata Server before it returns a Talos machine config for a given server at boot time. + +A set of patches may look like this: + +```yaml +apiVersion: metal.sidero.dev/v1alpha1 +kind: Server +metadata: + name: 00000000-0000-0000-0000-d05099d33360 +spec: + configPatches: + - op: replace + path: /machine/install + value: + disk: /dev/sda + - op: replace + path: /cluster/network/cni + value: + name: "custom" + urls: + - "http://192.168.1.199/assets/cilium.yaml" +``` + +## Testing Configuration Patches + +While developing config patches it is usually convenient to test generated config with patches +before actual server is provisioned with the config. + +This can be achieved by querying the metadata server endpoint directly: + +```sh +$ curl http://$PUBLIC_IP:9091/configdata?uuid=$SERVER_UUID +version: v1alpha1 +... +``` + +Replace `$PUBLIC_IP` with the Sidero IP address and `$SERVER_UUID` with the name of the `Server` to test +against. + +If metadata endpoint returns an error on applying JSON patches, make sure config subtree being patched +exists in the config. If it doesn't exist, create it with the `op: add` above the `op: replace` patch. + +## Combining Patches from Multiple Sources + +Config patches might be combined from multiple sources (`Server`, `ServerClass`), which is explained in details +in [Metadata](../../configuration/metadata/) section. diff --git a/docs/website/content/docs/v0.2/index.md b/docs/website/content/docs/v0.2/index.md new file mode 100644 index 000000000..bbe463500 --- /dev/null +++ b/docs/website/content/docs/v0.2/index.md @@ -0,0 +1,20 @@ +# Documentation + +Welcome to the Sidero documentation. + +## Community + +- Slack: Join our [slack channel](https://slack.dev.talos-systems.io) +- Forum: [community](https://groups.google.com/a/talos-systems.com/forum/#!forum/community) +- Twitter: [@talossystems](https://twitter.com/talossystems) +- Email: [info@talos-systems.com](mailto:info@talos-systems.com) + +If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you! +We hold a weekly meeting that all audiences are welcome to attend. + +### Office Hours + +- When: Mondays at 17:00 UTC. +- Where: [Google Meet](https://meet.google.com/day-pxhv-zky). + +You can subscribe to this meeting by joining the community forum above. diff --git a/docs/website/gridsome.config.js b/docs/website/gridsome.config.js index f1e19dadf..4d75fa641 100644 --- a/docs/website/gridsome.config.js +++ b/docs/website/gridsome.config.js @@ -20,7 +20,7 @@ module.exports = { github: "https://github.com/talos-systems/sidero", nav: { links: [ - { path: "/docs/v0.1/", title: "Docs" }, + { path: "/docs/v0.2/", title: "Docs" }, { path: "/releases/", title: "Releases" }, ], }, @@ -28,6 +28,12 @@ module.exports = { { version: "v0.1", url: "/docs/v0.1/", + latest: false, + prerelease: false, + }, + { + version: "v0.2", + url: "/docs/v0.2/", latest: true, prerelease: false, }, @@ -52,6 +58,7 @@ module.exports = { pathPrefix: "/docs", sidebarOrder: { "v0.1": ["Getting Started", "Configuration", "Guides"], + "v0.2": ["Getting Started", "Configuration", "Guides"], }, remark: { externalLinksTarget: "_blank",