From a27de8ea9b8b11417168ac3a35126c171c7db926 Mon Sep 17 00:00:00 2001 From: King'ori Maina Date: Sun, 12 Feb 2017 01:12:21 +0200 Subject: [PATCH 1/3] Add route53-mapper v1.2.0.yml --- addons/route53-mapper/README.md | 64 ++++++++++++++++++++++++++++++++ addons/route53-mapper/addon.yml | 9 +++++ addons/route53-mapper/v1.2.0.yml | 22 +++++++++++ 3 files changed, 95 insertions(+) create mode 100644 addons/route53-mapper/README.md create mode 100644 addons/route53-mapper/addon.yml create mode 100644 addons/route53-mapper/v1.2.0.yml diff --git a/addons/route53-mapper/README.md b/addons/route53-mapper/README.md new file mode 100644 index 0000000000..c9d98094f7 --- /dev/null +++ b/addons/route53-mapper/README.md @@ -0,0 +1,64 @@ +# Route53 Mapping Service + +This is a Kubernetes service that polls services (in all namespaces) that are +configured with the label `dns=route53` and adds the appropriate alias to the +domain specified by the annotation `domainName=sub.mydomain.io`. Multiple +domains and top level domains are also supported: +`domainName=.mydomain.io,sub1.mydomain.io,sub2.mydomain.io`. + +## Usage + +### Deploy To Cluster + +``` +# Version 1.2.0 +# https://github.com/wearemolecule/route53-kubernetes/tree/v1.2.0 +$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/monitoring-standalone/v1.2.0.yaml +``` + +### Service Configuration + +Add the `dns: route53` label and your target DNS entry in a `domainName` +annotation. Example below: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: my-awesome-app + labels: + app: my-awesome-app + dns: route53 + annotations: + domainName: "test.mydomain.tld" + service.beta.kubernetes.io/aws-load-balancer-ssl-cert: |- + arn:aws:acm:us-east-1:659153740712:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http + service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443" +spec: + selector: + app: my-awesome-app + ports: + - name: http + port: 80 + protocol: TCP + - name: https + port: 443 + protocol: TCP + type: LoadBalancer +``` + +An `A` record for `test.mydomain.tld` will be created as an alias to the ELB +that is configured by Kuberntes (see `service.beta.kubernetes.io/aws-load- +balancer` annotations). This assumes that a hosted zone exists in Route53 for +`mydomain.tld`. Any record that previously existed for that dns record will be +updated. + +### Caveats + +[Molecule Software][1] **DON'T currently sign their docker images**. So, please +use their images at your own risk. + +[1]: https://github.com/wearemolecule + + diff --git a/addons/route53-mapper/addon.yml b/addons/route53-mapper/addon.yml new file mode 100644 index 0000000000..bdc7505957 --- /dev/null +++ b/addons/route53-mapper/addon.yml @@ -0,0 +1,9 @@ +kind: Addons +metadata: + name: route53-mapper +spec: + addons: + - version: 1.2.0 + selector: + k8s-addon: route53-mapper.addons.k8s.io + manifest: v1.2.0.yaml diff --git a/addons/route53-mapper/v1.2.0.yml b/addons/route53-mapper/v1.2.0.yml new file mode 100644 index 0000000000..67e8161451 --- /dev/null +++ b/addons/route53-mapper/v1.2.0.yml @@ -0,0 +1,22 @@ +--- +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: route53-mapper + namespace: kube-system + labels: + app: route53-mapper + k8s-addon: route53-mapper.addons.k8s.io +spec: + replicas: 1 + selector: + matchLabels: + app: route53-mapper + template: + metadata: + labels: + app: route53-mapper + spec: + containers: + - image: quay.io/molecule/route53-kubernetes:v1.2.0 + name: route53-mapper From 03267879eb31c553cc4374bfc376f441b01b73e2 Mon Sep 17 00:00:00 2001 From: King'ori Maina Date: Sun, 12 Feb 2017 01:31:57 +0200 Subject: [PATCH 2/3] Add note about Route53 Mapper addon in Kops docs --- docs/addons.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/addons.md b/docs/addons.md index 2bac2f0fcc..9f10802f3b 100644 --- a/docs/addons.md +++ b/docs/addons.md @@ -35,3 +35,12 @@ Install using: ``` kubectl create -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/monitoring-standalone/v1.2.0.yaml ``` + +### Route53 Mapper + +Automates creation and updating of entries on Route53 with `A` records pointing +to ELB-backed `LoadBalancer` services created by Kubernetes. Install using: + +``` +kubectl apply -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/monitoring-standalone/v1.2.0.yaml +``` From b215384f149315b7e89437a2aa8e85e7bb6bda16 Mon Sep 17 00:00:00 2001 From: King'ori Maina Date: Sun, 12 Feb 2017 01:34:56 +0200 Subject: [PATCH 3/3] Schedule on master node --- addons/route53-mapper/v1.2.0.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/route53-mapper/v1.2.0.yml b/addons/route53-mapper/v1.2.0.yml index 67e8161451..3feb55ffff 100644 --- a/addons/route53-mapper/v1.2.0.yml +++ b/addons/route53-mapper/v1.2.0.yml @@ -16,7 +16,11 @@ spec: metadata: labels: app: route53-mapper + annotations: + scheduler.alpha.kubernetes.io/tolerations: '[{"key":"dedicated", "value":"master"}]' spec: + nodeSelector: + kubernetes.io/role: master containers: - image: quay.io/molecule/route53-kubernetes:v1.2.0 name: route53-mapper