From 2bc507c2d43a3697c8fb2b280ebb4a7f179f90ab Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Wed, 28 Jun 2017 16:22:46 -0400 Subject: [PATCH] Add example of TLS termination using a classic ELB --- examples/tls-termination/elb-nginx/README.md | 15 ++ .../elb-nginx/images/listener.png | Bin 0 -> 37729 bytes .../elb-nginx/nginx-ingress-controller.yaml | 135 ++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 examples/tls-termination/elb-nginx/README.md create mode 100644 examples/tls-termination/elb-nginx/images/listener.png create mode 100644 examples/tls-termination/elb-nginx/nginx-ingress-controller.yaml diff --git a/examples/tls-termination/elb-nginx/README.md b/examples/tls-termination/elb-nginx/README.md new file mode 100644 index 000000000..9fc110b19 --- /dev/null +++ b/examples/tls-termination/elb-nginx/README.md @@ -0,0 +1,15 @@ + +### Elastic Load Balancer for TLS termination + +This example shows the required steps to use classic Elastic Load Balancer for TLS termination. + +Change line of the file `elb-tls-nginx-ingress-controller.yaml` replacing the dummy id with a valid one `"arn:aws:acm:us-west-2:XXXXXXXX:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX"` + +Then execute: +``` +$ kubectl create -f elb-tls-nginx-ingress-controller.yaml +``` + +This example creates an ELB with just two listeners, one in port 80 and another in port 443 + +![Listeners](images/listener.png) diff --git a/examples/tls-termination/elb-nginx/images/listener.png b/examples/tls-termination/elb-nginx/images/listener.png new file mode 100644 index 0000000000000000000000000000000000000000..006c698711be9eecba1663daf85d4c3d1a0fd074 GIT binary patch literal 37729 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

!EB#p4 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 X*+G1^BQK6YjC!S>wvkpD*gpI}f*@K~ literal 0 HcmV?d00001 diff --git a/examples/tls-termination/elb-nginx/nginx-ingress-controller.yaml b/examples/tls-termination/elb-nginx/nginx-ingress-controller.yaml new file mode 100644 index 000000000..ea9e08edf --- /dev/null +++ b/examples/tls-termination/elb-nginx/nginx-ingress-controller.yaml @@ -0,0 +1,135 @@ +kind: Service +apiVersion: v1 +metadata: + name: nginx-default-backend + labels: + k8s-addon: ingress-nginx.addons.k8s.io +spec: + ports: + - port: 80 + targetPort: http + selector: + app: nginx-default-backend + +--- + +kind: Deployment +apiVersion: extensions/v1beta1 +metadata: + name: nginx-default-backend + labels: + k8s-addon: ingress-nginx.addons.k8s.io +spec: + replicas: 1 + template: + metadata: + labels: + k8s-addon: ingress-nginx.addons.k8s.io + app: nginx-default-backend + spec: + terminationGracePeriodSeconds: 60 + containers: + - name: default-http-backend + image: gcr.io/google_containers/defaultbackend:1.0 + livenessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + initialDelaySeconds: 30 + timeoutSeconds: 5 + resources: + limits: + cpu: 10m + memory: 20Mi + requests: + cpu: 10m + memory: 20Mi + ports: + - name: http + containerPort: 8080 + protocol: TCP + +--- + +kind: ConfigMap +apiVersion: v1 +metadata: + name: ingress-nginx + labels: + k8s-addon: ingress-nginx.addons.k8s.io + +--- + +kind: Service +apiVersion: v1 +metadata: + name: ingress-nginx + labels: + k8s-addon: ingress-nginx.addons.k8s.io + annotations: + # replace with the correct value of the generated certifcate in the AWS console + service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-west-2:XXXXXXXX:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX" + # the backend instances are HTTP + service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http" + # Map port 443 + service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https" + +spec: + type: LoadBalancer + selector: + app: ingress-nginx + ports: + - name: http + port: 80 + targetPort: http + - name: https + port: 443 + targetPort: http + +--- + +kind: Deployment +apiVersion: extensions/v1beta1 +metadata: + name: ingress-nginx + labels: + k8s-addon: ingress-nginx.addons.k8s.io +spec: + replicas: 1 + template: + metadata: + labels: + app: ingress-nginx + k8s-addon: ingress-nginx.addons.k8s.io + spec: + terminationGracePeriodSeconds: 60 + containers: + - image: quay.io/aledbf/nginx-ingress-controller:0.154 + name: ingress-nginx + imagePullPolicy: Always + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 30 + timeoutSeconds: 5 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + args: + - /nginx-ingress-controller + - --default-backend-service=$(POD_NAMESPACE)/nginx-default-backend + - --configmap=$(POD_NAMESPACE)/ingress-nginx + - --publish-service=$(POD_NAMESPACE)/ingress-nginx