diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 09604454e951..4f7fba778b59 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -68,6 +68,7 @@ const ( CoxEdgeProviderName = "coxedge" ProxmoxProviderName = "proxmox" K0smotronProviderName = "k0sproject-k0smotron" + IonosCloudProviderName = "ionoscloud-ionoscloud" ) // Bootstrap providers. @@ -307,6 +308,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/k0sproject/k0smotron/releases/latest/infrastructure-components.yaml", providerType: clusterctlv1.InfrastructureProviderType, }, + &provider{ + name: IonosCloudProviderName, + url: "https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/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 37a72bfb02dd..8aca04537428 100644 --- a/cmd/clusterctl/client/config_test.go +++ b/cmd/clusterctl/client/config_test.go @@ -85,6 +85,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.HivelocityProviderName, config.IBMCloudProviderName, config.InMemoryProviderName, + config.IonosCloudProviderName, config.K0smotronProviderName, config.KubeKeyProviderName, config.KubevirtProviderName, @@ -146,6 +147,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.HivelocityProviderName, config.IBMCloudProviderName, config.InMemoryProviderName, + config.IonosCloudProviderName, config.K0smotronProviderName, config.KubeKeyProviderName, config.KubevirtProviderName, diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index 5b0f9a74a3b4..0308bfd4a1d4 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -133,6 +133,7 @@ hetzner InfrastructureProvider https://github.com/syself/clust hivelocity-hivelocity InfrastructureProvider https://github.com/hivelocity/cluster-api-provider-hivelocity/releases/latest/ infrastructure-components.yaml ibmcloud InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud/releases/latest/ infrastructure-components.yaml in-memory InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ infrastructure-components-in-memory-development.yaml +ionoscloud-ionoscloud InfrastructureProvider https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/ infrastructure-components.yaml k0sproject-k0smotron InfrastructureProvider https://github.com/k0sproject/k0smotron/releases/latest/ infrastructure-components.yaml kubekey InfrastructureProvider https://github.com/kubesphere/kubekey/releases/latest/ infrastructure-components.yaml kubevirt InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt/releases/latest/ infrastructure-components.yaml @@ -277,6 +278,10 @@ var expectedOutputYaml = `- File: core_components.yaml Name: in-memory ProviderType: InfrastructureProvider URL: https://github.com/kubernetes-sigs/cluster-api/releases/latest/ +- File: infrastructure-components.yaml + Name: ionoscloud-ionoscloud + ProviderType: InfrastructureProvider + URL: https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/ - File: infrastructure-components.yaml Name: k0sproject-k0smotron ProviderType: InfrastructureProvider diff --git a/docs/book/src/reference/providers.md b/docs/book/src/reference/providers.md index cd598ae10af2..c7bad2e878c1 100644 --- a/docs/book/src/reference/providers.md +++ b/docs/book/src/reference/providers.md @@ -38,6 +38,7 @@ updated info about which API version they are supporting. - [Hetzner](https://github.com/syself/cluster-api-provider-hetzner) - [Hivelocity](https://github.com/hivelocity/cluster-api-provider-hivelocity) - [IBM Cloud](https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud) +- [IONOS Cloud](https://github.com/ionos-cloud/cluster-api-provider-ionoscloud) - [KubeKey](https://github.com/kubesphere/kubekey) - [KubeVirt](https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt) - [MAAS](https://github.com/spectrocloud/cluster-api-provider-maas) diff --git a/docs/book/src/user/quick-start.md b/docs/book/src/user/quick-start.md index 331cfdbe3bc7..42de5378da70 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,Equinix Metal,GCP,Hetzner,Hivelocity,IBM Cloud,K0smotron,KubeKey,KubeVirt,Metal3,Nutanix,OCI,OpenStack,Outscale,Proxmox,VCD,vcluster,Virtink,vSphere"}} +{{#tabs name:"tab-installation-infrastructure" tabs:"Akamai (Linode),AWS,Azure,CloudStack,DigitalOcean,Docker,Equinix Metal,GCP,Hetzner,Hivelocity,IBM Cloud,IONOS Cloud,K0smotron,KubeKey,KubeVirt,Metal3,Nutanix,OCI,OpenStack,Outscale,Proxmox,VCD,vcluster,Virtink,vSphere"}} {{#tab Akamai (Linode)}} ```bash @@ -603,6 +603,18 @@ export IBMCLOUD_API_KEY= clusterctl init --infrastructure ibmcloud ``` +{{#/tab }} +{{#tab IONOS Cloud}} + +The IONOS Cloud credentials are configured in the `IONOSCloudCluster`. +Therefore, there is no need to specify them during the provider initialization. + +```bash +clusterctl init --infrastructure ionoscloud-ionoscloud +``` + +For more information, please visit the [IONOS Cloud project][ionoscloud provider]. + {{#/tab }} {{#tab K0smotron}} @@ -861,7 +873,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,Equinix Metal,GCP,IBM Cloud,K0smotron,KubeKey,KubeVirt,Metal3,Nutanix,OpenStack,Outscale,Proxmox,Tinkerbell,VCD,vcluster,Virtink,vSphere"}} +{{#tabs name:"tab-configuration-infrastructure" tabs:"Akamai (Linode),AWS,Azure,CloudStack,DigitalOcean,Docker,Equinix Metal,GCP,IBM Cloud,IONOS Cloud,K0smotron,KubeKey,KubeVirt,Metal3,Nutanix,OpenStack,Outscale,Proxmox,Tinkerbell,VCD,vcluster,Virtink,vSphere"}} {{#tab Akamai (Linode)}} ```bash @@ -1072,6 +1084,29 @@ export IBMPOWERVS_NETWORK_NAME= Please visit the [IBM Cloud provider] for more information. +{{#/tab }} +{{#tab IONOS Cloud}} + +A ClusterAPI compatible image must be available in your IONOS Cloud contract. +For instructions on how to build a compatible Image, see [our docs](https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/blob/main/docs/custom-image.md). + +```bash +# The token which is used to authenticate against the IONOS Cloud API +export IONOS_TOKEN= +# The datacenter ID where the cluster will be deployed +export IONOSCLOUD_DATACENTER_ID="" +# The IP of the control plane endpoint +export CONTROL_PLANE_ENDPOINT_IP=10.10.10.4 +# The location of the data center where the cluster will be deployed +export CONTROL_PLANE_ENDPOINT_LOCATION=de/txl +# The image ID of the custom image that will be used for the VMs +export IONOSCLOUD_MACHINE_IMAGE_ID="" +# The SSH key that will be used to access the VMs +export IONOSCLOUD_MACHINE_SSH_KEYS="" +``` + +For more configuration options check our list of [available variables](https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/blob/main/docs/quickstart.md#environment-variables) + {{#/tab }} {{#tab K0smotron}} @@ -1753,6 +1788,7 @@ kind delete cluster [Hivelocity provider]: https://github.com/hivelocity/cluster-api-provider-hivelocity [IBM Cloud provider]: https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud [infrastructure provider]: ../reference/glossary.md#infrastructure-provider +[ionoscloud provider]: https://github.com/ionos-cloud/cluster-api-provider-ionoscloud [kind]: https://kind.sigs.k8s.io/ [KubeadmControlPlane]: ../developer/architecture/controllers/control-plane.md [kubectl]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ @@ -1771,4 +1807,4 @@ kind delete cluster [workload cluster]: ../reference/glossary.md#workload-cluster [CAPI Operator quickstart]: ./quick-start-operator.md [Proxmox getting started guide]: https://github.com/ionos-cloud/cluster-api-provider-proxmox/blob/main/docs/Usage.md -[Tinkerbell getting started guide]: https://github.com/tinkerbell/cluster-api-provider-tinkerbell/blob/main/docs/QUICK-START.md \ No newline at end of file +[Tinkerbell getting started guide]: https://github.com/tinkerbell/cluster-api-provider-tinkerbell/blob/main/docs/QUICK-START.md diff --git a/docs/book/theme/css/custom.css b/docs/book/theme/css/custom.css index 474f70b97717..c2afdcb9bec0 100644 --- a/docs/book/theme/css/custom.css +++ b/docs/book/theme/css/custom.css @@ -411,7 +411,11 @@ cite.literate-source > a::before { .tabset > input:nth-child(43):checked ~ .tab-panels > .tab-panel:nth-child(22), .tabset > input:nth-child(45):checked ~ .tab-panels > .tab-panel:nth-child(23), .tabset > input:nth-child(47):checked ~ .tab-panels > .tab-panel:nth-child(24), -.tabset > input:nth-child(49):checked ~ .tab-panels > .tab-panel:nth-child(25){ +.tabset > input:nth-child(49):checked ~ .tab-panels > .tab-panel:nth-child(25), +.tabset > input:nth-child(51):checked ~ .tab-panels > .tab-panel:nth-child(26), +.tabset > input:nth-child(53):checked ~ .tab-panels > .tab-panel:nth-child(27), +.tabset > input:nth-child(55):checked ~ .tab-panels > .tab-panel:nth-child(28), +.tabset > input:nth-child(57):checked ~ .tab-panels > .tab-panel:nth-child(29){ display: block; }