From 85f20c126ce914cf58c9b261c2a80dcce96cc74f Mon Sep 17 00:00:00 2001 From: Joakim Olsson Date: Thu, 8 Nov 2018 15:17:07 +0100 Subject: [PATCH] Prepare for Kubernetes deployment --- default.conf | 10 ++++- deployment_files/deploy.yaml | 65 +++++++++++++++++++++++++++++ deployment_files/ingress-local.yaml | 16 +++++++ deployment_files/ingress-prod.yaml | 17 ++++++++ 4 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 deployment_files/deploy.yaml create mode 100644 deployment_files/ingress-local.yaml create mode 100644 deployment_files/ingress-prod.yaml diff --git a/default.conf b/default.conf index 42f5490..abe2b7a 100644 --- a/default.conf +++ b/default.conf @@ -2,14 +2,20 @@ server { listen 80; server_name localhost; - access_log /log/access.log combined; - error_log /log/error.log error; + access_log /dev/stdout combined; + error_log /dev/stdout info; location / { root /usr/share/nginx/html; index index.html index.htm; } + location /health { + add_header Content-Type text/plain; + access_log off; + return 200 'Ok'; + } + error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; diff --git a/deployment_files/deploy.yaml b/deployment_files/deploy.yaml new file mode 100644 index 0000000..d8fa35d --- /dev/null +++ b/deployment_files/deploy.yaml @@ -0,0 +1,65 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: unbound-site + labels: + app: unbound-site + annotations: + kubernetes.io/change-cause: "${TIMESTAMP} Deployed commit id: ${COMMIT}" +spec: + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + minReadySeconds: 30 + selector: + matchLabels: + app: unbound-site + template: + metadata: + labels: + app: unbound-site + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: "app" + operator: In + values: + - unbound-site + topologyKey: kubernetes.io/hostname + containers: + - name: unbound-site + readinessProbe: + httpGet: + path: /health + port: 80 + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 5 + imagePullPolicy: Always + image: registry.gitlab.com/unboundsoftware/unbound-site:${COMMIT} + ports: + - containerPort: 80 + +--- + +apiVersion: v1 +kind: Service +metadata: + name: unbound-site + labels: + app: unbound-site +spec: + type: NodePort + selector: + app: unbound-site + ports: + - port: 80 + targetPort: 80 diff --git a/deployment_files/ingress-local.yaml b/deployment_files/ingress-local.yaml new file mode 100644 index 0000000..be589c8 --- /dev/null +++ b/deployment_files/ingress-local.yaml @@ -0,0 +1,16 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: unbound-site-ingress + annotations: + kubernetes.io/ingress.class: "nginx" + ingress.kubernetes.io/enable-cors: "true" +spec: + rules: + - host: "local-unbound.unbound.se" + http: + paths: + - path: / + backend: + serviceName: unbound-site + servicePort: 80 diff --git a/deployment_files/ingress-prod.yaml b/deployment_files/ingress-prod.yaml new file mode 100644 index 0000000..d6a6ab3 --- /dev/null +++ b/deployment_files/ingress-prod.yaml @@ -0,0 +1,17 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: unbound-site-ingress + annotations: + kubernetes.io/ingress.class: "nginx" + ingress.kubernetes.io/enable-cors: "true" + ingress.kubernetes.io/force-ssl-redirect: "true" +spec: + rules: + - host: "unbound.se" + http: + paths: + - path: / + backend: + serviceName: unbound-site + servicePort: 80