Replace coredns etcd deployment with etcd-operator cluster
* This patch introduces cluster mode for coredns. It creates highly
available backend for coredns.
Change-Id: Icdf90bec9a16caa710613bfa227d998719e9729c
Signed-off-by: Sergii Golovatiuk <sgolovatiuk@mirantis.com>
diff --git a/kubernetes/files/kube-addons/coredns/coredns-cm.yml b/kubernetes/files/kube-addons/coredns/coredns-cm.yml
index 0cd3a48..54de711 100644
--- a/kubernetes/files/kube-addons/coredns/coredns-cm.yml
+++ b/kubernetes/files/kube-addons/coredns/coredns-cm.yml
@@ -1,5 +1,5 @@
-{%- from "kubernetes/map.jinja" import common with context %}
-{%- from "kubernetes/map.jinja" import master with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
+{%- from "kubernetes/map.jinja" import master with context -%}
---
apiVersion: v1
kind: ConfigMap
@@ -15,14 +15,14 @@
etcd {{ master.federation.name }} {
stubzones
path /skydns
- endpoint http://coredns-etcd:2379
+ endpoint http://coredns-etcd-cluster-client:2379
}
{% endif %}
{% if common.addons.externaldns.enabled %}
etcd {{ common.addons.externaldns.domain }} {
stubzones
path /skydns
- endpoint http://coredns-etcd:2379
+ endpoint http://coredns-etcd-cluster-client:2379
}
{% endif %}
errors
diff --git a/kubernetes/files/kube-addons/coredns/coredns-deploy.yml b/kubernetes/files/kube-addons/coredns/coredns-deploy.yml
index f225af5..e1e2dd3 100644
--- a/kubernetes/files/kube-addons/coredns/coredns-deploy.yml
+++ b/kubernetes/files/kube-addons/coredns/coredns-deploy.yml
@@ -1,4 +1,4 @@
-{%- from "kubernetes/map.jinja" import common with context %}
+{%- from "kubernetes/map.jinja" import common with context -%}
---
apiVersion: extensions/v1beta1
kind: Deployment
diff --git a/kubernetes/files/kube-addons/coredns/coredns-etcd-cluster.yaml b/kubernetes/files/kube-addons/coredns/coredns-etcd-cluster.yaml
new file mode 100644
index 0000000..8fd6059
--- /dev/null
+++ b/kubernetes/files/kube-addons/coredns/coredns-etcd-cluster.yaml
@@ -0,0 +1,13 @@
+{%- from "kubernetes/map.jinja" import common with context -%}
+---
+apiVersion: etcd.database.coreos.com/v1beta2
+kind: EtcdCluster
+metadata:
+ name: coredns-etcd-cluster
+ labels:
+ app: coredns-etcd-operator
+ addonmanager.kubernetes.io/mode: Reconcile
+spec:
+ size: 3
+ version: {{ common.addons.coredns.etcd.version }}
+ baseImage: {{ common.addons.coredns.etcd.base_image }}
diff --git a/kubernetes/files/kube-addons/coredns/coredns-etcd-operator-deployment.yaml b/kubernetes/files/kube-addons/coredns/coredns-etcd-operator-deployment.yaml
new file mode 100644
index 0000000..0ec870d
--- /dev/null
+++ b/kubernetes/files/kube-addons/coredns/coredns-etcd-operator-deployment.yaml
@@ -0,0 +1,38 @@
+{%- from "kubernetes/map.jinja" import common with context -%}
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ namespace: {{ common.addons.coredns.namespace }}
+ labels:
+ app: coredns-etcd-operator
+ addonmanager.kubernetes.io/mode: Reconcile
+ name: coredns-etcd-operator
+spec:
+ strategy:
+ type: Recreate
+ replicas: 1
+ selector:
+ matchLabels:
+ name: coredns-etcd-operator
+ template:
+ metadata:
+ labels:
+ name: coredns-etcd-operator
+ spec:
+ tolerations:
+ - key: node-role.kubernetes.io/master
+ effect: NoSchedule
+ containers:
+ - name: coredns-etcd-operator
+ image: {{ common.addons.coredns.etcd.operator_image }}
+ env:
+ - name: MY_POD_NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: MY_POD_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.name
+ restartPolicy: Always
diff --git a/kubernetes/files/kube-addons/coredns/etcd-deploy.yml b/kubernetes/files/kube-addons/coredns/etcd-deploy.yml
deleted file mode 100644
index 937ae69..0000000
--- a/kubernetes/files/kube-addons/coredns/etcd-deploy.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-{%- from "kubernetes/map.jinja" import common with context %}
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
- namespace: {{ common.addons.coredns.namespace }}
- labels:
- app: coredns-etcd
- addonmanager.kubernetes.io/mode: Reconcile
- name: coredns-etcd
-spec:
- strategy:
- type: Recreate
- replicas: 1
- selector:
- matchLabels:
- name: coredns-etcd
- template:
- metadata:
- labels:
- name: coredns-etcd
- spec:
- tolerations:
- - key: node-role.kubernetes.io/master
- effect: NoSchedule
- containers:
- - command:
- - /usr/local/bin/etcd
- - --name
- - coredns-etcd
- - --listen-peer-urls
- - http://0.0.0.0:2380
- - --listen-client-urls
- - http://0.0.0.0:2379
- - --advertise-client-urls
- - http://coredns-etcd:2379
- - --initial-cluster-state
- - new
- image: {{ common.addons.coredns.etcd_image }}
- name: coredns-etcd
- ports:
- - containerPort: 2379
- name: client
- protocol: TCP
- - containerPort: 2380
- name: server
- protocol: TCP
- restartPolicy: Always
diff --git a/kubernetes/files/kube-addons/coredns/etcd-svc.yml b/kubernetes/files/kube-addons/coredns/etcd-svc.yml
deleted file mode 100644
index 4272275..0000000
--- a/kubernetes/files/kube-addons/coredns/etcd-svc.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-{%- from "kubernetes/map.jinja" import common with context %}
----
-apiVersion: v1
-kind: Service
-metadata:
- name: coredns-etcd
- namespace: {{ common.addons.coredns.namespace }}
- labels:
- k8s-app: coredns-etcd
- kubernetes.io/cluster-service: "true"
- kubernetes.io/name: "coredns-etcd"
- addonmanager.kubernetes.io/mode: Reconcile
-spec:
- selector:
- k8s-app: coredns-etcd
- ports:
- - name: client
- port: 2379
- protocol: TCP
- targetPort: 2379
- - name: server
- port: 2380
- protocol: TCP
- targetPort: 2380
diff --git a/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml b/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
index 8892c2b..9dccf58 100644
--- a/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
+++ b/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
@@ -33,7 +33,7 @@
{%- if common.addons.externaldns.provider == "coredns" %}
env:
- name: ETCD_URLS
- value: "https://coredns-etcd:2379"
+ value: "http://coredns-etcd-cluster-client:2379"
{%- elif common.addons.externaldns.provider == "designate" %}
envFrom:
- secretRef:
diff --git a/kubernetes/master/kube-addons.sls b/kubernetes/master/kube-addons.sls
index 565a082..31770a5 100644
--- a/kubernetes/master/kube-addons.sls
+++ b/kubernetes/master/kube-addons.sls
@@ -129,6 +129,21 @@
{% endif %}
{%- if common.addons.coredns.enabled or master.federation.enabled %}
+/etc/kubernetes/addons/coredns/coredns-etcd-operator-deployment.yaml:
+ file.managed:
+ - source: salt://kubernetes/files/kube-addons/coredns/coredns-etcd-operator-deployment.yaml
+ - template: jinja
+ - group: root
+ - dir_mode: 755
+ - makedirs: True
+
+/etc/kubernetes/addons/coredns/coredns-etcd-cluster.yaml:
+ file.managed:
+ - source: salt://kubernetes/files/kube-addons/coredns/coredns-etcd-cluster.yaml
+ - template: jinja
+ - group: root
+ - dir_mode: 755
+ - makedirs: True
/etc/kubernetes/addons/coredns/coredns-cm.yml:
file.managed:
@@ -153,22 +168,6 @@
- group: root
- dir_mode: 755
- makedirs: True
-
-/etc/kubernetes/addons/coredns/etcd-svc.yml:
- file.managed:
- - source: salt://kubernetes/files/kube-addons/coredns/etcd-svc.yml
- - template: jinja
- - group: root
- - dir_mode: 755
- - makedirs: True
-
-/etc/kubernetes/addons/coredns/etcd-deploy.yml:
- file.managed:
- - source: salt://kubernetes/files/kube-addons/coredns/etcd-deploy.yml
- - template: jinja
- - group: root
- - dir_mode: 755
- - makedirs: True
{% endif %}
{% endif %}
diff --git a/metadata/service/common.yml b/metadata/service/common.yml
index c29d5ee..063014b 100644
--- a/metadata/service/common.yml
+++ b/metadata/service/common.yml
@@ -45,7 +45,10 @@
enabled: False
namespace: kube-system
image: coredns/coredns:latest
- etcd_image: quay.io/coreos/etcd:v3.1.0
+ etcd:
+ operator_image: quay.io/coreos/etcd-operator:v0.5.2
+ version: 3.1.8
+ base_image: quay.io/coreos/etcd
externaldns:
enabled: False
namespace: kube-system