Add AWS support for externaldns.
- Add AWS support
- Add /healtz
Change-Id: I4cbb76ac5a36685414a834ad839e04c19ab0db3d
Signed-off-by: Sergii Golovatiuk <sgolovatiuk@mirantis.com>
diff --git a/README.rst b/README.rst
index e157e20..5ad0948 100644
--- a/README.rst
+++ b/README.rst
@@ -148,6 +148,23 @@
OS_PASSWORD: password
OS_REGION_NAME: RegionOne
+Enable external DNS addon with AWS provider
+
+.. code-block:: yaml
+
+ parameters:
+ kubernetes:
+ common:
+ addons:
+ externaldns:
+ externaldns:
+ enabled: True
+ domain: company.mydomain
+ provider: aws
+ aws_options:
+ AWS_ACCESS_KEY_ID: XXXXXXXXXXXXXXXXXXXX
+ AWS_SECRET_ACCESS_KEY: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
Enable OpenStack cloud provider
.. code-block:: yaml
diff --git a/kubernetes/files/kube-addons/externaldns/externaldns-aws-secret.yaml b/kubernetes/files/kube-addons/externaldns/externaldns-aws-secret.yaml
new file mode 100644
index 0000000..2221f1d
--- /dev/null
+++ b/kubernetes/files/kube-addons/externaldns/externaldns-aws-secret.yaml
@@ -0,0 +1,14 @@
+{%- from "kubernetes/map.jinja" import common with context -%}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: aws-secret
+ namespace: kube-system
+ labels:
+ addonmanager.kubernetes.io/mode: EnsureExists
+type: Opaque
+data:
+{%- for option, value in common.addons.externaldns.aws_options.items() %}
+ {{ option }}: {{ salt['hashutil.base64_b64encode'](value) }}
+{%- endfor %}
diff --git a/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml b/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
index 9dccf58..0803d6e 100644
--- a/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
+++ b/kubernetes/files/kube-addons/externaldns/externaldns-deploy.yml
@@ -3,11 +3,13 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
- namespace: {{ common.addons.externaldns.namespace }}
name: external-dns
+ namespace: {{ common.addons.externaldns.namespace }}
labels:
+ k8s-app: externaldns
addonmanager.kubernetes.io/mode: Reconcile
spec:
+ replicas: 1
strategy:
type: Recreate
template:
@@ -21,6 +23,7 @@
containers:
- name: external-dns
image: {{ common.addons.externaldns.image }}
+ imagePullPolicy: Always
args:
- --source=service
- --source=ingress
@@ -38,4 +41,12 @@
envFrom:
- secretRef:
name: designate-os-secret
+ {%- elif common.addons.externaldns.provider == "aws" %}
+ envFrom:
+ - secretRef:
+ name: aws-secret
{%- endif %}
+ livenessProbe:
+ httpGet:
+ port: 7979
+ path: /healthz
diff --git a/kubernetes/master/kube-addons.sls b/kubernetes/master/kube-addons.sls
index 31770a5..99156a2 100644
--- a/kubernetes/master/kube-addons.sls
+++ b/kubernetes/master/kube-addons.sls
@@ -181,12 +181,20 @@
- dir_mode: 755
- makedirs: True
-{%- if common.addons.externaldns.get('provider') == 'designate' %}
+{%- if common.addons.get('externaldns', {}).get('provider') == 'designate' %}
/etc/kubernetes/addons/externaldns/externaldns-designate-secret.yaml:
file.managed:
- source: salt://kubernetes/files/kube-addons/externaldns/externaldns-designate-secret.yaml
- template: jinja
- group: root
+{% endif %}
+
+{%- if common.addons.get('externaldns', {}).get('provider') == 'aws' %}
+/etc/kubernetes/addons/externaldns/externaldns-aws-secret.yaml:
+ file.managed:
+ - source: salt://kubernetes/files/kube-addons/externaldns/externaldns-aws-secret.yaml
+ - template: jinja
+ - group: root
- dir_mode: 755
- makedirs: True
{% endif %}