From b2ec70d8f74ab5a5c1758a1d1b7dcf6fb85fc62b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=20Pezz=C3=A8?= Date: Sat, 5 Jun 2021 22:58:10 +0200 Subject: [PATCH] feat: allow staging and master deployment --- .github/workflows/kustomize.yml | 10 +++++++--- Makefile | 5 ++++- README.md | 9 +++++---- .../{ => base}/config/haproxy-ingress-configmap.yaml | 0 .../pokeapi.env => base/config/pokeapi.env.sample} | 0 .../{ => base}/deployments/default-deployment.yaml | 0 .../{ => base}/deployments/graphql-deployment.yaml | 0 .../deployments/haproxy-ingress-controller.yaml | 0 .../{ => base}/deployments/pokeapi-deployment.yaml | 2 +- .../{ => base}/deployments/postgres-deployment.yaml | 0 .../{ => base}/deployments/redis-deployment.yaml | 0 .../k8s/kustomize/{ => base}/jobs/load-graphql.yaml | 0 Resources/k8s/kustomize/{ => base}/kustomization.yaml | 0 .../{ => base}/other/ingress-controller-rbac.yaml | 0 Resources/k8s/kustomize/{ => base}/other/ingress.yaml | 0 .../k8s/kustomize/{ => base}/other/namespace.yaml | 0 .../kustomize/{ => base}/secrets/graphql.env.sample | 0 .../kustomize/{ => base}/secrets/postgres.env.sample | 0 Resources/k8s/kustomize/{ => base}/services/cloud.yaml | 0 .../kustomize/{ => base}/services/default-service.yaml | 0 .../kustomize/{ => base}/services/graphql-service.yaml | 0 .../kustomize/{ => base}/services/pokeapi-service.yaml | 0 .../{ => base}/services/postgres-service.yaml | 0 .../kustomize/{ => base}/services/redis-service.yaml | 0 .../volumes/postgres-persistentvolumeclaim.yaml | 0 .../volumes/redis-persistentvolumeclaim.yaml | 0 Resources/k8s/kustomize/staging/kustomization.yaml | 9 +++++++++ 27 files changed, 26 insertions(+), 9 deletions(-) rename Resources/k8s/kustomize/{ => base}/config/haproxy-ingress-configmap.yaml (100%) rename Resources/k8s/kustomize/{config/pokeapi.env => base/config/pokeapi.env.sample} (100%) rename Resources/k8s/kustomize/{ => base}/deployments/default-deployment.yaml (100%) rename Resources/k8s/kustomize/{ => base}/deployments/graphql-deployment.yaml (100%) rename Resources/k8s/kustomize/{ => base}/deployments/haproxy-ingress-controller.yaml (100%) rename Resources/k8s/kustomize/{ => base}/deployments/pokeapi-deployment.yaml (97%) rename Resources/k8s/kustomize/{ => base}/deployments/postgres-deployment.yaml (100%) rename Resources/k8s/kustomize/{ => base}/deployments/redis-deployment.yaml (100%) rename Resources/k8s/kustomize/{ => base}/jobs/load-graphql.yaml (100%) rename Resources/k8s/kustomize/{ => base}/kustomization.yaml (100%) rename Resources/k8s/kustomize/{ => base}/other/ingress-controller-rbac.yaml (100%) rename Resources/k8s/kustomize/{ => base}/other/ingress.yaml (100%) rename Resources/k8s/kustomize/{ => base}/other/namespace.yaml (100%) rename Resources/k8s/kustomize/{ => base}/secrets/graphql.env.sample (100%) rename Resources/k8s/kustomize/{ => base}/secrets/postgres.env.sample (100%) rename Resources/k8s/kustomize/{ => base}/services/cloud.yaml (100%) rename Resources/k8s/kustomize/{ => base}/services/default-service.yaml (100%) rename Resources/k8s/kustomize/{ => base}/services/graphql-service.yaml (100%) rename Resources/k8s/kustomize/{ => base}/services/pokeapi-service.yaml (100%) rename Resources/k8s/kustomize/{ => base}/services/postgres-service.yaml (100%) rename Resources/k8s/kustomize/{ => base}/services/redis-service.yaml (100%) rename Resources/k8s/kustomize/{ => base}/volumes/postgres-persistentvolumeclaim.yaml (100%) rename Resources/k8s/kustomize/{ => base}/volumes/redis-persistentvolumeclaim.yaml (100%) create mode 100644 Resources/k8s/kustomize/staging/kustomization.yaml diff --git a/.github/workflows/kustomize.yml b/.github/workflows/kustomize.yml index 9e0d75ca..f26a3cb2 100644 --- a/.github/workflows/kustomize.yml +++ b/.github/workflows/kustomize.yml @@ -24,12 +24,16 @@ jobs: uses: helm/kind-action@v1.1.0 with: version: v0.11.1 + - name: Create deployment configuration + run: | + cp Resources/k8s/kustomize/base/secrets/postgres.env.sample Resources/k8s/kustomize/base/secrets/postgres.env + cp Resources/k8s/kustomize/base/secrets/graphql.env.sample Resources/k8s/kustomize/base/secrets/graphql.env + cp Resources/k8s/kustomize/base/config/pokeapi.env.sample Resources/k8s/kustomize/base/config/pokeapi.env - name: K8s Apply run: | - cp Resources/k8s/kustomize/secrets/postgres.env.sample Resources/k8s/kustomize/secrets/postgres.env - cp Resources/k8s/kustomize/secrets/graphql.env.sample Resources/k8s/kustomize/secrets/graphql.env - make kustomize-apply + if [ ${GITHUB_REF#refs/heads/} = 'master' ]; then make kustomize-apply; else make kustomize-staging-apply; fi kubectl proxy & + kubectl describe deployment bash Resources/scripts/wait.sh http://localhost:8001/api/v1/namespaces/pokeapi/services/pokeapi/proxy/api/v2/ - name: Set default namespace run: | diff --git a/Makefile b/Makefile index 9f734097..97afba38 100755 --- a/Makefile +++ b/Makefile @@ -102,7 +102,10 @@ hasura-get-anon-schema: # Dumps GraphQL schema gq http://localhost:8080/v1/graphql --introspect > graphql/schema.graphql kustomize-apply: # (Kustomize) Run kubectl apply -k on the connected k8s cluster - kubectl apply -k Resources/k8s/kustomize/ + kubectl apply -k Resources/k8s/kustomize/base/ + +kustomize-staging-apply: # (Kustomize) Run kubectl apply -k on the connected k8s cluster + kubectl apply -k Resources/k8s/kustomize/staging/ k8s-migrate: # (k8s) Run any pending migrations kubectl exec --namespace pokeapi deployment/pokeapi -- python manage.py migrate --settings=config.docker-compose diff --git a/README.md b/README.md index 1449b315..bf2318c9 100755 --- a/README.md +++ b/README.md @@ -108,18 +108,19 @@ A set of examples are provided in the directory [/graphql/examples](./graphql/ex ## Kubernetes   [![k8s status](https://github.com/PokeAPI/pokeapi/actions/workflows/kustomize.yml/badge.svg?branch=master)](https://github.com/PokeAPI/pokeapi/actions/workflows/kustomize.yml) -[Kustomize](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/) files are provided in the folder https://github.com/PokeAPI/pokeapi/tree/master/Resources/k8s/kustomize/. Create and change your secrets: +[Kustomize](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/) files are provided in the folder https://github.com/PokeAPI/pokeapi/tree/master/Resources/k8s/kustomize/base/. Create and change your secrets: ```sh -cp Resources/k8s/kustomize/secrets/postgres.env.sample Resources/k8s/kustomize/secrets/postgres.env -cp Resources/k8s/kustomize/secrets/graphql.env.sample Resources/k8s/kustomize/secrets/graphql.env +cp Resources/k8s/kustomize/base/secrets/postgres.env.sample Resources/k8s/kustomize/base/secrets/postgres.env +cp Resources/k8s/kustomize/base/secrets/graphql.env.sample Resources/k8s/kustomize/base/secrets/graphql.env +cp Resources/k8s/kustomize/base/config/pokeapi.env.sample Resources/k8s/kustomize/base/config/pokeapi.env # Edit the newly created files ``` Configure `kubectl` to point to a cluster and then run the following commands to start a PokéAPI service. ```sh -kubectl apply -k Resources/k8s/kustomize/ +kubectl apply -k Resources/k8s/kustomize/base/ kubectl config set-context --current --namespace pokeapi # (Optional) Set pokeapi ns as the working ns # Wait for the cluster to spin up kubectl exec --namespace pokeapi deployment/pokeapi -- python manage.py migrate --settings=config.docker-compose # Migrate the DB diff --git a/Resources/k8s/kustomize/config/haproxy-ingress-configmap.yaml b/Resources/k8s/kustomize/base/config/haproxy-ingress-configmap.yaml similarity index 100% rename from Resources/k8s/kustomize/config/haproxy-ingress-configmap.yaml rename to Resources/k8s/kustomize/base/config/haproxy-ingress-configmap.yaml diff --git a/Resources/k8s/kustomize/config/pokeapi.env b/Resources/k8s/kustomize/base/config/pokeapi.env.sample similarity index 100% rename from Resources/k8s/kustomize/config/pokeapi.env rename to Resources/k8s/kustomize/base/config/pokeapi.env.sample diff --git a/Resources/k8s/kustomize/deployments/default-deployment.yaml b/Resources/k8s/kustomize/base/deployments/default-deployment.yaml similarity index 100% rename from Resources/k8s/kustomize/deployments/default-deployment.yaml rename to Resources/k8s/kustomize/base/deployments/default-deployment.yaml diff --git a/Resources/k8s/kustomize/deployments/graphql-deployment.yaml b/Resources/k8s/kustomize/base/deployments/graphql-deployment.yaml similarity index 100% rename from Resources/k8s/kustomize/deployments/graphql-deployment.yaml rename to Resources/k8s/kustomize/base/deployments/graphql-deployment.yaml diff --git a/Resources/k8s/kustomize/deployments/haproxy-ingress-controller.yaml b/Resources/k8s/kustomize/base/deployments/haproxy-ingress-controller.yaml similarity index 100% rename from Resources/k8s/kustomize/deployments/haproxy-ingress-controller.yaml rename to Resources/k8s/kustomize/base/deployments/haproxy-ingress-controller.yaml diff --git a/Resources/k8s/kustomize/deployments/pokeapi-deployment.yaml b/Resources/k8s/kustomize/base/deployments/pokeapi-deployment.yaml similarity index 97% rename from Resources/k8s/kustomize/deployments/pokeapi-deployment.yaml rename to Resources/k8s/kustomize/base/deployments/pokeapi-deployment.yaml index d013f925..d057b235 100644 --- a/Resources/k8s/kustomize/deployments/pokeapi-deployment.yaml +++ b/Resources/k8s/kustomize/base/deployments/pokeapi-deployment.yaml @@ -25,7 +25,7 @@ spec: done; containers: - name: pokeapi - image: pokeapi/pokeapi:staging + image: pokeapi/pokeapi:master ports: - containerPort: 8080 securityContext: # CI: Github Actions kills this container if not run with root. Otherwise, it's safe to use the default pokeapi/pokeapi user and remove these lines. diff --git a/Resources/k8s/kustomize/deployments/postgres-deployment.yaml b/Resources/k8s/kustomize/base/deployments/postgres-deployment.yaml similarity index 100% rename from Resources/k8s/kustomize/deployments/postgres-deployment.yaml rename to Resources/k8s/kustomize/base/deployments/postgres-deployment.yaml diff --git a/Resources/k8s/kustomize/deployments/redis-deployment.yaml b/Resources/k8s/kustomize/base/deployments/redis-deployment.yaml similarity index 100% rename from Resources/k8s/kustomize/deployments/redis-deployment.yaml rename to Resources/k8s/kustomize/base/deployments/redis-deployment.yaml diff --git a/Resources/k8s/kustomize/jobs/load-graphql.yaml b/Resources/k8s/kustomize/base/jobs/load-graphql.yaml similarity index 100% rename from Resources/k8s/kustomize/jobs/load-graphql.yaml rename to Resources/k8s/kustomize/base/jobs/load-graphql.yaml diff --git a/Resources/k8s/kustomize/kustomization.yaml b/Resources/k8s/kustomize/base/kustomization.yaml similarity index 100% rename from Resources/k8s/kustomize/kustomization.yaml rename to Resources/k8s/kustomize/base/kustomization.yaml diff --git a/Resources/k8s/kustomize/other/ingress-controller-rbac.yaml b/Resources/k8s/kustomize/base/other/ingress-controller-rbac.yaml similarity index 100% rename from Resources/k8s/kustomize/other/ingress-controller-rbac.yaml rename to Resources/k8s/kustomize/base/other/ingress-controller-rbac.yaml diff --git a/Resources/k8s/kustomize/other/ingress.yaml b/Resources/k8s/kustomize/base/other/ingress.yaml similarity index 100% rename from Resources/k8s/kustomize/other/ingress.yaml rename to Resources/k8s/kustomize/base/other/ingress.yaml diff --git a/Resources/k8s/kustomize/other/namespace.yaml b/Resources/k8s/kustomize/base/other/namespace.yaml similarity index 100% rename from Resources/k8s/kustomize/other/namespace.yaml rename to Resources/k8s/kustomize/base/other/namespace.yaml diff --git a/Resources/k8s/kustomize/secrets/graphql.env.sample b/Resources/k8s/kustomize/base/secrets/graphql.env.sample similarity index 100% rename from Resources/k8s/kustomize/secrets/graphql.env.sample rename to Resources/k8s/kustomize/base/secrets/graphql.env.sample diff --git a/Resources/k8s/kustomize/secrets/postgres.env.sample b/Resources/k8s/kustomize/base/secrets/postgres.env.sample similarity index 100% rename from Resources/k8s/kustomize/secrets/postgres.env.sample rename to Resources/k8s/kustomize/base/secrets/postgres.env.sample diff --git a/Resources/k8s/kustomize/services/cloud.yaml b/Resources/k8s/kustomize/base/services/cloud.yaml similarity index 100% rename from Resources/k8s/kustomize/services/cloud.yaml rename to Resources/k8s/kustomize/base/services/cloud.yaml diff --git a/Resources/k8s/kustomize/services/default-service.yaml b/Resources/k8s/kustomize/base/services/default-service.yaml similarity index 100% rename from Resources/k8s/kustomize/services/default-service.yaml rename to Resources/k8s/kustomize/base/services/default-service.yaml diff --git a/Resources/k8s/kustomize/services/graphql-service.yaml b/Resources/k8s/kustomize/base/services/graphql-service.yaml similarity index 100% rename from Resources/k8s/kustomize/services/graphql-service.yaml rename to Resources/k8s/kustomize/base/services/graphql-service.yaml diff --git a/Resources/k8s/kustomize/services/pokeapi-service.yaml b/Resources/k8s/kustomize/base/services/pokeapi-service.yaml similarity index 100% rename from Resources/k8s/kustomize/services/pokeapi-service.yaml rename to Resources/k8s/kustomize/base/services/pokeapi-service.yaml diff --git a/Resources/k8s/kustomize/services/postgres-service.yaml b/Resources/k8s/kustomize/base/services/postgres-service.yaml similarity index 100% rename from Resources/k8s/kustomize/services/postgres-service.yaml rename to Resources/k8s/kustomize/base/services/postgres-service.yaml diff --git a/Resources/k8s/kustomize/services/redis-service.yaml b/Resources/k8s/kustomize/base/services/redis-service.yaml similarity index 100% rename from Resources/k8s/kustomize/services/redis-service.yaml rename to Resources/k8s/kustomize/base/services/redis-service.yaml diff --git a/Resources/k8s/kustomize/volumes/postgres-persistentvolumeclaim.yaml b/Resources/k8s/kustomize/base/volumes/postgres-persistentvolumeclaim.yaml similarity index 100% rename from Resources/k8s/kustomize/volumes/postgres-persistentvolumeclaim.yaml rename to Resources/k8s/kustomize/base/volumes/postgres-persistentvolumeclaim.yaml diff --git a/Resources/k8s/kustomize/volumes/redis-persistentvolumeclaim.yaml b/Resources/k8s/kustomize/base/volumes/redis-persistentvolumeclaim.yaml similarity index 100% rename from Resources/k8s/kustomize/volumes/redis-persistentvolumeclaim.yaml rename to Resources/k8s/kustomize/base/volumes/redis-persistentvolumeclaim.yaml diff --git a/Resources/k8s/kustomize/staging/kustomization.yaml b/Resources/k8s/kustomize/staging/kustomization.yaml new file mode 100644 index 00000000..ed12b218 --- /dev/null +++ b/Resources/k8s/kustomize/staging/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +bases: + - ../base + +images: + - name: pokeapi/pokeapi + newTag: staging