Merge "fix ns delete command"
diff --git a/README.rst b/README.rst
index 4d375e8..0ec06d2 100644
--- a/README.rst
+++ b/README.rst
@@ -110,6 +110,22 @@
- secondcluster.mydomain
- thirdcluster.mydomain
+Enable external DNS addon with CoreDNS provider
+
+.. code-block:: yaml
+
+ parameters:
+ kubernetes:
+ common:
+ addons:
+ externaldns:
+ coredns:
+ enabled: True
+ externaldns:
+ enabled: True
+ domain: company.mydomain
+ provider: coredns
+
Configure service verbosity
.. code-block:: yaml
diff --git a/kubernetes/files/kube-addons/coredns/coredns-cm.yml b/kubernetes/files/kube-addons/coredns/coredns-cm.yml
index 43d9ad4..0cd3a48 100644
--- a/kubernetes/files/kube-addons/coredns/coredns-cm.yml
+++ b/kubernetes/files/kube-addons/coredns/coredns-cm.yml
@@ -6,15 +6,25 @@
metadata:
name: coredns
namespace: {{ common.addons.coredns.namespace }}
- addonmanager.kubernetes.io/mode: Reconcile
+ labels:
+ addonmanager.kubernetes.io/mode: Reconcile
data:
Corefile: |
.:53 {
+{% if master.federation.enabled %}
etcd {{ master.federation.name }} {
stubzones
path /skydns
endpoint http://coredns-etcd:2379
}
+{% endif %}
+{% if common.addons.externaldns.enabled %}
+ etcd {{ common.addons.externaldns.domain }} {
+ stubzones
+ path /skydns
+ endpoint http://coredns-etcd:2379
+ }
+{% endif %}
errors
log stdout
health
diff --git a/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml b/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
new file mode 100644
index 0000000..39723b1
--- /dev/null
+++ b/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
@@ -0,0 +1,36 @@
+{%- from "kubernetes/map.jinja" import common with context -%}
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+ namespace: {{ common.addons.externaldns.namespace }}
+ name: external-dns
+ labels:
+ addonmanager.kubernetes.io/mode: Reconcile
+spec:
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: external-dns
+ spec:
+ tolerations:
+ - key: node-role.kubernetes.io/master
+ effect: NoSchedule
+ containers:
+ - name: external-dns
+ image: {{ common.addons.externaldns.image }}
+ args:
+ - --source=service
+ - --source=ingress
+ - --domain-filter={{ common.addons.externaldns.domain }} # will make ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones
+ - --provider={{ common.addons.externaldns.provider }}
+ #- --policy=upsert-only # would prevent ExternalDNS from deleting any records, omit to enable full synchronization
+ - --registry=txt
+ - --txt-owner-id=my-identifier
+ {% if common.addons.externaldns.provider == "coredns" %}
+ env:
+ - name: ETCD_URLS
+ value: "https://coredns-etcd:2379"
+ {% endif %}
diff --git a/kubernetes/files/kubelet/default.master b/kubernetes/files/kubelet/default.master
index 1543200..b4cf09e 100644
--- a/kubernetes/files/kubelet/default.master
+++ b/kubernetes/files/kubelet/default.master
@@ -8,6 +8,7 @@
--cluster_dns={{ common.addons.dns.server }} \
--cluster_domain={{ common.addons.dns.domain|replace('_', '-') }} \
--cni-bin-dir={{ master.apiserver.get('cni_bin_dir', '/opt/cni/bin') }} \
+--hostname-override={{ master.host.name }} \
--v={{ master.get('verbosity', 2) }} \
--node-labels=node-role.kubernetes.io/master=true \
{%- for key, value in master.get('kubelet', {}).get('daemon_opts', {}).iteritems() %}
diff --git a/kubernetes/files/kubelet/default.pool b/kubernetes/files/kubelet/default.pool
index 1bbeb1a..73c9171 100644
--- a/kubernetes/files/kubelet/default.pool
+++ b/kubernetes/files/kubelet/default.pool
@@ -10,6 +10,7 @@
--cluster_dns={{ common.addons.dns.server }} \
--cluster_domain={{ common.addons.dns.domain|replace('_', '-') }} \
--cni-bin-dir={{ pool.apiserver.get('cni_bin_dir', '/opt/cni/bin') }} \
+--hostname-override={{ pool.host.name }} \
--v={{ pool.get('verbosity', 2) }} \
--node-labels=node-role.kubernetes.io/node=true \
{%- if pool.network.engine in ['calico', 'opencontrail'] %}
diff --git a/kubernetes/master/kube-addons.sls b/kubernetes/master/kube-addons.sls
index 75f7c26..812c84b 100644
--- a/kubernetes/master/kube-addons.sls
+++ b/kubernetes/master/kube-addons.sls
@@ -153,6 +153,16 @@
{% endif %}
+{%- if common.addons.get('externaldns', {}).get('enabled') %}
+/etc/kubernetes/addons/externaldns/externaldns-deploy.yaml:
+ file.managed:
+ - source: salt://kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
+ - template: jinja
+ - group: root
+ - dir_mode: 755
+ - makedirs: True
+{% endif %}
+
{%- if common.addons.dashboard.enabled %}
/etc/kubernetes/addons/dashboard/dashboard-service.yaml:
diff --git a/metadata/service/common.yml b/metadata/service/common.yml
index bad9c19..8c921db 100644
--- a/metadata/service/common.yml
+++ b/metadata/service/common.yml
@@ -25,7 +25,7 @@
enabled: False
helm:
enabled: False
- tiller_image: gcr.io/kubernetes-helm/tiller:v2.3.0
+ tiller_image: gcr.io/kubernetes-helm/tiller:v2.4.2
netchecker:
enabled: False
interval: 60
@@ -46,6 +46,12 @@
namespace: kube-system
image: coredns/coredns:latest
etcd_image: quay.io/coreos/etcd:v3.1.0
+ externaldns:
+ enabled: True
+ namespace: kube-system
+ image: mirantis/external-dns:latest
+ domain: ${_param:kubernetes_cluster_domain}
+ provider: coredns
virtlet:
enabled: False
namespace: kube-system
diff --git a/metadata/service/master/single.yml b/metadata/service/master/single.yml
index 5133b5d..61464f7 100644
--- a/metadata/service/master/single.yml
+++ b/metadata/service/master/single.yml
@@ -49,7 +49,7 @@
enabled: False
helm:
enabled: False
- tiller_image: gcr.io/kubernetes-helm/tiller:v2.3.0
+ tiller_image: gcr.io/kubernetes-helm/tiller:v2.4.2
calico_policy:
enabled: False
image: calico/kube-policy-controller:v0.5.4