diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 28cf055069df..8c4d00c243fe 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -73,6 +73,7 @@ const ( VultrProviderName = "vultr-vultr" OpenNebulaProviderName = "opennebula" ScalewayProviderName = "scaleway" + MetalStackProviderName = "metal-stack" ) // Bootstrap providers. @@ -342,6 +343,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/scaleway/cluster-api-provider-scaleway/releases/latest/infrastructure-components.yaml", providerType: clusterctlv1.InfrastructureProviderType, }, + &provider{ + name: MetalStackProviderName, + url: "https://github.com/metal-stack/cluster-api-provider-metal-stack/releases/latest/infrastructure-components.yaml", + providerType: clusterctlv1.InfrastructureProviderType, + }, // Bootstrap providers &provider{ diff --git a/cmd/clusterctl/client/config_test.go b/cmd/clusterctl/client/config_test.go index f2ec768ec32c..557271af405c 100644 --- a/cmd/clusterctl/client/config_test.go +++ b/cmd/clusterctl/client/config_test.go @@ -92,6 +92,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.KubevirtProviderName, config.LinodeProviderName, config.MAASProviderName, + config.MetalStackProviderName, config.Metal3ProviderName, config.NestedProviderName, config.NutanixProviderName, @@ -163,6 +164,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.KubevirtProviderName, config.LinodeProviderName, config.MAASProviderName, + config.MetalStackProviderName, config.Metal3ProviderName, config.NestedProviderName, config.NutanixProviderName, diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index 54b3dbb3c20f..cd504714d0b7 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -137,6 +137,7 @@ kubekey InfrastructureProvider https://github.com/kubesphere kubevirt InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt/releases/latest/ infrastructure-components.yaml linode-linode InfrastructureProvider https://github.com/linode/cluster-api-provider-linode/releases/latest/ infrastructure-components.yaml maas InfrastructureProvider https://github.com/spectrocloud/cluster-api-provider-maas/releases/latest/ infrastructure-components.yaml +metal-stack InfrastructureProvider https://github.com/metal-stack/cluster-api-provider-metal-stack/releases/latest/ infrastructure-components.yaml metal3 InfrastructureProvider https://github.com/metal3-io/cluster-api-provider-metal3/releases/latest/ infrastructure-components.yaml my-infra-provider InfrastructureProvider /home/.config/cluster-api/overrides/infrastructure-docker/latest/ infrastructure-components.yaml nested InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-nested/releases/latest/ infrastructure-components.yaml @@ -315,6 +316,10 @@ var expectedOutputYaml = `- File: core_components.yaml Name: maas ProviderType: InfrastructureProvider URL: https://github.com/spectrocloud/cluster-api-provider-maas/releases/latest/ +- File: infrastructure-components.yaml + Name: metal-stack + ProviderType: InfrastructureProvider + URL: https://github.com/metal-stack/cluster-api-provider-metal-stack/releases/latest/ - File: infrastructure-components.yaml Name: metal3 ProviderType: InfrastructureProvider diff --git a/docs/book/src/developer/providers/contracts/clusterctl.md b/docs/book/src/developer/providers/contracts/clusterctl.md index e6f0a1dee08a..f2fd9de61b56 100644 --- a/docs/book/src/developer/providers/contracts/clusterctl.md +++ b/docs/book/src/developer/providers/contracts/clusterctl.md @@ -131,7 +131,7 @@ A provider url should be in the form * The components YAML, the metadata YAML and eventually the workload cluster templates are included into the same package version See the [GitLab docs](https://docs.gitlab.com/ee/user/packages/generic_packages/) for more information -about how to create a generic package. +about how to create a generic package. If you are hosting a private Gitlab repository, you can use a [personal access token](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) or [project access token](https://docs.gitlab.com/user/project/settings/project_access_tokens.html) to access the provider artifacts by adding the `gitlab-access-token` variable to the `clusterctl` configuration in order to authenticate against the GitLab API. @@ -350,6 +350,7 @@ providers. | CAPKK | cluster.x-k8s.io/provider=infrastructure-kubekey | | CAPK | cluster.x-k8s.io/provider=infrastructure-kubevirt | | CAPM3 | cluster.x-k8s.io/provider=infrastructure-metal3 | +| CAPMS | cluster.x-k8s.io/provider=infrastructure-metal-stack | | CAPN | cluster.x-k8s.io/provider=infrastructure-nested | | CAPONE | cluster.x-k8s.io/provider=infrastructure-opennebula | | CAPO | cluster.x-k8s.io/provider=infrastructure-openstack | diff --git a/docs/book/src/reference/glossary.md b/docs/book/src/reference/glossary.md index 44210e338e17..3b1b4ccc4d37 100644 --- a/docs/book/src/reference/glossary.md +++ b/docs/book/src/reference/glossary.md @@ -78,6 +78,9 @@ Cluster API Provider Akamai (Linode) ### CAPM3 Cluster API Provider Metal3 +### CAPMS +Cluster API Provider metal-stack + ### CAPN Cluster API Provider Nested diff --git a/docs/book/src/reference/providers.md b/docs/book/src/reference/providers.md index 1aa5ce5fabd2..ab7046568fa6 100644 --- a/docs/book/src/reference/providers.md +++ b/docs/book/src/reference/providers.md @@ -7,7 +7,7 @@ by SIG Cluster Lifecycle as well as providers from other open-source repositorie Each provider is the responsibility of the respective maintainers and we highly recommend everyone interested in a specific provider to engage with the corresponding team to show support, share use cases, -learn more about the other users of the same provider. +learn more about the other users of the same provider. We also recommend to read provider's documentation carefully, test it, and perform a proper due diligence before deciding to use a provider in production, like you will do for any other open source project. @@ -59,6 +59,7 @@ source of inspiration and ideas for others. - [KubeVirt](https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt) - [MAAS](https://github.com/spectrocloud/cluster-api-provider-maas) - [Metal3](https://github.com/metal3-io/cluster-api-provider-metal3) +- [metal-stack](https://github.com/metal-stack/cluster-api-provider-metal-stack) - [Microvm](https://github.com/liquidmetal-dev/cluster-api-provider-microvm) - [Nested](https://github.com/kubernetes-sigs/cluster-api-provider-nested) - [Nutanix](https://github.com/nutanix-cloud-native/cluster-api-provider-nutanix) diff --git a/docs/book/src/user/quick-start.md b/docs/book/src/user/quick-start.md index 89cd3971f923..a49449c019d0 100644 --- a/docs/book/src/user/quick-start.md +++ b/docs/book/src/user/quick-start.md @@ -281,7 +281,7 @@ Additional documentation about experimental features can be found in [Experiment Depending on the infrastructure provider you are planning to use, some additional prerequisites should be satisfied before getting started with Cluster API. See below for the expected settings for common providers. -{{#tabs name:"tab-installation-infrastructure" tabs:"Akamai (Linode),AWS,Azure,CloudStack,DigitalOcean,Docker,GCP,Harvester,Hetzner,Hivelocity,Huawei,IBM Cloud,IONOS Cloud,K0smotron,KubeKey,KubeVirt,Metal3,Nutanix,OCI,OpenNebula,OpenStack,Outscale,Proxmox,Scaleway,VCD,vcluster,Virtink,vSphere,Vultr"}} +{{#tabs name:"tab-installation-infrastructure" tabs:"Akamai (Linode),AWS,Azure,CloudStack,DigitalOcean,Docker,GCP,Harvester,Hetzner,Hivelocity,Huawei,IBM Cloud,IONOS Cloud,K0smotron,KubeKey,KubeVirt,Metal3,metal-stack,Nutanix,OCI,OpenNebula,OpenStack,Outscale,Proxmox,Scaleway,VCD,vcluster,Virtink,vSphere,Vultr"}} {{#tab Akamai (Linode)}} ```bash @@ -705,6 +705,15 @@ clusterctl init --infrastructure kubevirt Please visit the [Metal3 project][Metal3 provider]. +{{#/tab }} +{{#tab metal-stack}} + +```bash +clusterctl init --infrastructure metal-stack +``` + +Please follow the Cluster API Provider for [metal-stack Getting Started Guide](https://metal-stack.io/docs/references/cluster-api-provider-metal-stack#getting-started) + {{#/tab }} {{#tab Nutanix}} @@ -911,7 +920,7 @@ before configuring a cluster with Cluster API. Instructions are provided for com Otherwise, you can look at the `clusterctl generate cluster` [command][clusterctl generate cluster] documentation for details about how to discover the list of variables required by a cluster templates. -{{#tabs name:"tab-configuration-infrastructure" tabs:"Akamai (Linode),AWS,Azure,CloudStack,DigitalOcean,Docker,GCP,Harvester,Huawei,IBM Cloud,IONOS Cloud,K0smotron,KubeKey,KubeVirt,Metal3,Nutanix,OpenNebula,OpenStack,Outscale,Proxmox,Scaleway,Tinkerbell,VCD,vcluster,Virtink,vSphere,Vultr"}} +{{#tabs name:"tab-configuration-infrastructure" tabs:"Akamai (Linode),AWS,Azure,CloudStack,DigitalOcean,Docker,GCP,Harvester,Huawei,IBM Cloud,IONOS Cloud,K0smotron,KubeKey,KubeVirt,Metal3,metal-stack,Nutanix,OpenNebula,OpenStack,Outscale,Proxmox,Scaleway,Tinkerbell,VCD,vcluster,Virtink,vSphere,Vultr"}} {{#tab Akamai (Linode)}} ```bash @@ -1208,7 +1217,7 @@ Please visit the [KubeKey provider] for more information. {{#/tab }} {{#tab KubeVirt}} -In this example, we'll use the image for Kubernetes v1.32.1: +In this example, we'll use the image for Kubernetes v1.32.1: ```bash export NODE_VM_IMAGE_TEMPLATE="quay.io/capk/ubuntu-2404-container-disk:v1.32.1" export CAPK_GUEST_K8S_VERSION="${NODE_VM_IMAGE_TEMPLATE/*:/}" @@ -1220,8 +1229,8 @@ Please visit the [KubeVirt project][KubeVirt provider] for more information.

Note

-Find additional images under [quay.io/capk/ubuntu-2404-container-disk](https://quay.io/capk/ubuntu-2404-container-disk), -[quay.io/capk/ubuntu-2204-container-disk](https://quay.io/capk/ubuntu-2204-container-disk), +Find additional images under [quay.io/capk/ubuntu-2404-container-disk](https://quay.io/capk/ubuntu-2404-container-disk), +[quay.io/capk/ubuntu-2204-container-disk](https://quay.io/capk/ubuntu-2204-container-disk), or [quay.io/capk/ubuntu-2004-container-disk](https://quay.io/capk/ubuntu-2004-container-disk). Alternatively, create your own image; see [here](https://github.com/kubernetes-sigs/image-builder). @@ -1257,6 +1266,25 @@ export IRONIC_INSPECTOR_NO_BASIC_AUTH=true Please visit the [Metal3 getting started guide] for more details. +{{#/tab }} +{{#tab metal-stack}} + +```bash +export METAL_PARTITION= +export METAL_PROJECT_ID= +export CONTROL_PLANE_IP= + +export FIREWALL_MACHINE_IMAGE= +export FIREWALL_MACHINE_SIZE= + +export CONTROL_PLANE_MACHINE_IMAGE= +export CONTROL_PLANE_MACHINE_SIZE= +export WORKER_MACHINE_IMAGE= +export WORKER_MACHINE_SIZE= +``` + +Please visit the [metal-stack getting started guide](https://metal-stack.io/docs/references/cluster-api-provider-metal-stack#getting-started) for more details. + {{#/tab }} {{#tab Nutanix}} @@ -2018,6 +2046,7 @@ kind delete cluster [management cluster]: ../reference/glossary.md#management-cluster [Metal3 getting started guide]: https://github.com/metal3-io/cluster-api-provider-metal3/blob/main/docs/getting-started.md [Metal3 provider]: https://github.com/metal3-io/cluster-api-provider-metal3/ +[metal-stack provider]: https://github.com/metal-stack/cluster-api-provider-metal-stack/ [K0smotron provider]: https://github.com/k0sproject/k0smotron [KubeKey provider]: https://github.com/kubesphere/kubekey [KubeVirt provider]: https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt/