kind: EtcdCluster
apiVersion: etcdcluster.cluster.x-k8s.io/v1alpha4
metadata:
  name: "etcd-cluster"
  namespace: default
spec:
#  etcdadmConfigSpec:
  replicas: 3
  infrastructureTemplate:
    kind: DockerMachineTemplate
    apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
    name: "etcd-plane"
    namespace: "default"
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: DockerMachineTemplate
metadata:
  name: "etcd-plane"
  namespace: "default"
spec:
  template:
    spec:
      extraMounts:
        - containerPath: "/var/run/docker.sock"
          hostPath: "/var/run/docker.sock"
---
apiVersion: cluster.x-k8s.io/v1alpha4
kind: Cluster
metadata:
  name: "abcd"
  namespace: "default"
spec:
  clusterNetwork:
    services:
      cidrBlocks: ["10.128.0.0/12"]
    pods:
      cidrBlocks: ["192.168.0.0/16"]
    serviceDomain: "cluster.local"
  infrastructureRef:
    apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
    kind: DockerCluster
    name: "abcd"
    namespace: "default"
  controlPlaneRef:
    kind: KubeadmControlPlane
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
    name: "abcd-control-plane"
    namespace: "default"
  managedExternalEtcdRef:
    kind: EtcdCluster
    apiVersion: etcdcluster.cluster.x-k8s.io/v1alpha4
    name: "etcd-cluster"
    namespace: "default"
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: DockerCluster
metadata:
  name: "abcd"
  namespace: "default"
---
kind: KubeadmControlPlane
apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
metadata:
  name: "abcd-control-plane"
  namespace: "default"
spec:
  replicas: 1
  infrastructureTemplate:
    kind: DockerMachineTemplate
    apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
    name: "abcd-control-plane"
    namespace: "default"
  kubeadmConfigSpec:
    clusterConfiguration:
      controllerManager:
        extraArgs: {enable-hostpath-provisioner: 'true'}
      apiServer:
        certSANs: [localhost, 127.0.0.1]
      etcd:
        external:
          endpoints: []
          caFile: "/etc/kubernetes/pki/etcd/ca.crt"
          certFile: "/etc/kubernetes/pki/apiserver-etcd-client.crt"
          keyFile: "/etc/kubernetes/pki/apiserver-etcd-client.key"
    initConfiguration:
      nodeRegistration:
        criSocket: /var/run/containerd/containerd.sock
        kubeletExtraArgs: {eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%'}
    joinConfiguration:
      nodeRegistration:
        criSocket: /var/run/containerd/containerd.sock
        kubeletExtraArgs: {eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%'}
  version: "v1.20.2"
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: DockerMachineTemplate
metadata:
  name: "abcd-control-plane"
  namespace: "default"
spec:
  template:
    spec:
      extraMounts:
        - containerPath: "/var/run/docker.sock"
          hostPath: "/var/run/docker.sock"
---
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha4
kind: KubeadmConfigTemplate
metadata:
  name: "abcd-md-0"
  namespace: "default"
spec:
  template:
    spec:
      joinConfiguration:
        nodeRegistration:
          kubeletExtraArgs: {eviction-hard: 'nodefs.available<0%,nodefs.inodesFree<0%,imagefs.available<0%'}
---
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: DockerMachineTemplate
metadata:
  name: "abcd-md-0"
  namespace: "default"
spec:
  template:
    spec: {}
---
apiVersion: cluster.x-k8s.io/v1alpha4
kind: MachineDeployment
metadata:
  name: "abcd-md-0"
spec:
  clusterName: "abcd"
  replicas: 1
  selector:
    matchLabels:
  template:
    spec:
      clusterName: "abcd"
      version:  "v1.20.2"
      bootstrap:
        configRef:
          name: "abcd-md-0"
          namespace: "default"
          apiVersion: bootstrap.cluster.x-k8s.io/v1alpha4
          kind: KubeadmConfigTemplate
      infrastructureRef:
        name: "abcd-md-0"
        namespace: "default"
        apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
        kind: DockerMachineTemplate