Skip to content

Latest commit

 

History

History
70 lines (48 loc) · 3.18 KB

File metadata and controls

70 lines (48 loc) · 3.18 KB

REQ940174-devops-guild-lead-assignment

Assignment Criteria

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.

Project Description

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)

Containerization

This API is containerized using Docker and Docker-Compose. To build the API container on your local development machine, do the following:

  1. Checkout the repository to your local machine
  2. Ensure Docker desktop is installed on your machine
  3. 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.

Deployment Method and Configuration

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.

Final Solution

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]