--- apiVersion: cluster.x-k8s.io/v1alpha3 kind: Cluster metadata: name: ${CLUSTER_NAME} spec: clusterNetwork: pods: cidrBlocks: ["192.168.0.0/16"] # CIDR block used by Calico. serviceDomain: "cluster.local" infrastructureRef: apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackCluster name: ${CLUSTER_NAME} controlPlaneRef: kind: KubeadmControlPlane apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 name: ${CLUSTER_NAME}-control-plane --- apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackCluster metadata: name: ${CLUSTER_NAME} spec: cloudName: ${OPENSTACK_CLOUD} cloudsSecret: name: ${CLUSTER_NAME}-cloud-config namespace: ${NAMESPACE} managedAPIServerLoadBalancer: true managedSecurityGroups: true nodeCidr: 10.6.0.0/24 dnsNameservers: - ${OPENSTACK_DNS_NAMESERVERS} disablePortSecurity: false disableServerTags: true useOctavia: true --- kind: KubeadmControlPlane apiVersion: controlplane.cluster.x-k8s.io/v1alpha3 metadata: name: "${CLUSTER_NAME}-control-plane" spec: replicas: ${CONTROL_PLANE_MACHINE_COUNT} infrastructureTemplate: kind: OpenStackMachineTemplate apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 name: "${CLUSTER_NAME}-control-plane" kubeadmConfigSpec: initConfiguration: nodeRegistration: name: '{{ local_hostname }}' kubeletExtraArgs: cloud-provider: external clusterConfiguration: imageRepository: k8s.gcr.io apiServer: extraArgs: cloud-provider: external controllerManager: extraArgs: cloud-provider: external joinConfiguration: nodeRegistration: name: '{{ local_hostname }}' kubeletExtraArgs: cloud-provider: external version: "${KUBERNETES_VERSION}" --- apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackMachineTemplate metadata: name: ${CLUSTER_NAME}-control-plane spec: template: spec: flavor: ${OPENSTACK_CONTROL_PLANE_MACHINE_FLAVOR} image: ${OPENSTACK_IMAGE_NAME} sshKeyName: ${OPENSTACK_SSH_KEY_NAME} cloudName: ${OPENSTACK_CLOUD} cloudsSecret: name: ${CLUSTER_NAME}-cloud-config namespace: ${NAMESPACE} --- apiVersion: cluster.x-k8s.io/v1alpha3 kind: MachineDeployment metadata: name: "${CLUSTER_NAME}-md-0" spec: clusterName: "${CLUSTER_NAME}" replicas: ${WORKER_MACHINE_COUNT} selector: matchLabels: template: spec: clusterName: "${CLUSTER_NAME}" version: "${KUBERNETES_VERSION}" failureDomain: ${OPENSTACK_FAILURE_DOMAIN} bootstrap: configRef: name: "${CLUSTER_NAME}-md-0" apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3 kind: KubeadmConfigTemplate infrastructureRef: name: "${CLUSTER_NAME}-md-0" apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackMachineTemplate --- apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: OpenStackMachineTemplate metadata: name: ${CLUSTER_NAME}-md-0 spec: template: spec: cloudName: ${OPENSTACK_CLOUD} cloudsSecret: name: ${CLUSTER_NAME}-cloud-config namespace: ${NAMESPACE} flavor: ${OPENSTACK_NODE_MACHINE_FLAVOR} image: ${OPENSTACK_IMAGE_NAME} sshKeyName: ${OPENSTACK_SSH_KEY_NAME} --- apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3 kind: KubeadmConfigTemplate metadata: name: ${CLUSTER_NAME}-md-0 spec: template: spec: joinConfiguration: nodeRegistration: name: '{{ local_hostname }}' kubeletExtraArgs: cloud-provider: external --- apiVersion: v1 kind: Secret metadata: name: ${CLUSTER_NAME}-cloud-config labels: clusterctl.cluster.x-k8s.io/move: "true" data: clouds.yaml: ${OPENSTACK_CLOUD_YAML_B64} cacert: ${OPENSTACK_CLOUD_CACERT_B64}