Skip to content

Commit 89624b5

Browse files
authored
🌱 Add ionoscloud provider (#10767)
* add ionoscloud provider * add docs for IONOS Cloud * fix typo * add github org to provider name * update tests and docs * improve docs * add docs for environment variables
1 parent 5b6043e commit 89624b5

File tree

6 files changed

+58
-4
lines changed

6 files changed

+58
-4
lines changed

cmd/clusterctl/client/config/providers_client.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const (
6868
CoxEdgeProviderName = "coxedge"
6969
ProxmoxProviderName = "proxmox"
7070
K0smotronProviderName = "k0sproject-k0smotron"
71+
IonosCloudProviderName = "ionoscloud-ionoscloud"
7172
)
7273

7374
// Bootstrap providers.
@@ -307,6 +308,11 @@ func (p *providersClient) defaults() []Provider {
307308
url: "https://github.com/k0sproject/k0smotron/releases/latest/infrastructure-components.yaml",
308309
providerType: clusterctlv1.InfrastructureProviderType,
309310
},
311+
&provider{
312+
name: IonosCloudProviderName,
313+
url: "https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/infrastructure-components.yaml",
314+
providerType: clusterctlv1.InfrastructureProviderType,
315+
},
310316

311317
// Bootstrap providers
312318
&provider{

cmd/clusterctl/client/config_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) {
8585
config.HivelocityProviderName,
8686
config.IBMCloudProviderName,
8787
config.InMemoryProviderName,
88+
config.IonosCloudProviderName,
8889
config.K0smotronProviderName,
8990
config.KubeKeyProviderName,
9091
config.KubevirtProviderName,
@@ -146,6 +147,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) {
146147
config.HivelocityProviderName,
147148
config.IBMCloudProviderName,
148149
config.InMemoryProviderName,
150+
config.IonosCloudProviderName,
149151
config.K0smotronProviderName,
150152
config.KubeKeyProviderName,
151153
config.KubevirtProviderName,

cmd/clusterctl/cmd/config_repositories_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ hetzner InfrastructureProvider https://github.com/syself/clust
133133
hivelocity-hivelocity InfrastructureProvider https://github.com/hivelocity/cluster-api-provider-hivelocity/releases/latest/ infrastructure-components.yaml
134134
ibmcloud InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud/releases/latest/ infrastructure-components.yaml
135135
in-memory InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ infrastructure-components-in-memory-development.yaml
136+
ionoscloud-ionoscloud InfrastructureProvider https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/ infrastructure-components.yaml
136137
k0sproject-k0smotron InfrastructureProvider https://github.com/k0sproject/k0smotron/releases/latest/ infrastructure-components.yaml
137138
kubekey InfrastructureProvider https://github.com/kubesphere/kubekey/releases/latest/ infrastructure-components.yaml
138139
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
277278
Name: in-memory
278279
ProviderType: InfrastructureProvider
279280
URL: https://github.com/kubernetes-sigs/cluster-api/releases/latest/
281+
- File: infrastructure-components.yaml
282+
Name: ionoscloud-ionoscloud
283+
ProviderType: InfrastructureProvider
284+
URL: https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/
280285
- File: infrastructure-components.yaml
281286
Name: k0sproject-k0smotron
282287
ProviderType: InfrastructureProvider

docs/book/src/reference/providers.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ updated info about which API version they are supporting.
3838
- [Hetzner](https://github.com/syself/cluster-api-provider-hetzner)
3939
- [Hivelocity](https://github.com/hivelocity/cluster-api-provider-hivelocity)
4040
- [IBM Cloud](https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud)
41+
- [IONOS Cloud](https://github.com/ionos-cloud/cluster-api-provider-ionoscloud)
4142
- [KubeKey](https://github.com/kubesphere/kubekey)
4243
- [KubeVirt](https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt)
4344
- [MAAS](https://github.com/spectrocloud/cluster-api-provider-maas)

docs/book/src/user/quick-start.md

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ Additional documentation about experimental features can be found in [Experiment
281281
Depending on the infrastructure provider you are planning to use, some additional prerequisites should be satisfied
282282
before getting started with Cluster API. See below for the expected settings for common providers.
283283
284-
{{#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"}}
284+
{{#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"}}
285285
{{#tab Akamai (Linode)}}
286286
287287
```bash
@@ -603,6 +603,18 @@ export IBMCLOUD_API_KEY=<you_api_key>
603603
clusterctl init --infrastructure ibmcloud
604604
```
605605
606+
{{#/tab }}
607+
{{#tab IONOS Cloud}}
608+
609+
The IONOS Cloud credentials are configured in the `IONOSCloudCluster`.
610+
Therefore, there is no need to specify them during the provider initialization.
611+
612+
```bash
613+
clusterctl init --infrastructure ionoscloud-ionoscloud
614+
```
615+
616+
For more information, please visit the [IONOS Cloud project][ionoscloud provider].
617+
606618
{{#/tab }}
607619
{{#tab K0smotron}}
608620
@@ -861,7 +873,7 @@ before configuring a cluster with Cluster API. Instructions are provided for com
861873
Otherwise, you can look at the `clusterctl generate cluster` [command][clusterctl generate cluster] documentation for details about how to
862874
discover the list of variables required by a cluster templates.
863875
864-
{{#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"}}
876+
{{#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"}}
865877
{{#tab Akamai (Linode)}}
866878
867879
```bash
@@ -1072,6 +1084,29 @@ export IBMPOWERVS_NETWORK_NAME=<your-capi-network-name>
10721084
10731085
Please visit the [IBM Cloud provider] for more information.
10741086
1087+
{{#/tab }}
1088+
{{#tab IONOS Cloud}}
1089+
1090+
A ClusterAPI compatible image must be available in your IONOS Cloud contract.
1091+
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).
1092+
1093+
```bash
1094+
# The token which is used to authenticate against the IONOS Cloud API
1095+
export IONOS_TOKEN=<your-token>
1096+
# The datacenter ID where the cluster will be deployed
1097+
export IONOSCLOUD_DATACENTER_ID="<your-datacenter-id>"
1098+
# The IP of the control plane endpoint
1099+
export CONTROL_PLANE_ENDPOINT_IP=10.10.10.4
1100+
# The location of the data center where the cluster will be deployed
1101+
export CONTROL_PLANE_ENDPOINT_LOCATION=de/txl
1102+
# The image ID of the custom image that will be used for the VMs
1103+
export IONOSCLOUD_MACHINE_IMAGE_ID="<your-image-id>"
1104+
# The SSH key that will be used to access the VMs
1105+
export IONOSCLOUD_MACHINE_SSH_KEYS="<your-ssh-key>"
1106+
```
1107+
1108+
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)
1109+
10751110
{{#/tab }}
10761111
{{#tab K0smotron}}
10771112
@@ -1753,6 +1788,7 @@ kind delete cluster
17531788
[Hivelocity provider]: https://github.com/hivelocity/cluster-api-provider-hivelocity
17541789
[IBM Cloud provider]: https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud
17551790
[infrastructure provider]: ../reference/glossary.md#infrastructure-provider
1791+
[ionoscloud provider]: https://github.com/ionos-cloud/cluster-api-provider-ionoscloud
17561792
[kind]: https://kind.sigs.k8s.io/
17571793
[KubeadmControlPlane]: ../developer/architecture/controllers/control-plane.md
17581794
[kubectl]: https://kubernetes.io/docs/tasks/tools/install-kubectl/
@@ -1771,4 +1807,4 @@ kind delete cluster
17711807
[workload cluster]: ../reference/glossary.md#workload-cluster
17721808
[CAPI Operator quickstart]: ./quick-start-operator.md
17731809
[Proxmox getting started guide]: https://github.com/ionos-cloud/cluster-api-provider-proxmox/blob/main/docs/Usage.md
1774-
[Tinkerbell getting started guide]: https://github.com/tinkerbell/cluster-api-provider-tinkerbell/blob/main/docs/QUICK-START.md
1810+
[Tinkerbell getting started guide]: https://github.com/tinkerbell/cluster-api-provider-tinkerbell/blob/main/docs/QUICK-START.md

docs/book/theme/css/custom.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,11 @@ cite.literate-source > a::before {
411411
.tabset > input:nth-child(43):checked ~ .tab-panels > .tab-panel:nth-child(22),
412412
.tabset > input:nth-child(45):checked ~ .tab-panels > .tab-panel:nth-child(23),
413413
.tabset > input:nth-child(47):checked ~ .tab-panels > .tab-panel:nth-child(24),
414-
.tabset > input:nth-child(49):checked ~ .tab-panels > .tab-panel:nth-child(25){
414+
.tabset > input:nth-child(49):checked ~ .tab-panels > .tab-panel:nth-child(25),
415+
.tabset > input:nth-child(51):checked ~ .tab-panels > .tab-panel:nth-child(26),
416+
.tabset > input:nth-child(53):checked ~ .tab-panels > .tab-panel:nth-child(27),
417+
.tabset > input:nth-child(55):checked ~ .tab-panels > .tab-panel:nth-child(28),
418+
.tabset > input:nth-child(57):checked ~ .tab-panels > .tab-panel:nth-child(29){
415419
display: block;
416420
}
417421

0 commit comments

Comments
 (0)