diff --git a/cmd/clusterctl/client/config/providers_client.go b/cmd/clusterctl/client/config/providers_client.go index 94fa74bc6b66..3adad5719b5c 100644 --- a/cmd/clusterctl/client/config/providers_client.go +++ b/cmd/clusterctl/client/config/providers_client.go @@ -64,6 +64,7 @@ const ( VirtinkProviderName = "virtink" CoxEdgeProviderName = "coxedge" ProxmoxProviderName = "proxmox" + K0smotronProviderName = "k0sproject-k0smotron" ) // Bootstrap providers. @@ -74,6 +75,7 @@ const ( OracleCloudNativeBootstrapProviderName = "ocne" KubeKeyK3sBootstrapProviderName = "kubekey-k3s" RKE2BootstrapProviderName = "rke2" + K0smotronBootstrapProviderName = "k0sproject-k0smotron" ) // ControlPlane providers. @@ -86,6 +88,7 @@ const ( KubeKeyK3sControlPlaneProviderName = "kubekey-k3s" KamajiControlPlaneProviderName = "kamaji" RKE2ControlPlaneProviderName = "rke2" + K0smotronControlPlaneProviderName = "k0sproject-k0smotron" ) // Add-on providers. @@ -276,6 +279,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/ionos-cloud/cluster-api-provider-proxmox/releases/latest/infrastructure-components.yaml", providerType: clusterctlv1.InfrastructureProviderType, }, + &provider{ + name: K0smotronProviderName, + url: "https://github.com/k0sproject/k0smotron/releases/latest/infrastructure-components.yaml", + providerType: clusterctlv1.InfrastructureProviderType, + }, // Bootstrap providers &provider{ @@ -308,6 +316,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/rancher-sandbox/cluster-api-provider-rke2/releases/latest/bootstrap-components.yaml", providerType: clusterctlv1.BootstrapProviderType, }, + &provider{ + name: K0smotronBootstrapProviderName, + url: "https://github.com/k0sproject/k0smotron/releases/latest/bootstrap-components.yaml", + providerType: clusterctlv1.BootstrapProviderType, + }, // ControlPlane providers &provider{ @@ -350,6 +363,11 @@ func (p *providersClient) defaults() []Provider { url: "https://github.com/rancher-sandbox/cluster-api-provider-rke2/releases/latest/control-plane-components.yaml", providerType: clusterctlv1.ControlPlaneProviderType, }, + &provider{ + name: K0smotronControlPlaneProviderName, + url: "https://github.com/k0sproject/k0smotron/releases/latest/control-plane-components.yaml", + providerType: clusterctlv1.ControlPlaneProviderType, + }, // Add-on providers &provider{ diff --git a/cmd/clusterctl/client/config_test.go b/cmd/clusterctl/client/config_test.go index 14adb313eff3..765c491728b0 100644 --- a/cmd/clusterctl/client/config_test.go +++ b/cmd/clusterctl/client/config_test.go @@ -57,12 +57,14 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { // note: these will be sorted by name by the Providers() call, so be sure they are in alphabetical order here too wantProviders: []string{ config.ClusterAPIProviderName, + config.K0smotronBootstrapProviderName, config.KubeadmBootstrapProviderName, config.KubeKeyK3sBootstrapProviderName, config.MicroK8sBootstrapProviderName, config.OracleCloudNativeBootstrapProviderName, config.RKE2BootstrapProviderName, config.TalosBootstrapProviderName, + config.K0smotronControlPlaneProviderName, config.KamajiControlPlaneProviderName, config.KubeadmControlPlaneProviderName, config.KubeKeyK3sControlPlaneProviderName, @@ -82,6 +84,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.HetznerProviderName, config.IBMCloudProviderName, config.InMemoryProviderName, + config.K0smotronProviderName, config.KubeKeyProviderName, config.KubevirtProviderName, config.MAASProviderName, @@ -111,12 +114,14 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { wantProviders: []string{ config.ClusterAPIProviderName, customProviderConfig.Name(), + config.K0smotronBootstrapProviderName, config.KubeadmBootstrapProviderName, config.KubeKeyK3sBootstrapProviderName, config.MicroK8sBootstrapProviderName, config.OracleCloudNativeBootstrapProviderName, config.RKE2BootstrapProviderName, config.TalosBootstrapProviderName, + config.K0smotronControlPlaneProviderName, config.KamajiControlPlaneProviderName, config.KubeadmControlPlaneProviderName, config.KubeKeyK3sControlPlaneProviderName, @@ -136,6 +141,7 @@ func Test_clusterctlClient_GetProvidersConfig(t *testing.T) { config.HetznerProviderName, config.IBMCloudProviderName, config.InMemoryProviderName, + config.K0smotronProviderName, config.KubeKeyProviderName, config.KubevirtProviderName, config.MAASProviderName, diff --git a/cmd/clusterctl/cmd/config_repositories_test.go b/cmd/clusterctl/cmd/config_repositories_test.go index df4b77bbd202..3f522a203a26 100644 --- a/cmd/clusterctl/cmd/config_repositories_test.go +++ b/cmd/clusterctl/cmd/config_repositories_test.go @@ -102,52 +102,55 @@ providers: type: "CoreProvider" ` -var expectedOutputText = `NAME TYPE URL FILE -cluster-api CoreProvider https://github.com/myorg/myforkofclusterapi/releases/latest/ core_components.yaml -another-provider BootstrapProvider ./ bootstrap-components.yaml -kubeadm BootstrapProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ bootstrap-components.yaml -kubekey-k3s BootstrapProvider https://github.com/kubesphere/kubekey/releases/latest/ bootstrap-components.yaml -microk8s BootstrapProvider https://github.com/canonical/cluster-api-bootstrap-provider-microk8s/releases/latest/ bootstrap-components.yaml -ocne BootstrapProvider https://github.com/verrazzano/cluster-api-provider-ocne/releases/latest/ bootstrap-components.yaml -rke2 BootstrapProvider https://github.com/rancher-sandbox/cluster-api-provider-rke2/releases/latest/ bootstrap-components.yaml -talos BootstrapProvider https://github.com/siderolabs/cluster-api-bootstrap-provider-talos/releases/latest/ bootstrap-components.yaml -kamaji ControlPlaneProvider https://github.com/clastix/cluster-api-control-plane-provider-kamaji/releases/latest/ control-plane-components.yaml -kubeadm ControlPlaneProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ control-plane-components.yaml -kubekey-k3s ControlPlaneProvider https://github.com/kubesphere/kubekey/releases/latest/ control-plane-components.yaml -microk8s ControlPlaneProvider https://github.com/canonical/cluster-api-control-plane-provider-microk8s/releases/latest/ control-plane-components.yaml -nested ControlPlaneProvider https://github.com/kubernetes-sigs/cluster-api-provider-nested/releases/latest/ control-plane-components.yaml -ocne ControlPlaneProvider https://github.com/verrazzano/cluster-api-provider-ocne/releases/latest/ control-plane-components.yaml -rke2 ControlPlaneProvider https://github.com/rancher-sandbox/cluster-api-provider-rke2/releases/latest/ control-plane-components.yaml -talos ControlPlaneProvider https://github.com/siderolabs/cluster-api-control-plane-provider-talos/releases/latest/ control-plane-components.yaml -aws InfrastructureProvider my-aws-infrastructure-components.yaml -azure InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-azure/releases/latest/ infrastructure-components.yaml -byoh InfrastructureProvider https://github.com/vmware-tanzu/cluster-api-provider-bringyourownhost/releases/latest/ infrastructure-components.yaml -cloudstack InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-cloudstack/releases/latest/ infrastructure-components.yaml -coxedge InfrastructureProvider https://github.com/coxedge/cluster-api-provider-coxedge/releases/latest/ infrastructure-components.yaml -digitalocean InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-digitalocean/releases/latest/ infrastructure-components.yaml -docker InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ infrastructure-components-development.yaml -gcp InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-gcp/releases/latest/ infrastructure-components.yaml -hetzner InfrastructureProvider https://github.com/syself/cluster-api-provider-hetzner/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 -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 -maas InfrastructureProvider https://github.com/spectrocloud/cluster-api-provider-maas/releases/latest/ infrastructure-components.yaml -metal3 InfrastructureProvider https://github.com/metal3-io/cluster-api-provider-metal3/releases/latest/ infrastructure-components.yaml -my-infra-provider InfrastructureProvider /home/.config/cluster-api/overrides/infrastructure-docker/latest/ infrastructure-components.yaml -nested InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-nested/releases/latest/ infrastructure-components.yaml -nutanix InfrastructureProvider https://github.com/nutanix-cloud-native/cluster-api-provider-nutanix/releases/latest/ infrastructure-components.yaml -oci InfrastructureProvider https://github.com/oracle/cluster-api-provider-oci/releases/latest/ infrastructure-components.yaml -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 -packet InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-packet/releases/latest/ infrastructure-components.yaml -proxmox InfrastructureProvider https://github.com/ionos-cloud/cluster-api-provider-proxmox/releases/latest/ infrastructure-components.yaml -sidero InfrastructureProvider https://github.com/siderolabs/sidero/releases/latest/ infrastructure-components.yaml -vcd InfrastructureProvider https://github.com/vmware/cluster-api-provider-cloud-director/releases/latest/ infrastructure-components.yaml -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 -helm AddonProvider https://github.com/kubernetes-sigs/cluster-api-addon-provider-helm/releases/latest/ addon-components.yaml +var expectedOutputText = `NAME TYPE URL FILE +cluster-api CoreProvider https://github.com/myorg/myforkofclusterapi/releases/latest/ core_components.yaml +another-provider BootstrapProvider ./ bootstrap-components.yaml +k0sproject-k0smotron BootstrapProvider https://github.com/k0sproject/k0smotron/releases/latest/ bootstrap-components.yaml +kubeadm BootstrapProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ bootstrap-components.yaml +kubekey-k3s BootstrapProvider https://github.com/kubesphere/kubekey/releases/latest/ bootstrap-components.yaml +microk8s BootstrapProvider https://github.com/canonical/cluster-api-bootstrap-provider-microk8s/releases/latest/ bootstrap-components.yaml +ocne BootstrapProvider https://github.com/verrazzano/cluster-api-provider-ocne/releases/latest/ bootstrap-components.yaml +rke2 BootstrapProvider https://github.com/rancher-sandbox/cluster-api-provider-rke2/releases/latest/ bootstrap-components.yaml +talos BootstrapProvider https://github.com/siderolabs/cluster-api-bootstrap-provider-talos/releases/latest/ bootstrap-components.yaml +k0sproject-k0smotron ControlPlaneProvider https://github.com/k0sproject/k0smotron/releases/latest/ control-plane-components.yaml +kamaji ControlPlaneProvider https://github.com/clastix/cluster-api-control-plane-provider-kamaji/releases/latest/ control-plane-components.yaml +kubeadm ControlPlaneProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ control-plane-components.yaml +kubekey-k3s ControlPlaneProvider https://github.com/kubesphere/kubekey/releases/latest/ control-plane-components.yaml +microk8s ControlPlaneProvider https://github.com/canonical/cluster-api-control-plane-provider-microk8s/releases/latest/ control-plane-components.yaml +nested ControlPlaneProvider https://github.com/kubernetes-sigs/cluster-api-provider-nested/releases/latest/ control-plane-components.yaml +ocne ControlPlaneProvider https://github.com/verrazzano/cluster-api-provider-ocne/releases/latest/ control-plane-components.yaml +rke2 ControlPlaneProvider https://github.com/rancher-sandbox/cluster-api-provider-rke2/releases/latest/ control-plane-components.yaml +talos ControlPlaneProvider https://github.com/siderolabs/cluster-api-control-plane-provider-talos/releases/latest/ control-plane-components.yaml +aws InfrastructureProvider my-aws-infrastructure-components.yaml +azure InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-azure/releases/latest/ infrastructure-components.yaml +byoh InfrastructureProvider https://github.com/vmware-tanzu/cluster-api-provider-bringyourownhost/releases/latest/ infrastructure-components.yaml +cloudstack InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-cloudstack/releases/latest/ infrastructure-components.yaml +coxedge InfrastructureProvider https://github.com/coxedge/cluster-api-provider-coxedge/releases/latest/ infrastructure-components.yaml +digitalocean InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-digitalocean/releases/latest/ infrastructure-components.yaml +docker InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api/releases/latest/ infrastructure-components-development.yaml +gcp InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-gcp/releases/latest/ infrastructure-components.yaml +hetzner InfrastructureProvider https://github.com/syself/cluster-api-provider-hetzner/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 +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 +maas InfrastructureProvider https://github.com/spectrocloud/cluster-api-provider-maas/releases/latest/ infrastructure-components.yaml +metal3 InfrastructureProvider https://github.com/metal3-io/cluster-api-provider-metal3/releases/latest/ infrastructure-components.yaml +my-infra-provider InfrastructureProvider /home/.config/cluster-api/overrides/infrastructure-docker/latest/ infrastructure-components.yaml +nested InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-nested/releases/latest/ infrastructure-components.yaml +nutanix InfrastructureProvider https://github.com/nutanix-cloud-native/cluster-api-provider-nutanix/releases/latest/ infrastructure-components.yaml +oci InfrastructureProvider https://github.com/oracle/cluster-api-provider-oci/releases/latest/ infrastructure-components.yaml +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 +packet InfrastructureProvider https://github.com/kubernetes-sigs/cluster-api-provider-packet/releases/latest/ infrastructure-components.yaml +proxmox InfrastructureProvider https://github.com/ionos-cloud/cluster-api-provider-proxmox/releases/latest/ infrastructure-components.yaml +sidero InfrastructureProvider https://github.com/siderolabs/sidero/releases/latest/ infrastructure-components.yaml +vcd InfrastructureProvider https://github.com/vmware/cluster-api-provider-cloud-director/releases/latest/ infrastructure-components.yaml +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 +helm AddonProvider https://github.com/kubernetes-sigs/cluster-api-addon-provider-helm/releases/latest/ addon-components.yaml ` var expectedOutputYaml = `- File: core_components.yaml @@ -158,6 +161,10 @@ var expectedOutputYaml = `- File: core_components.yaml Name: another-provider ProviderType: BootstrapProvider URL: ./ +- File: bootstrap-components.yaml + Name: k0sproject-k0smotron + ProviderType: BootstrapProvider + URL: https://github.com/k0sproject/k0smotron/releases/latest/ - File: bootstrap-components.yaml Name: kubeadm ProviderType: BootstrapProvider @@ -182,6 +189,10 @@ var expectedOutputYaml = `- File: core_components.yaml Name: talos ProviderType: BootstrapProvider URL: https://github.com/siderolabs/cluster-api-bootstrap-provider-talos/releases/latest/ +- File: control-plane-components.yaml + Name: k0sproject-k0smotron + ProviderType: ControlPlaneProvider + URL: https://github.com/k0sproject/k0smotron/releases/latest/ - File: control-plane-components.yaml Name: kamaji ProviderType: ControlPlaneProvider @@ -258,6 +269,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: k0sproject-k0smotron + ProviderType: InfrastructureProvider + URL: https://github.com/k0sproject/k0smotron/releases/latest/ - File: infrastructure-components.yaml Name: kubekey ProviderType: InfrastructureProvider diff --git a/docs/book/src/clusterctl/provider-contract.md b/docs/book/src/clusterctl/provider-contract.md index 1112508ee041..da52a09dfc46 100644 --- a/docs/book/src/clusterctl/provider-contract.md +++ b/docs/book/src/clusterctl/provider-contract.md @@ -306,11 +306,13 @@ providers. | CABPM | cluster.x-k8s.io/provider=bootstrap-microk8s | | CABPKK3S | cluster.x-k8s.io/provider=bootstrap-kubekey-k3s | | CABPOCNE | cluster.x-k8s.io/provider=bootstrap-ocne | +| CABPK0S | cluster.x-k8s.io/provider=bootstrap-k0smotron | | CACPK | cluster.x-k8s.io/provider=control-plane-kubeadm | | CACPM | cluster.x-k8s.io/provider=control-plane-microk8s | | CACPN | cluster.x-k8s.io/provider=control-plane-nested | | CACPKK3S | cluster.x-k8s.io/provider=control-plane-kubekey-k3s | | CACPOCNE | cluster.x-k8s.io/provider=control-plane-ocne | +| CACPK0S | cluster.x-k8s.io/provider=control-plane-k0smotron | | CAPA | cluster.x-k8s.io/provider=infrastructure-aws | | CAPB | cluster.x-k8s.io/provider=infrastructure-byoh | | CAPC | cluster.x-k8s.io/provider=infrastructure-cloudstack | @@ -333,6 +335,7 @@ providers. | CAPX | cluster.x-k8s.io/provider=infrastructure-nutanix | | CAPZ | cluster.x-k8s.io/provider=infrastructure-azure | | CAPOSC | cluster.x-k8s.io/provider=infrastructure-outscale | +| CAPK0S | cluster.x-k8s.io/provider=infrastructure-k0smotron | ### Workload cluster templates diff --git a/docs/book/src/user/quick-start.md b/docs/book/src/user/quick-start.md index 96c5a866d09e..b3f27b92cba0 100644 --- a/docs/book/src/user/quick-start.md +++ b/docs/book/src/user/quick-start.md @@ -592,6 +592,14 @@ export IBMCLOUD_API_KEY= clusterctl init --infrastructure ibmcloud ``` +{{#/tab }} +{{#tab K0smotron}} + +```bash +# Initialize the management cluster +clusterctl init --infrastructure k0sproject-k0smotron +``` + {{#/tab }} {{#tab KubeKey}} @@ -1041,6 +1049,11 @@ export IBMPOWERVS_NETWORK_NAME= Please visit the [IBM Cloud provider] for more information. +{{#/tab }} +{{#tab K0smotron}} + +Please visit the [K0smotron provider] for more information. + {{#/tab }} {{#tab KubeKey}} @@ -1678,6 +1691,7 @@ kind delete cluster [management cluster]: ../reference/glossary.md#management-cluster [Metal3 getting started guide]: https://github.com/metal3-io/cluster-api-provider-metal3/blob/master/docs/getting-started.md [Metal3 provider]: https://github.com/metal3-io/cluster-api-provider-metal3/ +[K0smotron provider]: https://github.com/k0sproject/k0smotron [KubeKey provider]: https://github.com/kubesphere/kubekey [KubeVirt provider]: https://github.com/kubernetes-sigs/cluster-api-provider-kubevirt/ [KubeVirt]: https://kubevirt.io/