apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 kind: KubeadmControlPlane metadata: name: target-cluster-control-plane namespace: default spec: infrastructureTemplate: apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackMachineTemplate name: target-cluster-control-plane kubeadmConfigSpec: clusterConfiguration: apiServer: extraArgs: cloud-config: /etc/kubernetes/cloud.conf cloud-provider: openstack extraVolumes: - hostPath: /etc/kubernetes/cloud.conf mountPath: /etc/kubernetes/cloud.conf name: cloud readOnly: true controlPlaneEndpoint: ${OPENSTACK_CONTROL_PLANE_IP}:6443 controllerManager: extraArgs: cloud-config: /etc/kubernetes/cloud.conf cloud-provider: openstack extraVolumes: - hostPath: /etc/kubernetes/cloud.conf mountPath: /etc/kubernetes/cloud.conf name: cloud readOnly: true - hostPath: /etc/certs/cacert mountPath: /etc/certs/cacert name: cacerts readOnly: true imageRepository: k8s.gcr.io files: - content: ${CLOUD_CONF_B64} encoding: base64 owner: root path: /etc/kubernetes/cloud.conf permissions: "0600" - content: ${CLOUD_CERT_B64} encoding: base64 owner: root path: /etc/certs/cacert permissions: "0600" initConfiguration: nodeRegistration: kubeletExtraArgs: cloud-config: /etc/kubernetes/cloud.conf cloud-provider: openstack name: '{{ local_hostname }}' joinConfiguration: nodeRegistration: kubeletExtraArgs: cloud-config: /etc/kubernetes/cloud.conf cloud-provider: openstack name: '{{ local_hostname }}' ntp: servers: [] users: - name: capo sshAuthorizedKeys: - ${OPENSTACK_SSH_KEY} sudo: ALL=(ALL) NOPASSWD:ALL replicas: 1 version: v1.17.3 --- apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackMachineTemplate metadata: name: target-cluster-control-plane namespace: default spec: template: spec: cloudName: devstack cloudsSecret: name: target-cluster-cloud-config namespace: default flavor: ${CONTROLPLANE_MACHINE_FLAVOR} image: ubuntu-1910-kube-v1.17.3