The purpose of this challenge is to know not only about your technical skills, but also:
- How do you approach infrastructure design and the application of security?
- How do you explain the solution and communicate it?
As the position is based on the DevOps world, we ask you to set up a CI/CD pipeline. Basically, you need to set up a repository, connect it to a pipeline with some automation on it, so every time the repository is updated, a new Docker image is build, ready to use it in a deployment.
In this repository we provide you the containerized application, and the Dockerfile. Is a simple Nginx webserver, serving a static HTML file.
The deadline is 7 days, starting today (the day you got the email from HR with this information). Feel free to get back to us if you have any questions or concerns, or if for any reason you can't finish within the given timeline.
At least:
- You must use GitHub, Gitlab or any other
git-like repository for hosting the source code. - You must use Jenkins automation tool for setting up the pipeline.
- You must use Docker Hub or any other Docker container registres like ACR, ECR etc. to save the container images.
- You must apply the security principle to this pipeline, it's not necessary to apply SCA, DAST, SAST or Runtime Security but be prepared to explain the integration of those tools.
- The pipeline should be triggered when a Pull request is merged into
mainormasterbranches of your repository. Direct commits intomainormasterare not allowed. - You must use as much configuration-as-code (CaC) as possible. Authentication secrets like usernames/passwords/tokens should be isolated from the tools you're using.
- Deploy the image and run the app somewhere on AKS/EKS/Minikube/Your own Kubernetes cluster, if possible create the CD pipeline in Jenkins for the deployment to Kubernetes cluster and apply blue/green deployment or canary deployment.
- Make sure you apply the security best practices as much as you can.
To achieve the requirements, you should follow this procedure:
- Clone this repository to your repo
- Set up the pipeline
- Modify the
index.htmlfile, changing the content inside<main></main>tags for something else i.e.Hello! I'm [YOUR_NAME]. - Build the docker image and push it to a container registry
- Deploy the image and run the app somewhere on AKS/EKS/Minikube/Your own Kubernetes cluster, if possible create the CD pipeline in Jenkins for the deployment to Kubernetes cluster and apply blue/green deployment and canary deployment.
- Deploying your Jenkins and related component in cloud environment such as AWS, Azure or GCP will be advantage, this will show case your cloud skills.
You must:
- Provide the source code you used.
- Show us how the CI/CD works with a real example. Please be prepared to change your source code and push to github, we expect the pipeline will be triggered once you merge the pull request.
- Be prepared to answer the questions related to this assignment such as CI/CD, Cloud and Security best practices.