# k8s_examples_etcd-controller.yaml
apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
kind: Deployment
metadata:
  name: etcd
spec:
  selector:
    matchLabels:
      name: etcd
  strategy:
    type: Recreate
  replicas: 3
  selector:
    matchLabels:
      name: etcd
  template:
    metadata:
      labels:
        name: etcd
    spec:
      containers:
      - name: member
        image: openshift/etcd-20-centos7
        ports:
        - containerPort: 2379
          protocol: TCP
        - containerPort: 2380
          protocol: TCP
        env:
          # ETCD_NUM_MEMBERS is the maximum number of members to launch (have to match with # of replicas)
        - name: ETCD_NUM_MEMBERS
          value: "3"
        - name: ETCD_INITIAL_CLUSTER_STATE
          value: "new"
          # ETCD_INITIAL_CLUSTER_TOKEN is a token etcd uses to generate unique cluster ID and member ID. Conforms to [a-z0-9]{40}
        - name: ETCD_INITIAL_CLUSTER_TOKEN
          value: INSERT_ETCD_INITIAL_CLUSTER_TOKEN
          # ETCD_DISCOVERY_TOKEN is a unique token used by the discovery service. Conforms to etcd-cluster-[a-z0-9]{5}
        - name: ETCD_DISCOVERY_TOKEN
          value: INSERT_ETCD_DISCOVERY_TOKEN
          # ETCD_DISCOVERY_URL connects etcd instances together by storing a list of peer addresses,
          # metadata and the initial size of the cluster under a unique address
        - name: ETCD_DISCOVERY_URL
          value: "http://etcd-discovery:2379"
        - name: ETCDCTL_PEERS
          value: "http://etcd:2379"
        resources: {}
        terminationMessagePath: "/dev/termination-log"
        imagePullPolicy: IfNotPresent
        securityContext:
          capabilities: {}
          privileged: false
      restartPolicy: Always
      dnsPolicy: ClusterFirst
      serviceAccount: ''
status: {}