Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌱 Add ionoscloud provider #10767

Merged
merged 8 commits into from
Jun 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions cmd/clusterctl/client/config/providers_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ const (
CoxEdgeProviderName = "coxedge"
ProxmoxProviderName = "proxmox"
K0smotronProviderName = "k0sproject-k0smotron"
IonosCloudProviderName = "ionoscloud-ionoscloud"
)

// Bootstrap providers.
Expand Down Expand Up @@ -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{
Expand Down
2 changes: 2 additions & 0 deletions cmd/clusterctl/client/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
5 changes: 5 additions & 0 deletions cmd/clusterctl/cmd/config_repositories_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions docs/book/src/reference/providers.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
42 changes: 39 additions & 3 deletions docs/book/src/user/quick-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -603,6 +603,18 @@ export IBMCLOUD_API_KEY=<you_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}}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -1072,6 +1084,29 @@ export IBMPOWERVS_NETWORK_NAME=<your-capi-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=<your-token>
# The datacenter ID where the cluster will be deployed
export IONOSCLOUD_DATACENTER_ID="<your-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="<your-image-id>"
# The SSH key that will be used to access the VMs
export IONOSCLOUD_MACHINE_SSH_KEYS="<your-ssh-key>"
```

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}}

Expand Down Expand Up @@ -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/
Expand All @@ -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
[Tinkerbell getting started guide]: https://github.com/tinkerbell/cluster-api-provider-tinkerbell/blob/main/docs/QUICK-START.md
6 changes: 5 additions & 1 deletion docs/book/theme/css/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -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){
chrischdi marked this conversation as resolved.
Show resolved Hide resolved
display: block;
}

Expand Down
Loading