From b04e7216043c8bf959855f42a8a433eb78f05bba Mon Sep 17 00:00:00 2001 From: cmondragon Date: Fri, 23 Aug 2024 13:28:44 -0400 Subject: [PATCH 1/7] add vultr provider Signed-off-by: cmondragon --- .../client/config/providers_client.go | 7 ++++ cmd/clusterctl/client/config_test.go | 1 + .../cmd/config_repositories_test.go | 5 +++ docs/book/src/reference/providers.md | 1 + docs/book/src/user/quick-start.md | 32 +++++++++++++++++-- 5 files changed, 44 insertions(+), 2 deletions(-) diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 4f7fba778b59..117d5cc3c356 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" ) // Bootstrap providers. @@ -313,6 +314,12 @@ 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..04f3cc783e77 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, }, diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index 0308bfd4a1d4..ebe9c04afa8b 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 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 + 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 }} From e6c251050f3c5686e215923a70706f4bb4e5eb25 Mon Sep 17 00:00:00 2001 From: cmondragon Date: Fri, 23 Aug 2024 13:40:09 -0400 Subject: [PATCH 2/7] fix indent --- cmd/clusterctl/client/config/providers_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 117d5cc3c356..3f9f8e3172dc 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -69,7 +69,7 @@ const ( ProxmoxProviderName = "proxmox" K0smotronProviderName = "k0sproject-k0smotron" IonosCloudProviderName = "ionoscloud-ionoscloud" - VultrProviderName = "vultr" + VultrProviderName = "vultr" ) // Bootstrap providers. From 6d7979b041d3c7b4bb37e0cdd35e32bdf355b765 Mon Sep 17 00:00:00 2001 From: cmondragon Date: Fri, 23 Aug 2024 13:50:20 -0400 Subject: [PATCH 3/7] Fix indentation consistency --- cmd/clusterctl/client/config/providers_client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 3f9f8e3172dc..b2027591d748 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -69,7 +69,7 @@ const ( ProxmoxProviderName = "proxmox" K0smotronProviderName = "k0sproject-k0smotron" IonosCloudProviderName = "ionoscloud-ionoscloud" - VultrProviderName = "vultr" + VultrProviderName = "vultr" ) // Bootstrap providers. From 71dc82a0542e9e755a21fe2c8c0218c4c5105b1d Mon Sep 17 00:00:00 2001 From: cmondragon Date: Mon, 26 Aug 2024 09:52:00 -0400 Subject: [PATCH 4/7] add github org name --- cmd/clusterctl/client/config/providers_client.go | 2 +- cmd/clusterctl/cmd/config_repositories_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index b2027591d748..4ef4ebb32224 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -69,7 +69,7 @@ const ( ProxmoxProviderName = "proxmox" K0smotronProviderName = "k0sproject-k0smotron" IonosCloudProviderName = "ionoscloud-ionoscloud" - VultrProviderName = "vultr" + VultrProviderName = "vultr-vultr" ) // Bootstrap providers. diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index ebe9c04afa8b..df298ffd5ef1 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -154,7 +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 InfrastructureProvider https://github.com/vultr/cluster-api-provider-vultr/releases/latest/ infrastructure-components.yaml +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 ` @@ -364,7 +364,7 @@ var expectedOutputYaml = `- File: core_components.yaml ProviderType: InfrastructureProvider URL: https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/releases/latest/ - File: infrastructure-components.yaml - Name: vultr + Name: vultr-vultr ProviderType: InfrastructureProvider URL: https://github.com/vultr/cluster-api-provider-vultr/releases/latest/ - File: ipam-components.yaml From 43a5d026e52aa7c859bdd5dda3e7b32641b8cf0a Mon Sep 17 00:00:00 2001 From: cmondragon Date: Mon, 26 Aug 2024 09:56:32 -0400 Subject: [PATCH 5/7] gofmt --- cmd/clusterctl/client/config/providers_client.go | 1 - .../apis/bootstrap/kubeadm/v1alpha3/zz_generated.deepcopy.go | 2 +- internal/apis/core/exp/v1alpha3/zz_generated.deepcopy.go | 2 +- internal/apis/core/exp/v1alpha4/zz_generated.deepcopy.go | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 4ef4ebb32224..f66172442495 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -320,7 +320,6 @@ func (p *providersClient) defaults() []Provider { providerType: clusterctlv1.InfrastructureProviderType, }, - // Bootstrap providers &provider{ name: KubeadmBootstrapProviderName, 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. From e1bde2765ec42d1e1490b87b8f0e661cc409db8b Mon Sep 17 00:00:00 2001 From: cmondragon Date: Mon, 26 Aug 2024 13:49:41 -0400 Subject: [PATCH 6/7] update provider name --- cmd/clusterctl/client/config_test.go | 1 + cmd/clusterctl/cmd/config_repositories_test.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/clusterctl/client/config_test.go b/cmd/clusterctl/client/config_test.go index 04f3cc783e77..f8a2e9c5c269 100644 --- a/cmd/clusterctl/client/config_test.go +++ b/cmd/clusterctl/client/config_test.go @@ -168,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 df298ffd5ef1..8b76bdf0d849 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -154,7 +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 InfrastructureProvider https://github.com/vultr/cluster-api-provider-vultr/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 ` From ddd533fed16327b374b58f519a44973eae0d43cc Mon Sep 17 00:00:00 2001 From: cmondragon Date: Mon, 26 Aug 2024 14:17:33 -0400 Subject: [PATCH 7/7] fix provider expectedOutput --- cmd/clusterctl/cmd/config_repositories_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index 8b76bdf0d849..a900a03dbc16 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -363,7 +363,7 @@ 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 +- File: infrastructure-components.yaml Name: vultr-vultr ProviderType: InfrastructureProvider URL: https://github.com/vultr/cluster-api-provider-vultr/releases/latest/