From 12caf1705165465da18c2ecaa9ee2f0ec5655718 Mon Sep 17 00:00:00 2001 From: Matthew Walter Date: Fri, 19 Apr 2019 02:54:15 -0400 Subject: [PATCH] Kustomize to test backend for ArgoCD --- kubernetes/argo-test/base/deployment.yaml | 147 ++++++++++++++++++ kubernetes/argo-test/base/kustomization.yaml | 9 ++ kubernetes/argo-test/base/service.yaml | 13 ++ .../overlays/prod/database-service.yaml | 7 + .../argo-test/overlays/prod/ingress.yaml | 20 +++ .../overlays/prod/kustomization.yaml | 12 ++ .../overlays/prod/redis-service.yaml | 11 ++ .../overlays/staging/database-service.yaml | 7 + .../overlays/staging/deployment.yaml | 13 ++ .../argo-test/overlays/staging/ingress.yaml | 20 +++ .../overlays/staging/kustomization.yaml | 15 ++ .../overlays/staging/redis-service.yaml | 11 ++ 12 files changed, 285 insertions(+) create mode 100644 kubernetes/argo-test/base/deployment.yaml create mode 100644 kubernetes/argo-test/base/kustomization.yaml create mode 100644 kubernetes/argo-test/base/service.yaml create mode 100644 kubernetes/argo-test/overlays/prod/database-service.yaml create mode 100644 kubernetes/argo-test/overlays/prod/ingress.yaml create mode 100644 kubernetes/argo-test/overlays/prod/kustomization.yaml create mode 100644 kubernetes/argo-test/overlays/prod/redis-service.yaml create mode 100644 kubernetes/argo-test/overlays/staging/database-service.yaml create mode 100644 kubernetes/argo-test/overlays/staging/deployment.yaml create mode 100644 kubernetes/argo-test/overlays/staging/ingress.yaml create mode 100644 kubernetes/argo-test/overlays/staging/kustomization.yaml create mode 100644 kubernetes/argo-test/overlays/staging/redis-service.yaml diff --git a/kubernetes/argo-test/base/deployment.yaml b/kubernetes/argo-test/base/deployment.yaml new file mode 100644 index 0000000..3656aa6 --- /dev/null +++ b/kubernetes/argo-test/base/deployment.yaml @@ -0,0 +1,147 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: operationcode-backend +spec: + replicas: 2 + revisionHistoryLimit: 5 + template: + spec: + containers: + - name: app + image: operationcode/operationcode_backend:latest + imagePullPolicy: Always + ports: + - containerPort: 3000 + env: + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: backend-secrets + key: postgres_password + - name: AIRTABLE_API_KEY + valueFrom: + secretKeyRef: + name: backend-secrets + key: airtable_api_key + - name: SLACK_LEGACY_ADMIN_TOKEN + valueFrom: + secretKeyRef: + name: backend-secrets + key: slack_legacy_admin_token + - name: AIRTABLE_BASE_ID + valueFrom: + secretKeyRef: + name: backend-secrets + key: airtable_base_id + optional: true + - name: GIT_HUB_CLIENT_ID + valueFrom: + secretKeyRef: + name: backend-secrets + key: git_hub_client_id + optional: true + - name: GIT_HUB_CLIENT_SECRET + valueFrom: + secretKeyRef: + name: backend-secrets + key: git_hub_client_secret + optional: true + - name: GIT_HUB_OAUTH_TOKEN + valueFrom: + secretKeyRef: + name: backend-secrets + key: git_hub_oauth_token + optional: true + - name: PY_BOT_AUTH_KEY + valueFrom: + secretKeyRef: + name: backend-secrets + key: py_bot_auth_key + optional: true + - name: POSTGRES_HOST + value: opcode-postgres + - name: REDIS_URL + value: redis://opcode-redis:6379/0 + - name: RAILS_ENV + value: production + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: backend-secrets + key: postgres_user + - name: SLACK_SUBDOMAIN + valueFrom: + secretKeyRef: + name: backend-secrets + key: slack_subdomain + - name: SLACK_TOKEN + valueFrom: + secretKeyRef: + name: backend-secrets + key: slack_token + - name: JWT_SECRET_KEY + valueFrom: + secretKeyRef: + name: backend-secrets + key: jwt_secret_key + - name: SECRET_KEY_BASE + valueFrom: + secretKeyRef: + name: backend-secrets + key: secret_key_base + - name: SKYLIGHT_AUTHENTICATION + valueFrom: + secretKeyRef: + name: backend-secrets + key: skylight_authentication + - name: sidekiq + image: operationcode/operationcode_backend:latest + command: ["sidekiq", "-C config/sidekiq.yml.erb"] + imagePullPolicy: Always + env: + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: backend-secrets + key: postgres_password + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: backend-secrets + key: postgres_user + - name: POSTGRES_HOST + value: opcode-postgres + - name: REDIS_URL + value: redis://opcode-redis:6379/0 + - name: SLACK_SUBDOMAIN + valueFrom: + secretKeyRef: + name: backend-secrets + key: slack_subdomain + - name: SLACK_LEGACY_ADMIN_TOKEN + valueFrom: + secretKeyRef: + name: backend-secrets + key: slack_legacy_admin_token + - name: SLACK_TOKEN + valueFrom: + secretKeyRef: + name: backend-secrets + key: slack_token + - name: RAILS_ENV + value: production + - name: JWT_SECRET_KEY + valueFrom: + secretKeyRef: + name: backend-secrets + key: jwt_secret_key + - name: SECRET_KEY_BASE + valueFrom: + secretKeyRef: + name: backend-secrets + key: secret_key_base + volumes: + - name: backend-secrets + secret: + secretName: backend-secrets diff --git a/kubernetes/argo-test/base/kustomization.yaml b/kubernetes/argo-test/base/kustomization.yaml new file mode 100644 index 0000000..d460f72 --- /dev/null +++ b/kubernetes/argo-test/base/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +commonLabels: + app: operationcode-backend + +resources: +- deployment.yaml +- service.yaml diff --git a/kubernetes/argo-test/base/service.yaml b/kubernetes/argo-test/base/service.yaml new file mode 100644 index 0000000..1e1b6db --- /dev/null +++ b/kubernetes/argo-test/base/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: operationcode-backend-service +spec: + selector: + app: operationcode-backend + ports: + - protocol: TCP + name: http + port: 80 + targetPort: 3000 + type: ClusterIP diff --git a/kubernetes/argo-test/overlays/prod/database-service.yaml b/kubernetes/argo-test/overlays/prod/database-service.yaml new file mode 100644 index 0000000..685c2af --- /dev/null +++ b/kubernetes/argo-test/overlays/prod/database-service.yaml @@ -0,0 +1,7 @@ +kind: Service +apiVersion: v1 +metadata: + name: opcode-postgres +spec: + type: ExternalName + externalName: prod-postgres-20180107.czwauqf3tjaz.us-east-2.rds.amazonaws.com diff --git a/kubernetes/argo-test/overlays/prod/ingress.yaml b/kubernetes/argo-test/overlays/prod/ingress.yaml new file mode 100644 index 0000000..8a8ed3c --- /dev/null +++ b/kubernetes/argo-test/overlays/prod/ingress.yaml @@ -0,0 +1,20 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + kubernetes.io/ingress.class: nginx + kubernetes.io/tls-acme: "true" + name: operationcode-backend +spec: + rules: + - host: api.operationcode.org + http: + paths: + - backend: + serviceName: operationcode-backend-service + servicePort: 80 + path: / + tls: + - hosts: + - api.operationcode.org + secretName: operationcode-backend-tls diff --git a/kubernetes/argo-test/overlays/prod/kustomization.yaml b/kubernetes/argo-test/overlays/prod/kustomization.yaml new file mode 100644 index 0000000..2909f73 --- /dev/null +++ b/kubernetes/argo-test/overlays/prod/kustomization.yaml @@ -0,0 +1,12 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: operationcode + +bases: +- ../../base + +resources: +- ingress.yaml +- redis-service.yaml +- database-service.yaml diff --git a/kubernetes/argo-test/overlays/prod/redis-service.yaml b/kubernetes/argo-test/overlays/prod/redis-service.yaml new file mode 100644 index 0000000..4454753 --- /dev/null +++ b/kubernetes/argo-test/overlays/prod/redis-service.yaml @@ -0,0 +1,11 @@ +kind: Service +apiVersion: v1 +metadata: + name: opcode-redis +spec: + selector: + app: operationcode-redis-redis + ports: + - protocol: TCP + port: 6379 + targetPort: 6379 diff --git a/kubernetes/argo-test/overlays/staging/database-service.yaml b/kubernetes/argo-test/overlays/staging/database-service.yaml new file mode 100644 index 0000000..47410d0 --- /dev/null +++ b/kubernetes/argo-test/overlays/staging/database-service.yaml @@ -0,0 +1,7 @@ +kind: Service +apiVersion: v1 +metadata: + name: opcode-postgres +spec: + type: ExternalName + externalName: staging-postgres-20180408.czwauqf3tjaz.us-east-2.rds.amazonaws.com diff --git a/kubernetes/argo-test/overlays/staging/deployment.yaml b/kubernetes/argo-test/overlays/staging/deployment.yaml new file mode 100644 index 0000000..972f0ca --- /dev/null +++ b/kubernetes/argo-test/overlays/staging/deployment.yaml @@ -0,0 +1,13 @@ + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: operationcode-backend +spec: + template: + spec: + containers: + - name: app + env: + - name: RAILS_ENV + value: staging diff --git a/kubernetes/argo-test/overlays/staging/ingress.yaml b/kubernetes/argo-test/overlays/staging/ingress.yaml new file mode 100644 index 0000000..fa68734 --- /dev/null +++ b/kubernetes/argo-test/overlays/staging/ingress.yaml @@ -0,0 +1,20 @@ +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + annotations: + kubernetes.io/ingress.class: nginx + kubernetes.io/tls-acme: "true" + name: operationcode-backend +spec: + rules: + - host: api.staging.operationcode.org + http: + paths: + - backend: + serviceName: operationcode-backend-service + servicePort: 80 + path: / + tls: + - hosts: + - api.staging.operationcode.org + secretName: operationcode-backend-tls diff --git a/kubernetes/argo-test/overlays/staging/kustomization.yaml b/kubernetes/argo-test/overlays/staging/kustomization.yaml new file mode 100644 index 0000000..5c2d1e0 --- /dev/null +++ b/kubernetes/argo-test/overlays/staging/kustomization.yaml @@ -0,0 +1,15 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: operationcode-staging + +bases: +- ../../base + +resources: +- ingress.yaml +- redis-service.yaml +- database-service.yaml + +patchesStrategicMerge: + - deployment.yaml \ No newline at end of file diff --git a/kubernetes/argo-test/overlays/staging/redis-service.yaml b/kubernetes/argo-test/overlays/staging/redis-service.yaml new file mode 100644 index 0000000..62d4297 --- /dev/null +++ b/kubernetes/argo-test/overlays/staging/redis-service.yaml @@ -0,0 +1,11 @@ +kind: Service +apiVersion: v1 +metadata: + name: opcode-redis +spec: + selector: + app: operationcode-staging-redis-redis + ports: + - protocol: TCP + port: 6379 + targetPort: 6379