| package kube |
| |
| service: etcd: kubernetes: spec: clusterIP: "None" |
| |
| deployment: etcd: { |
| kind: "stateful" |
| replicas: 3 |
| |
| image: "quay.io/coreos/etcd:v3.3.10" |
| |
| kubernetes: spec: template: spec: containers: [{command: ["/usr/local/bin/etcd"]}] |
| |
| arg: name: "$(NAME)" |
| arg: "data-dir": "/data/etcd3" |
| arg: "initial-advertise-peer-urls": "http://$(IP):2380" |
| arg: "listen-peer-urls": "http://$(IP):2380" |
| arg: "listen-client-urls": "http://$(IP):2379,http://127.0.0.1:2379" |
| arg: "advertise-client-urls": "http://$(IP):2379" |
| arg: discovery: "https://discovery.etcd.io/xxxxxx" |
| |
| env: ETCDCTL_API: "3" |
| env: ETCD_AUTO_COMPACTION_RETENTION: "4" |
| |
| envSpec: NAME: valueFrom: fieldRef: fieldPath: "metadata.name" |
| envSpec: IP: valueFrom: fieldRef: fieldPath: "status.podIP" |
| |
| expose: port: client: 2379 |
| expose: port: peer: 2380 |
| |
| kubernetes: spec: template: spec: containers: [{ |
| volumeMounts: [{ |
| name: "etcd3" |
| mountPath: "/data" |
| }] |
| livenessProbe: { |
| httpGet: { |
| path: "/health" |
| port: "client" |
| } |
| initialDelaySeconds: 30 |
| } |
| }] |
| |
| kubernetes: spec: { |
| volumeClaimTemplates: [{ |
| metadata: { |
| name: "etcd3" |
| annotations: "volume.alpha.kubernetes.io/storage-class": "default" |
| } |
| spec: { |
| accessModes: ["ReadWriteOnce"] |
| resources: requests: storage: "10Gi" |
| } |
| }] |
| |
| serviceName: "etcd" |
| template: metadata: annotations: "prometheus.io.port": "2379" |
| template: metadata: annotations: "prometheus.io.scrape": "true" |
| template: spec: affinity: { |
| podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: [{ |
| labelSelector: matchExpressions: [{ |
| key: "app" |
| operator: "In" |
| values: ["etcd"] |
| }] |
| topologyKey: "kubernetes.io/hostname" |
| }] |
| } |
| template: spec: terminationGracePeriodSeconds: 10 |
| } |
| } |