diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 36d46f1a8347..7edc18fc5038 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -72,6 +72,7 @@ const ( IonosCloudProviderName = "ionoscloud-ionoscloud" VultrProviderName = "vultr-vultr" OpenNebulaProviderName = "opennebula" + ScalewayProviderName = "scaleway" ) // Bootstrap providers. @@ -333,6 +334,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/OpenNebula/cluster-api-provider-opennebula/releases/latest/infrastructure-components.yaml", providerType: clusterctlv1.InfrastructureProviderType, }, + &provider{ + name: ScalewayProviderName, + url: "https://github.com/scaleway/cluster-api-provider-scaleway/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 19b68d6d172d..288c6c8ae2fb 100644 --- a/cmd/clusterctl/client/config_test.go +++ b/cmd/clusterctl/client/config_test.go @@ -99,6 +99,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.OpenStackProviderName, config.OutscaleProviderName, config.ProxmoxProviderName, + config.ScalewayProviderName, config.SideroProviderName, config.TinkerbellProviderName, config.VCloudDirectorProviderName, @@ -166,6 +167,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.OpenStackProviderName, config.OutscaleProviderName, config.ProxmoxProviderName, + config.ScalewayProviderName, config.SideroProviderName, config.TinkerbellProviderName, config.VCloudDirectorProviderName, diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index 085814cb73ef..7e0e10785d17 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -145,6 +145,7 @@ opennebula InfrastructureProvider https://github.com/OpenNebula openstack InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-openstack/releases/latest/ infrastructure-components.yaml outscale InfrastructureProvider https://github.com/outscale/cluster-api-provider-outscale/releases/latest/ infrastructure-components.yaml proxmox InfrastructureProvider https://github.com/ionos-cloud/cluster-api-provider-proxmox/releases/latest/ infrastructure-components.yaml +scaleway InfrastructureProvider https://github.com/scaleway/cluster-api-provider-scaleway/releases/latest/ infrastructure-components.yaml sidero InfrastructureProvider https://github.com/siderolabs/sidero/releases/latest/ infrastructure-components.yaml tinkerbell-tinkerbell InfrastructureProvider https://github.com/tinkerbell/cluster-api-provider-tinkerbell/releases/latest/ infrastructure-components.yaml vcd InfrastructureProvider https://github.com/vmware/cluster-api-provider-cloud-director/releases/latest/ infrastructure-components.yaml @@ -343,6 +344,10 @@ var expectedOutputYaml = `- File: core_components.yaml Name: proxmox ProviderType: InfrastructureProvider URL: https://github.com/ionos-cloud/cluster-api-provider-proxmox/releases/latest/ +- File: infrastructure-components.yaml + Name: scaleway + ProviderType: InfrastructureProvider + URL: https://github.com/scaleway/cluster-api-provider-scaleway/releases/latest/ - File: infrastructure-components.yaml Name: sidero ProviderType: InfrastructureProvider diff --git a/docs/book/src/developer/providers/contracts/clusterctl.md b/docs/book/src/developer/providers/contracts/clusterctl.md index 358ef4b7da4c..82ac8533ed6d 100644 --- a/docs/book/src/developer/providers/contracts/clusterctl.md +++ b/docs/book/src/developer/providers/contracts/clusterctl.md @@ -350,6 +350,7 @@ providers. | CAPONE | cluster.x-k8s.io/provider=infrastructure-opennebula | | CAPO | cluster.x-k8s.io/provider=infrastructure-openstack | | CAPOCI | cluster.x-k8s.io/provider=infrastructure-oci | +| CAPS | cluster.x-k8s.io/provider=infrastructure-scaleway | | CAPT | cluster.x-k8s.io/provider=infrastructure-tinkerbell | | CAPV | cluster.x-k8s.io/provider=infrastructure-vsphere | | CAPVC | cluster.x-k8s.io/provider=infrastructure-vcluster | diff --git a/docs/book/src/reference/glossary.md b/docs/book/src/reference/glossary.md index 35cbe5dd592b..03e5ed1d72ee 100644 --- a/docs/book/src/reference/glossary.md +++ b/docs/book/src/reference/glossary.md @@ -99,6 +99,9 @@ Cluster API Provider Outscale ### CAPOCI Cluster API Provider Oracle Cloud Infrastructure (OCI) +### CAPS +Cluster API Provider Scaleway + ### CAPT Cluster API Provider Tinkerbell diff --git a/docs/book/src/reference/providers.md b/docs/book/src/reference/providers.md index 6f49616ed32a..0e9238389366 100644 --- a/docs/book/src/reference/providers.md +++ b/docs/book/src/reference/providers.md @@ -66,6 +66,7 @@ source of inspiration and ideas for others. - [OpenStack](https://github.com/kubernetes-sigs/cluster-api-provider-openstack) - [Outscale](https://github.com/outscale/cluster-api-provider-outscale) - [Proxmox](https://github.com/ionos-cloud/cluster-api-provider-proxmox) +- [Scaleway](https://github.com/scaleway/cluster-api-provider-scaleway) - [Sidero](https://github.com/siderolabs/sidero) - [Tinkerbell](https://github.com/tinkerbell/cluster-api-provider-tinkerbell) - [vcluster](https://github.com/loft-sh/cluster-api-provider-vcluster) diff --git a/docs/book/src/user/quick-start.md b/docs/book/src/user/quick-start.md index b88404242ad3..c8369a009eea 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,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,Nutanix,OCI,OpenNebula,OpenStack,Outscale,Proxmox,Scaleway,VCD,vcluster,Virtink,vSphere,Vultr"}} {{#tab Akamai (Linode)}} ```bash @@ -780,6 +780,15 @@ project][Proxmox getting started guide]. {{#/tab }} +{{#tab Scaleway}} + +```bash +# Initialize the management cluster +clusterctl init --infrastructure scaleway +``` + +{{#/tab }} + {{#tab VCD}} Please follow the Cluster API Provider for [Cloud Director Getting Started Guide](https://github.com/vmware/cluster-api-provider-cloud-director/blob/main/README.md) @@ -902,7 +911,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,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,Nutanix,OpenNebula,OpenStack,Outscale,Proxmox,Scaleway,Tinkerbell,VCD,vcluster,Virtink,vSphere,Vultr"}} {{#tab Akamai (Linode)}} ```bash @@ -1387,6 +1396,23 @@ export ALLOWED_NODES="[pve1,pve2,pve3]" For more information about prerequisites and advanced setups for Proxmox, see the [Proxmox getting started guide]. +{{#/tab }} +{{#tab Scaleway}} + +```bash +# Scaleway credentials, project ID and region. +export SCW_ACCESS_KEY="" +export SCW_SECRET_KEY="" +export SCW_PROJECT_ID="" +export SCW_REGION="fr-par" + +# Scaleway Instance image names that will be used to provision servers. +export CONTROL_PLANE_MACHINE_IMAGE="" +export WORKER_MACHINE_IMAGE="" +``` + +For more information about prerequisites and advanced setups for CAPS, see the [CAPS getting started guide]. + {{#/tab }} {{#tab Tinkerbell}} @@ -1672,7 +1698,7 @@ Note: To use the default clusterctl method to retrieve kubeconfig for a workload The Kubernetes in-tree cloud provider implementations are being [removed](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/2395-removing-in-tree-cloud-providers) in favor of external cloud providers (also referred to as "out-of-tree"). This requires deploying a new component called the cloud-controller-manager which is responsible for running all the cloud specific controllers that were previously run in the kube-controller-manager. To learn more, see [this blog post](https://kubernetes.io/blog/2019/04/17/the-future-of-cloud-providers-in-kubernetes/). -{{#tabs name:"tab-install-cloud-provider" tabs:"Azure,OpenStack"}} +{{#tabs name:"tab-install-cloud-provider" tabs:"Azure,OpenStack,Scaleway"}} {{#tab Azure}} Install the official cloud-provider-azure Helm chart on the workload cluster: @@ -1718,6 +1744,45 @@ kubectl apply --kubeconfig=./capi-quickstart.kubeconfig -f https://raw.githubuse Alternatively, refer to the [helm chart](https://github.com/kubernetes/cloud-provider-openstack/tree/master/charts/openstack-cloud-controller-manager). +{{#/tab }} +{{#tab Scaleway}} + +Before deploying the Scaleway external cloud provider, you will need: + +- Your Scaleway credentials (access key and secret key) +- Your Scaleway project ID +- The Scaleway region where your workload cluster is deployed +- The Private Network ID of your cluster (optional) + +First, create the Secret named `scaleway-secret` in your workload cluster: + +```bash +kubectl apply -f - <