From 7edbd86d6be6c86688ecaaa29e6501701e21010f Mon Sep 17 00:00:00 2001 From: Simon Mayer Date: Mon, 25 Nov 2024 12:05:37 +0100 Subject: [PATCH 1/3] Add more information regarding gardener and metal-stack --- docs/src/overview/kubernetes.md | 109 ++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/docs/src/overview/kubernetes.md b/docs/src/overview/kubernetes.md index 65f7099bac..50d0659107 100644 --- a/docs/src/overview/kubernetes.md +++ b/docs/src/overview/kubernetes.md @@ -44,3 +44,112 @@ Due to the reason we use ignition in our operating system images for userdata, w ### machine-controller-manager-provider-metal Worker nodes are managed through Gardener's [machine-controller-manager](https://github.com/gardener/machine-controller-manager) (MCM). The MCM allows out-of-tree provider implementation via sidecar, which is what we implemented in the [machine-controller-manager-provider-metal](https://github.com/metal-stack/machine-controller-manager-provider-metal) repository. + + +## Gardener with metal-stack + +### Introduction into Gardener + +[Gardener](https://gardener.cloud/) is an open-source project and a system to manage Kubernetes clusters. Based on one cluster, other K8s clusters can be created by Gardener on many different cloud providers. + +### Gardener glossary + +At first, the most important Gardener terms are explained. More information can also be found in the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). + +**Garden Cluster** + +A dedicated Kubernetes cluster that the Gardener control plane runs in. The Kubernetes cluster can be setup e.g. with Kubespray. +The Garden cluster can also be used as seed cluster by deploying the Gardenlet into it. + +**Virtual Garden** + +Is a virtual cluster inside the Garden cluster. The virtual cluster is node less. Is is only a control plane node / cluster with the following components: + +- garden kube-apiserver +- etcd +- kube-controller-manager + +More details about the value of a virtual garden can be found in the description of [garden-setup](https://github.com/gardener/garden-setup/?tab=readme-ov-file#concept-the-virtual-cluster). + +**Gardener Control Plane Components** +The control plane components exist to manage the overall creation, modification and deletion of clusters. The components are the following: + +- Gardener API Server +- Gardener Controller Manager +- Gardener Scheduler +- Gardener Admission Controller + +The control plane components get deployed in the `garden cluster`. + +**Gardener Agent Component** +Gardener has an agent component: + +- Gardenlet + +The agent gets deployed in every seed cluster. + +**Soil** +The soil cluster is the host for other seeds. It is the initital seed cluster, that is used for spinning up shooted seeds. + +**Seed** +A cluster that hosts shoot cluster control planes as pods in order to manage shoot clusters. Taken from the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). + +**Shoot** +A Kubernetes runtime for the actual applications or services consisting of a shoot control plane running on the seed cluster and worker nodes hosting the actual workload. Taken from the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). + +--- + +### Initial Cluster Setup + +Before creating the `garden cluster`, a base K8s cluster need to be in place: +Some suggestions for the initial K8s cluster: + +- GCP/GKE +- metalstack.cloud +- Kubespray + +**Initial Cluster on GCP** + +- A GCP account need to be in place +- Ansible [GCP auth role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-auth) can be used for authenticating against GCP +- Ansible [GCP create cluster role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-create) can be used for creating the GCP cluster. + +Suggestions for default values are: + - `gcp_machine_type`: e2-standard-8 + - `gcp_autoscaling_min_nodes`: 1 + - `gcp_autoscaling_max_nodes`: 3 + +**Initial Cluster on metalstack.cloud** + +- A Kubernetes cluster can be created on [metalstack.cloud](https://metalstack.cloud/de/documentation/UserManual#creating-a-cluster) via UI, CLI or Terraform + +**Initial Cluster on a dedicated host via Kubespray** + +- Could be done with Ansible and the default values for a cluster provided by [Kubespray](https://github.com/kubernetes-sigs/kubespray/blob/master/playbooks/cluster.yml) + +### metal-stack Setup + +> **Attention:** Bootstrapping a meta-stack partition is out of scope and need to be done before focusing on the relationship between metal-stack and Gardener. This guide assumes a metal-stack partition (servers, switches, network, ...) is already in place. + +Start by deploying: + +- `ingress-nginx-controller` +- `cert-manager` + +This guide assumes, that metal-stack gets deployed on the same initial cluster as Gardener. On the initial cluster, the metal-stack control plane need to be deployed. This can be done as described in the metal-stack [documentation](https://docs.metal-stack.io/stable/installation/deployment/#Metal-Control-Plane-Deployment). + +### Garden Cluster Setup + +After setting up the initial K8s cluster and metal-stack, Gardener can be deployed with the [Gardener Ansible role](https://github.com/metal-stack/metal-roles/tree/master/control-plane/roles/gardener). +This deploys the following components: + + - virtual garden + - Gardener control plane components + - soil cluster + - managed seed cluster (into the metal-stack partition) + +In summary, this results in the following: + + - `Garden cluster` created in the initial cluster + - `soil cluster` created in the initial cluster. This will be the `initial seed` used for spinning up `shooted seeds` in the metal-stack partition + - `shooted seed` inside the metal-stack partition, where all `shoots` are derived from From 4cad6b6a77e9215b4534e89e5dca28c1c594eaf6 Mon Sep 17 00:00:00 2001 From: Simon Mayer Date: Wed, 11 Dec 2024 16:43:58 +0100 Subject: [PATCH 2/3] Implement review --- docs/src/overview/kubernetes.md | 87 ++++++++++++++++----------------- 1 file changed, 41 insertions(+), 46 deletions(-) diff --git a/docs/src/overview/kubernetes.md b/docs/src/overview/kubernetes.md index 50d0659107..2a8664663e 100644 --- a/docs/src/overview/kubernetes.md +++ b/docs/src/overview/kubernetes.md @@ -1,21 +1,23 @@ # Kubernetes Integration -With the help of the [Gardener](https://gardener.cloud/) project, metal-stack can be used for spinning up Kubernetes clusters quickly and reliably on bare metal machines. - -To make this happen, we implemented a couple of components, which are described here. +metal-stack can also be used as a basis for provisioning Kubernetes clusters. ```@contents Pages = ["kubernetes.md"] Depth = 5 ``` -## metal-ccm +## metal-stack Components for Kubernetes Integration + +The following two components are provided from metal-stack to make the cluster creation possible. + +### metal-ccm CCM stands for [cloud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) and is the bridge between Kubernetes and a cloud-provider. We implemented the [cloud provider interface](https://github.com/kubernetes/cloud-provider/blob/master/cloud.go) in the [metal-ccm](https://github.com/metal-stack/metal-ccm) repository. With the help of the cloud-controller-controller we provide metal-stack-specific properties for Kubernetes clusters, e.g. load balancer configuration through MetalLB or node properties. -## firewall-controller +### firewall-controller To make the firewalls created with metal-stack easily configurable through Kubernetes resources, we add our [firewall-controller](https://github.com/metal-stack/firewall-controller) to the firewall image. The controller watches special CRDs, enabling users to manage: @@ -25,53 +27,29 @@ To make the firewalls created with metal-stack easily configurable through Kuber Please check out the [guide](../external/firewall-controller/README.md) on how to use it. -## Gardener components - -There are some Gardener resources that need be reconciled when you act as a cloud provider for the Gardener. This section briefly describes the controllers implemented for deploying Kubernetes clusters through Gardener. - -If you want to learn how to deploy metal-stack with Gardener, please check out the [installation](../installation/deployment.md#Gardener-with-metal-stack-1) section. - -### gardener-extension-provider-metal - -The [gardener-extension-provider-metal](https://github.com/metal-stack/gardener-extension-provider-metal) contains of a set of webhooks and controllers for reconciling or mutating Gardener-specific resources. - -The project also contains a validator for metal-type Gardener resources, which you should also deploy in case you want to use metal-stack in combination with Gardener. - -### os-metal-extension - -Due to the reason we use ignition in our operating system images for userdata, we had to provide an own extension controller for metal-stack, which you can find at Github in the [os-metal-extension](https://github.com/metal-stack/os-metal-extension) repository. - -### machine-controller-manager-provider-metal - -Worker nodes are managed through Gardener's [machine-controller-manager](https://github.com/gardener/machine-controller-manager) (MCM). The MCM allows out-of-tree provider implementation via sidecar, which is what we implemented in the [machine-controller-manager-provider-metal](https://github.com/metal-stack/machine-controller-manager-provider-metal) repository. - - ## Gardener with metal-stack -### Introduction into Gardener - -[Gardener](https://gardener.cloud/) is an open-source project and a system to manage Kubernetes clusters. Based on one cluster, other K8s clusters can be created by Gardener on many different cloud providers. - -### Gardener glossary +With the help of the [Gardener](https://gardener.cloud/) project, metal-stack can be used for spinning up Kubernetes clusters quickly and reliably on bare metal machines. Gardener is an open-source project and a system to manage Kubernetes clusters. Based on one cluster, other K8s clusters can be created by Gardener on many different cloud providers. At first, the most important Gardener terms are explained. More information can also be found in the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). **Garden Cluster** -A dedicated Kubernetes cluster that the Gardener control plane runs in. The Kubernetes cluster can be setup e.g. with Kubespray. +A dedicated Kubernetes cluster that the Gardener control plane runs in. The Kubernetes cluster can be setup e.g. on metalstack.cloud or GCP. The Garden cluster can also be used as seed cluster by deploying the Gardenlet into it. **Virtual Garden** -Is a virtual cluster inside the Garden cluster. The virtual cluster is node less. Is is only a control plane node / cluster with the following components: +A virtual cluster inside the Garden cluster. The virtual cluster is node less. Is is only a control plane node / cluster with the following components: - garden kube-apiserver - etcd - kube-controller-manager -More details about the value of a virtual garden can be found in the description of [garden-setup](https://github.com/gardener/garden-setup/?tab=readme-ov-file#concept-the-virtual-cluster). +More details about the virtual garden can be found in the description of [`gardener-operator`](https://github.com/gardener/gardener/blob/master/docs/concepts/operator.md). **Gardener Control Plane Components** + The control plane components exist to manage the overall creation, modification and deletion of clusters. The components are the following: - Gardener API Server @@ -82,6 +60,7 @@ The control plane components exist to manage the overall creation, modification The control plane components get deployed in the `garden cluster`. **Gardener Agent Component** + Gardener has an agent component: - Gardenlet @@ -89,15 +68,36 @@ Gardener has an agent component: The agent gets deployed in every seed cluster. **Soil** -The soil cluster is the host for other seeds. It is the initital seed cluster, that is used for spinning up shooted seeds. + +The soil cluster is a cluster in which the Gardenlet was deployed. However, Gardener or the functionality was not used for this. It is used for spinning up shooted seeds. **Seed** + A cluster that hosts shoot cluster control planes as pods in order to manage shoot clusters. Taken from the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). **Shoot** + A Kubernetes runtime for the actual applications or services consisting of a shoot control plane running on the seed cluster and worker nodes hosting the actual workload. Taken from the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). ---- +### Gardener Components + +There are some Gardener resources that need to be reconciled when you act as a cloud provider for the Gardener. This section briefly describes the controllers implemented for deploying Kubernetes clusters through Gardener. + +If you want to learn how to deploy metal-stack with Gardener, please check out the [installation](../installation/deployment.md#Gardener-with-metal-stack-1) section. + +#### gardener-extension-provider-metal + +The [gardener-extension-provider-metal](https://github.com/metal-stack/gardener-extension-provider-metal) contains of a set of webhooks and controllers for reconciling or mutating Gardener-specific resources. + +The project also contains a validator for metal-type Gardener resources, which you should also deploy in case you want to use metal-stack in combination with Gardener. + +#### os-metal-extension + +Due to the reason we use ignition in our operating system images for userdata, we had to provide an own extension controller for metal-stack, which you can find at Github in the [os-metal-extension](https://github.com/metal-stack/os-metal-extension) repository. + +#### machine-controller-manager-provider-metal + +Worker nodes are managed through Gardener's [machine-controller-manager](https://github.com/gardener/machine-controller-manager) (MCM). The MCM allows out-of-tree provider implementation via sidecar, which is what we implemented in the [machine-controller-manager-provider-metal](https://github.com/metal-stack/machine-controller-manager-provider-metal) repository. ### Initial Cluster Setup @@ -106,9 +106,8 @@ Some suggestions for the initial K8s cluster: - GCP/GKE - metalstack.cloud -- Kubespray -**Initial Cluster on GCP** +#### Initial Cluster on GCP: - A GCP account need to be in place - Ansible [GCP auth role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-auth) can be used for authenticating against GCP @@ -119,17 +118,13 @@ Suggestions for default values are: - `gcp_autoscaling_min_nodes`: 1 - `gcp_autoscaling_max_nodes`: 3 -**Initial Cluster on metalstack.cloud** +#### Initial Cluster on metalstack.cloud: - A Kubernetes cluster can be created on [metalstack.cloud](https://metalstack.cloud/de/documentation/UserManual#creating-a-cluster) via UI, CLI or Terraform -**Initial Cluster on a dedicated host via Kubespray** - -- Could be done with Ansible and the default values for a cluster provided by [Kubespray](https://github.com/kubernetes-sigs/kubespray/blob/master/playbooks/cluster.yml) - ### metal-stack Setup -> **Attention:** Bootstrapping a meta-stack partition is out of scope and need to be done before focusing on the relationship between metal-stack and Gardener. This guide assumes a metal-stack partition (servers, switches, network, ...) is already in place. +> **Attention:** Bootstrapping a metal-stack partition is out of scope and need to be done before focusing on the relationship between metal-stack and Gardener. This guide assumes a metal-stack partition (servers, switches, network, ...) is already in place. Start by deploying: @@ -138,7 +133,7 @@ Start by deploying: This guide assumes, that metal-stack gets deployed on the same initial cluster as Gardener. On the initial cluster, the metal-stack control plane need to be deployed. This can be done as described in the metal-stack [documentation](https://docs.metal-stack.io/stable/installation/deployment/#Metal-Control-Plane-Deployment). -### Garden Cluster Setup +#### Garden Cluster Setup After setting up the initial K8s cluster and metal-stack, Gardener can be deployed with the [Gardener Ansible role](https://github.com/metal-stack/metal-roles/tree/master/control-plane/roles/gardener). This deploys the following components: @@ -152,4 +147,4 @@ In summary, this results in the following: - `Garden cluster` created in the initial cluster - `soil cluster` created in the initial cluster. This will be the `initial seed` used for spinning up `shooted seeds` in the metal-stack partition - - `shooted seed` inside the metal-stack partition, where all `shoots` are derived from + - `shooted seed` inside the metal-stack partition, where all `shoots` are derived from \ No newline at end of file From 8da82ec55d49c9a18f0db2e828d0aa1a8285f808 Mon Sep 17 00:00:00 2001 From: Gerrit Date: Mon, 13 Jan 2025 09:05:52 +0100 Subject: [PATCH 3/3] Further suggestions for Gardener docs. (#237) --- docs/src/overview/kubernetes.md | 87 +++++++++++++++++---------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/docs/src/overview/kubernetes.md b/docs/src/overview/kubernetes.md index 2a8664663e..c54792af0f 100644 --- a/docs/src/overview/kubernetes.md +++ b/docs/src/overview/kubernetes.md @@ -1,6 +1,6 @@ # Kubernetes Integration -metal-stack can also be used as a basis for provisioning Kubernetes clusters. +One of the main motivations for starting with metal-stack was to use it as a foundation for provisioning Kubernetes clusters. In this chapter, we explain how we integrated metal-stack to set up fully automated provisioning of Kubernetes clusters, including autoscaling capabilities. ```@contents Pages = ["kubernetes.md"] @@ -9,7 +9,7 @@ Depth = 5 ## metal-stack Components for Kubernetes Integration -The following two components are provided from metal-stack to make the cluster creation possible. +The following components are generic, meaning that they are independent of the chosen Kubernetes orchestration engine. ### metal-ccm @@ -27,73 +27,74 @@ To make the firewalls created with metal-stack easily configurable through Kuber Please check out the [guide](../external/firewall-controller/README.md) on how to use it. -## Gardener with metal-stack +## Gardener -With the help of the [Gardener](https://gardener.cloud/) project, metal-stack can be used for spinning up Kubernetes clusters quickly and reliably on bare metal machines. Gardener is an open-source project and a system to manage Kubernetes clusters. Based on one cluster, other K8s clusters can be created by Gardener on many different cloud providers. +[Gardener](https://gardener.cloud/) is an open source project for orchestrated Kubernetes cluster provisioning. It supports many different cloud providers, metal-stack being one of them. Using the Gardener project, metal-stack can act as a machine provider for Kubernetes worker nodes. -At first, the most important Gardener terms are explained. More information can also be found in the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). +The idea behind the Gardener project is to start with a dedicated set of Kubernetes clusters (this can be a single cluster, too), which are used to host Kubernetes control planes for new Kubernetes clusters. The new Kubernetes control planes reside in dedicated namespaces of the initial clusters ("Kubernetes in Kubernetes" or "underlay / overlay Kubernetes"). Where initial clusters come from is the subject of a larger debate, with suggestions made in a later section of this document. -**Garden Cluster** +Gardener's architecture is designed for multi-tenant environments, with a strong distinction between the operator and the end users. In Gardener, Kubernetes control planes for different tenants may reside in the same operator cluster. This approach makes it very suitable for being used with bare metal because it allows taking full advantage of the server resources. Another implication is that end users do not have access to their control plane components, such as the kube-apiserver or the ETCD. These are managed by the operator and in case of metal-stack even physically divided from the end user's workload. -A dedicated Kubernetes cluster that the Gardener control plane runs in. The Kubernetes cluster can be setup e.g. on metalstack.cloud or GCP. -The Garden cluster can also be used as seed cluster by deploying the Gardenlet into it. +Gardener allocates machines from a cloud provider and automatically deploys a kubelet to those nodes, which then joins the appropriate control plane. Operators can also nest clusters so that newly provisioned clusters can be used to spin up more clusters, leading to nearly infinite scalability (also known as "kubeception" model). -**Virtual Garden** +### Terminology -A virtual cluster inside the Garden cluster. The virtual cluster is node less. Is is only a control plane node / cluster with the following components: +We would like to explain the most important Gardener terms. The terminology used in the Gardener project has many similarities to the architecture of Kubernetes. Additional information can also be found in the [official glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). -- garden kube-apiserver -- etcd -- kube-controller-manager +#### Garden Cluster -More details about the virtual garden can be found in the description of [`gardener-operator`](https://github.com/gardener/gardener/blob/master/docs/concepts/operator.md). +The Garden Cluster is a Kubernetes cluster that runs the Gardener Control Plane. -**Gardener Control Plane Components** - -The control plane components exist to manage the overall creation, modification and deletion of clusters. The components are the following: +The control plane components introduce dedicated Kubernetes API resources for provisioning new Kubernetes clusters with the Gardener. It also takes care of the validation for many of those Gardener API resources and also reconciling some of them. The components are the following: - Gardener API Server - Gardener Controller Manager - Gardener Scheduler - Gardener Admission Controller -The control plane components get deployed in the `garden cluster`. +The control plane components can be deployed in the Garden Cluster through the Gardener Operator. -**Gardener Agent Component** +The Garden cluster can also be used as [seed](#seeds-and-soils) cluster. -Gardener has an agent component: +#### Virtual Garden -- Gardenlet +A recommended way to deploy the Gardener is running a "virtual cluster" inside the Garden cluster. It is basically a Kubernetes control plane without any worker nodes, providing the Kubernetes API in an own ETCD. Its purpose is to store all Gardener resources (such that they reside inside a dedicated ETCD) and provide an individual update lifecycle from the Garden Cluster. End users can have access to own project namespaces in the virtual garden, too. -The agent gets deployed in every seed cluster. +The virtual garden consists of the following components: -**Soil** +- garden kube-apiserver +- etcd +- kube-controller-manager + +More details about the virtual garden can be found in the description of [`gardener-operator`](https://github.com/gardener/gardener/blob/master/docs/concepts/operator.md). -The soil cluster is a cluster in which the Gardenlet was deployed. However, Gardener or the functionality was not used for this. It is used for spinning up shooted seeds. +#### Seeds and Soils -**Seed** +A seed cluster is a cluster in which an agent component called the `Gardenlet` is running. The gardenlet is connected to the Gardener Control Plane and is responsible for orchestrating the provisioning of new clusters inside the seed cluster. The control plane components for the new clusters run as pods in the seed cluster. -A cluster that hosts shoot cluster control planes as pods in order to manage shoot clusters. Taken from the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). +A seed cluster can also be called a soil if the Gardenlet has been manually deployed by the operator and not by the Gardener. Clusters created on the soil can be turned into seed clusters by the operator using a Gardener resource called `ManagedSeed`. This resource causes Gardener to automatically deploy the Gardenlet to the new cluster, such that the resulting cluster is not called a soil. -**Shoot** +#### Shoot -A Kubernetes runtime for the actual applications or services consisting of a shoot control plane running on the seed cluster and worker nodes hosting the actual workload. Taken from the [glossary](https://github.com/gardener/documentation/blob/master/website/documentation/glossary/_index.md). +Every Kubernetes cluster that is fully provisioned and managed by Gardener is called a `Shoot` cluster. It consists of the shoot control plane running on the seed cluster and worker nodes running the actual workload. -### Gardener Components +### Gardener Integration Components -There are some Gardener resources that need to be reconciled when you act as a cloud provider for the Gardener. This section briefly describes the controllers implemented for deploying Kubernetes clusters through Gardener. +During the provisioning flow of a cluster, Gardener emits resources that are expected to be reconciled by controllers of a cloud provider. This section briefly describes the controllers implemented by metal-stack to allow the creation of a Kubernetes cluster on metal-stack infrastructure. If you want to learn how to deploy metal-stack with Gardener, please check out the [installation](../installation/deployment.md#Gardener-with-metal-stack-1) section. #### gardener-extension-provider-metal -The [gardener-extension-provider-metal](https://github.com/metal-stack/gardener-extension-provider-metal) contains of a set of webhooks and controllers for reconciling or mutating Gardener-specific resources. +The [gardener-extension-provider-metal](https://github.com/metal-stack/gardener-extension-provider-metal) contains of a set of webhooks and controllers for reconciling cloud provider specific resources of `type: Metal`, which created by Gardener during the cluster provisioning flow. -The project also contains a validator for metal-type Gardener resources, which you should also deploy in case you want to use metal-stack in combination with Gardener. +Primarily, its purpose is to reconcile `Infrastructure`, `ControlPlane`, and `Worker` resources. + +The project also introduces an own API (`ProviderConfiguration` resources) and consists of an admission-controller to validate them. This admission controller should be deployed in the Gardener control plane cluster. #### os-metal-extension -Due to the reason we use ignition in our operating system images for userdata, we had to provide an own extension controller for metal-stack, which you can find at Github in the [os-metal-extension](https://github.com/metal-stack/os-metal-extension) repository. +Due to the reason metal-stack initially used ignition to provision operating system images (today, cloud-init is supported as well) there is an implementation of a controller that translates the generic `OperatingSystemConfig` format of Gardener into ignition userdata. It can be found on Github in the [os-metal-extension](https://github.com/metal-stack/os-metal-extension) repository. #### machine-controller-manager-provider-metal @@ -101,26 +102,27 @@ Worker nodes are managed through Gardener's [machine-controller-manager](https:/ ### Initial Cluster Setup -Before creating the `garden cluster`, a base K8s cluster need to be in place: -Some suggestions for the initial K8s cluster: +Before creating the `garden cluster`, a base K8s cluster needs to be in place. +Some suggestions for the initial K8s cluster are: - GCP/GKE - metalstack.cloud -#### Initial Cluster on GCP: +#### Initial Cluster on GCP -- A GCP account need to be in place -- Ansible [GCP auth role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-auth) can be used for authenticating against GCP -- Ansible [GCP create cluster role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-create) can be used for creating the GCP cluster. +- A GCP account needs to be in place. +- The Ansible [gcp-auth role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-auth) can be used for authenticating against GCP. +- The Ansible [gcp-create role](https://github.com/metal-stack/ansible-common/tree/master/roles/gcp-create) can be used for creating a GKE cluster. Suggestions for default values are: + - `gcp_machine_type`: e2-standard-8 - `gcp_autoscaling_min_nodes`: 1 - `gcp_autoscaling_max_nodes`: 3 -#### Initial Cluster on metalstack.cloud: +#### Initial Cluster on metalstack.cloud -- A Kubernetes cluster can be created on [metalstack.cloud](https://metalstack.cloud/de/documentation/UserManual#creating-a-cluster) via UI, CLI or Terraform +- A Kubernetes cluster can be created on [metalstack.cloud](https://metalstack.cloud/de/documentation/UserManual#creating-a-cluster) via UI, CLI or Terraform. ### metal-stack Setup @@ -136,6 +138,7 @@ This guide assumes, that metal-stack gets deployed on the same initial cluster a #### Garden Cluster Setup After setting up the initial K8s cluster and metal-stack, Gardener can be deployed with the [Gardener Ansible role](https://github.com/metal-stack/metal-roles/tree/master/control-plane/roles/gardener). + This deploys the following components: - virtual garden @@ -147,4 +150,4 @@ In summary, this results in the following: - `Garden cluster` created in the initial cluster - `soil cluster` created in the initial cluster. This will be the `initial seed` used for spinning up `shooted seeds` in the metal-stack partition - - `shooted seed` inside the metal-stack partition, where all `shoots` are derived from \ No newline at end of file + - `shooted seed` inside the metal-stack partition, where all `shoots` are derived from