Based on the application source code provided, prepare a scalable solution based on deploying the application to a kubernetes cluster.
- CI action building an application using GitHub workflows
- Use Docker to build the application
- The application should be versioned semantically
- Notification of success should be sent to https://webhook.site/cdfb064f-0b1a-4017-b9ce-ba9fa412c8aa using JSON format, example:
{ "testCase": "success" }
- Build a Kubernetes-based implementation
- It is necessary to prepare a web server that can handle the traffic
- Application also communicates internally, which means that its design must be able to be accessed via a network based on VPC peering
- It also contains 3 super secret environment variables in the form of:
SECRET1=ULTRASUPERSECRET_1 SECRET2=SECONDSECRETDATA!@#$% DB_URI=mysql://localhost:3306- From outside, the application can only be connected from an IP address with a number:
1.1.1.1 - The assumption is that the system is autoscalable in relation to resources
- Available system resources: 64 CPU / 256 GB RAM
- Developers need help with the local environment for the application, and therefore need to be prepared:
- Local environment based on
docker-compose - The system locally should only operate using the https protocol
- The local environment should also include a database in the form of a mysql server
- Local environment based on
- For both local and Kubernetes-based environments, there is a need to perform tasks via scripts, tasks include:
- Applying the changes to the kubernetes cluster
- Local dockerfile build and image publishing with latest tag
- Retrieving information about the deployed tag on the kubernetes cluster
- Forward port 8080 directly from a Kubernetes-based application deployment
- Complete local environment building
As an additional task, prepare a microservice architecture responsible for processing the events generated by this system based on solutions such as:
- Google Cloud PubSub
- Google Cloud Functions
- Google Cloud Storage
- Google Cloud SQL
The task of this microservice is to receive information from the PubSub queue using Cloud Functions and write the payload to the CloudSQL database. Once a month, reports on the number of events are generated as a CSV file stored and versioned on Cloud Storage. The result of this additional task should be an architecture diagram and the preparation of an initial concept based on any IaC solution.
The organisation for which we are carrying out a project using tools such as:
- kustomize
- helm
- argocd
- google kms
- google secrets manager
- terraform
- terragrunt
- gke