Skip to content

Commit 8b3fab1

Browse files
authored
🌱 Add vultr infrastructure provider (#11091)
* add vultr provider Signed-off-by: cmondragon <[email protected]> * fix indent * Fix indentation consistency * add github org name * gofmt * update provider name * fix provider expectedOutput --------- Signed-off-by: cmondragon <[email protected]>
1 parent 94fb5ac commit 8b3fab1

File tree

8 files changed

+47
-5
lines changed

8 files changed

+47
-5
lines changed

cmd/clusterctl/client/config/providers_client.go

+6
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ const (
6969
ProxmoxProviderName = "proxmox"
7070
K0smotronProviderName = "k0sproject-k0smotron"
7171
IonosCloudProviderName = "ionoscloud-ionoscloud"
72+
VultrProviderName = "vultr-vultr"
7273
)
7374

7475
// Bootstrap providers.
@@ -313,6 +314,11 @@ func (p *providersClient) defaults() []Provider {
313314
url: "https://github.com/ionos-cloud/cluster-api-provider-ionoscloud/releases/latest/infrastructure-components.yaml",
314315
providerType: clusterctlv1.InfrastructureProviderType,
315316
},
317+
&provider{
318+
name: VultrProviderName,
319+
url: "https://github.com/vultr/cluster-api-provider-vultr/releases/latest/infrastructure-components.yaml",
320+
providerType: clusterctlv1.InfrastructureProviderType,
321+
},
316322

317323
// Bootstrap providers
318324
&provider{

cmd/clusterctl/client/config_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) {
105105
config.VclusterProviderName,
106106
config.VirtinkProviderName,
107107
config.VSphereProviderName,
108+
config.VultrProviderName,
108109
config.InClusterIPAMProviderName,
109110
config.HelmAddonProviderName,
110111
},
@@ -167,6 +168,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) {
167168
config.VclusterProviderName,
168169
config.VirtinkProviderName,
169170
config.VSphereProviderName,
171+
config.VultrProviderName,
170172
config.InClusterIPAMProviderName,
171173
config.HelmAddonProviderName,
172174
},

cmd/clusterctl/cmd/config_repositories_test.go

+5
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ vcd InfrastructureProvider https://github.com/vmware/clust
154154
vcluster InfrastructureProvider https://github.com/loft-sh/cluster-api-provider-vcluster/releases/latest/ infrastructure-components.yaml
155155
virtink InfrastructureProvider https://github.com/smartxworks/cluster-api-provider-virtink/releases/latest/ infrastructure-components.yaml
156156
vsphere InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/releases/latest/ infrastructure-components.yaml
157+
vultr-vultr InfrastructureProvider https://github.com/vultr/cluster-api-provider-vultr/releases/latest/ infrastructure-components.yaml
157158
in-cluster IPAMProvider https://github.com/kubernetes-sigs/cluster-api-ipam-provider-in-cluster/releases/latest/ ipam-components.yaml
158159
helm AddonProvider https://github.com/kubernetes-sigs/cluster-api-addon-provider-helm/releases/latest/ addon-components.yaml
159160
`
@@ -362,6 +363,10 @@ var expectedOutputYaml = `- File: core_components.yaml
362363
Name: vsphere
363364
ProviderType: InfrastructureProvider
364365
URL: https://github.com/kubernetes-sigs/cluster-api-provider-vsphere/releases/latest/
366+
- File: infrastructure-components.yaml
367+
Name: vultr-vultr
368+
ProviderType: InfrastructureProvider
369+
URL: https://github.com/vultr/cluster-api-provider-vultr/releases/latest/
365370
- File: ipam-components.yaml
366371
Name: in-cluster
367372
ProviderType: IPAMProvider

docs/book/src/reference/providers.md

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ updated info about which API version they are supporting.
5656
- [Virtink](https://github.com/smartxworks/cluster-api-provider-virtink)
5757
- [VMware Cloud Director](https://github.com/vmware/cluster-api-provider-cloud-director)
5858
- [vSphere](https://github.com/kubernetes-sigs/cluster-api-provider-vsphere)
59+
- [Vultr](https://github.com/vultr/cluster-api-provider-vultr)
5960
- [k0smotron RemoteMachine (SSH)](https://github.com/k0sproject/k0smotron)
6061

6162
## IP Address Management (IPAM)

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

+30-2
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,IONOS 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,Vultr"}}
285285
{{#tab Akamai (Linode)}}
286286
287287
```bash
@@ -793,6 +793,15 @@ clusterctl init --infrastructure vsphere
793793
For more information about prerequisites, credentials management, or permissions for vSphere, see the [vSphere
794794
project][vSphere getting started guide].
795795
796+
{{#/tab }}
797+
{{#tab Vultr}}
798+
799+
```bash
800+
export VULTR_API_KEY=<your_api_key>
801+
802+
# initialize the management cluster
803+
clusterctl init --infrastructure vultr
804+
```
796805
{{#/tab }}
797806
{{#/tabs }}
798807
@@ -862,7 +871,7 @@ before configuring a cluster with Cluster API. Instructions are provided for com
862871
Otherwise, you can look at the `clusterctl generate cluster` [command][clusterctl generate cluster] documentation for details about how to
863872
discover the list of variables required by a cluster templates.
864873
865-
{{#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"}}
874+
{{#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"}}
866875
{{#tab Akamai (Linode)}}
867876
868877
```bash
@@ -1339,6 +1348,25 @@ export CONTROL_PLANE_ENDPOINT_IP="1.2.3.4"
13391348
13401349
For more information about prerequisites, credentials management, or permissions for vSphere, see the [vSphere getting started guide].
13411350
1351+
{{#/tab }}
1352+
{{#tab Vultr}}
1353+
1354+
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)
1355+
1356+
```bash
1357+
export CLUSTER_NAME=<clustername>
1358+
export KUBERNETES_VERSION=v1.28.9
1359+
export CONTROL_PLANE_MACHINE_COUNT=1
1360+
export CONTROL_PLANE_PLANID=<plan_id>
1361+
export WORKER_MACHINE_COUNT=1
1362+
export WORKER_PLANID=<plan_id>
1363+
export MACHINE_IMAGE=<snapshot_id>
1364+
export REGION=<region>
1365+
export PLANID=<plan_id>
1366+
export VPCID=<vpc_id>
1367+
export SSHKEY_ID=<sshKey_id>
1368+
```
1369+
13421370
{{#/tab }}
13431371
{{#/tabs }}
13441372

internal/apis/bootstrap/kubeadm/v1alpha3/zz_generated.deepcopy.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/apis/core/exp/v1alpha3/zz_generated.deepcopy.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/apis/core/exp/v1alpha4/zz_generated.deepcopy.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)