diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 4f7fba778b59..f66172442495 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -69,6 +69,7 @@ const ( ProxmoxProviderName = "proxmox" K0smotronProviderName = "k0sproject-k0smotron" IonosCloudProviderName = "ionoscloud-ionoscloud" + VultrProviderName = "vultr-vultr" ) // Bootstrap providers. @@ -313,6 +314,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/infrastructure-components.yaml", providerType: clusterctlv1.InfrastructureProviderType, }, + &provider{ + name: VultrProviderName, + url: "https://github.com/vultr/cluster-api-provider-vultr/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 8aca04537428..f8a2e9c5c269 100644 --- a/cmd/clusterctl/client/config_test.go +++ b/cmd/clusterctl/client/config_test.go @@ -105,6 +105,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.VclusterProviderName, config.VirtinkProviderName, config.VSphereProviderName, + config.VultrProviderName, config.InClusterIPAMProviderName, config.HelmAddonProviderName, }, @@ -167,6 +168,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.VclusterProviderName, config.VirtinkProviderName, config.VSphereProviderName, + config.VultrProviderName, config.InClusterIPAMProviderName, config.HelmAddonProviderName, }, diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index 0308bfd4a1d4..a900a03dbc16 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -154,6 +154,7 @@ vcd InfrastructureProvider https://github.com/vmware/clust vcluster InfrastructureProvider https://github.com/loft-sh/cluster-api-provider-vcluster/releases/latest/ infrastructure-components.yaml virtink InfrastructureProvider https://github.com/smartxworks/cluster-api-provider-virtink/releases/latest/ infrastructure-components.yaml vsphere InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/releases/latest/ infrastructure-components.yaml +vultr-vultr InfrastructureProvider https://github.com/vultr/cluster-api-provider-vultr/releases/latest/ infrastructure-components.yaml in-cluster IPAMProvider https://github.com/kubernetes-sigs/cluster-api-ipam-provider-in-cluster/releases/latest/ ipam-components.yaml helm AddonProvider https://github.com/kubernetes-sigs/cluster-api-addon-provider-helm/releases/latest/ addon-components.yaml ` @@ -362,6 +363,10 @@ var expectedOutputYaml = `- File: core_components.yaml Name: vsphere ProviderType: InfrastructureProvider URL: https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/releases/latest/ +- File: infrastructure-components.yaml + Name: vultr-vultr + ProviderType: InfrastructureProvider + URL: https://github.com/vultr/cluster-api-provider-vultr/releases/latest/ - File: ipam-components.yaml Name: in-cluster ProviderType: IPAMProvider diff --git a/docs/book/src/reference/providers.md b/docs/book/src/reference/providers.md index c7bad2e878c1..20a17e5b9bdd 100644 --- a/docs/book/src/reference/providers.md +++ b/docs/book/src/reference/providers.md @@ -56,6 +56,7 @@ updated info about which API version they are supporting. - [Virtink](https://github.com/smartxworks/cluster-api-provider-virtink) - [VMware Cloud Director](https://github.com/vmware/cluster-api-provider-cloud-director) - [vSphere](https://github.com/kubernetes-sigs/cluster-api-provider-vsphere) +- [Vultr](https://github.com/vultr/cluster-api-provider-vultr) - [k0smotron RemoteMachine (SSH)](https://github.com/k0sproject/k0smotron) ## IP Address Management (IPAM) diff --git a/docs/book/src/user/quick-start.md b/docs/book/src/user/quick-start.md index a81422414f4b..e988fb3b031b 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,IONOS 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,Vultr"}} {{#tab Akamai (Linode)}} ```bash @@ -793,6 +793,15 @@ clusterctl init --infrastructure vsphere For more information about prerequisites, credentials management, or permissions for vSphere, see the [vSphere project][vSphere getting started guide]. +{{#/tab }} +{{#tab Vultr}} + +```bash +export VULTR_API_KEY= + +# initialize the management cluster +clusterctl init --infrastructure vultr +``` {{#/tab }} {{#/tabs }} @@ -862,7 +871,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,IONOS 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,Vultr"}} {{#tab Akamai (Linode)}} ```bash @@ -1339,6 +1348,25 @@ export CONTROL_PLANE_ENDPOINT_IP="1.2.3.4" For more information about prerequisites, credentials management, or permissions for vSphere, see the [vSphere getting started guide]. +{{#/tab }} +{{#tab Vultr}} + +A Cluster API compatible image must be available in your Vultr account. For instructions on how to build a compatible image see image-builder for [Vultr](https://github.com/vultr/cluster-api-provider-vultr/blob/main/docs/getting-started.md) + +```bash +export CLUSTER_NAME= +export KUBERNETES_VERSION=v1.28.9 +export CONTROL_PLANE_MACHINE_COUNT=1 +export CONTROL_PLANE_PLANID= +export WORKER_MACHINE_COUNT=1 +export WORKER_PLANID= +export MACHINE_IMAGE= +export REGION= +export PLANID= +export VPCID= +export SSHKEY_ID= +``` + {{#/tab }} {{#/tabs }} diff --git a/internal/apis/bootstrap/kubeadm/v1alpha3/zz_generated.deepcopy.go b/internal/apis/bootstrap/kubeadm/v1alpha3/zz_generated.deepcopy.go index 7273cb8498d2..4e494d3b2207 100644 --- a/internal/apis/bootstrap/kubeadm/v1alpha3/zz_generated.deepcopy.go +++ b/internal/apis/bootstrap/kubeadm/v1alpha3/zz_generated.deepcopy.go @@ -22,8 +22,8 @@ package v1alpha3 import ( "k8s.io/apimachinery/pkg/runtime" - apiv1alpha3 "sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3" "sigs.k8s.io/cluster-api/bootstrap/kubeadm/types/upstreamv1beta1" + apiv1alpha3 "sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. diff --git a/internal/apis/core/exp/v1alpha3/zz_generated.deepcopy.go b/internal/apis/core/exp/v1alpha3/zz_generated.deepcopy.go index bbcfc6d76752..16585735a0fb 100644 --- a/internal/apis/core/exp/v1alpha3/zz_generated.deepcopy.go +++ b/internal/apis/core/exp/v1alpha3/zz_generated.deepcopy.go @@ -23,8 +23,8 @@ package v1alpha3 import ( "k8s.io/api/core/v1" runtime "k8s.io/apimachinery/pkg/runtime" - apiv1alpha3 "sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3" "sigs.k8s.io/cluster-api/errors" + apiv1alpha3 "sigs.k8s.io/cluster-api/internal/apis/core/v1alpha3" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. diff --git a/internal/apis/core/exp/v1alpha4/zz_generated.deepcopy.go b/internal/apis/core/exp/v1alpha4/zz_generated.deepcopy.go index d45abf813815..24b767f6c208 100644 --- a/internal/apis/core/exp/v1alpha4/zz_generated.deepcopy.go +++ b/internal/apis/core/exp/v1alpha4/zz_generated.deepcopy.go @@ -23,8 +23,8 @@ package v1alpha4 import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" - apiv1alpha4 "sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4" "sigs.k8s.io/cluster-api/errors" + apiv1alpha4 "sigs.k8s.io/cluster-api/internal/apis/core/v1alpha4" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.