Create or submit some of your past work building a manifest for deploying a working application to any major public cloud container Kubernetes Environment, including OpenShift, AWS ECS, Azure AKS, Google Cloud Containers, as per the requirements below.
The application code must be contained within a GitHub repo we can review.
Commits must be entirely from you
All deployment steps and configuration for the components must be done “as code” and include steps for deploying and configuring the components, testing the success of the deployment and rolling back or rolling forward the deployment.
The deployment process must be completed by some form of automation via pipeline (Github Actions/Tekton/Argo CD) or similar.
This assignment represents a basic deployment that CITZ IMB developers would initialize, deploy and develop against to solve specific business requirements.
The API found in this repository is a NestJS API, one of the frameworks that CITZ IMB developers generally use to develop API solutions. It has three endpoints:
- / (root)
- /health (returns http 200 response, used by openshift readiness/liveness probes)
- /api (used to serve swagger spec documentation about using API endpoints)
This API is containerized using Docker and Docker-Compose. To build the API container on your local development machine, do the following:
- Checkout the repository to your local machine
- Ensure Docker desktop is installed on your machine
- At the root level of this repository, run
docker-compose up --build guild-lead-assignment-api
Once built, you should be able to visit http://localhost:3000 and any of the endpoints outlined in the project description above to see the API live and serving traffic.
This project utilizes both Github Actions and Github Environments in order to deploy the
containerized solution into the BC Government hosted Openshift cluster. The actions
are written in YAML format and can be found in the .github/workflows
directory
within the repository. The .github/helpers
directory houses three simple
shell scripts that are used within the actions to do the following:
- deploy kubernetes templates for deployment configs, routes and services
- monitor application health post deployment
- rollback a deployment config object to its most recent successful deployment
The Kubernetes templates that are utilized to deploy the containerized solution
of the API found in this repository are housed in the openshift/templates/api
directory. These templates are also written using standard YAML formatting.
This API is currently deployed in the CITZ IMB Sandbox Dev Namespace (ec1236-dev) within the BC Government Openshift cluster.
You can find the API swagger being served here.
If you would like the be provisioned access to this namespace to see any of the final project results, or have any questions or concerns regarding the final submission of this assignment, please contact at the following email: [email protected]