It is a fun way to assess cloud skills. It is also a good representative sample of the work we do. Quest is a webapp made with node.js and golang. The demo makes use of GitHub, GCP, DockerHub and Terraform TO demonstrate some of the capabilities of Containerizing and Application then Deployment to GCP
Thanks for the Opportunity! This code is meant to demonstrate some of the capabilities of Containerizing and Application then Deployment to GCP - GKE, Artifact Registry, GCE, VPC, GCE,
To get started, there are few prerequisites to get started . A functional GCP Account
The demo makes use of GitHub, GCP, DockerHub and Terraform
Source - Create a new Repo - https://github.com/pestirA/quests Containerization Use IAC to deploy Sample Application Deployment Deploy the App in Container in GCP Secret Management Deploy a load balancer Add TLS
Reduced the system management overhead for infrastructure developers to manage infrastructure with api's while keeping a repository of changes commited
Repave Infrastructure A mechanism to repave environments with agility and repeatable service and application blueprints
Cloud Enablement Agile and repeatable service enablement to better scale the business and onboard new workloads with end to end blueprints
Local Development Created DockerFile In the Node.js application's GitHub repository, create a Dockerfile that defines how your Node.js application should be containerized You are now ready to incorporate your terraform modules Validated local development as shown below
Setup a terraform configuration that will deploy our nodejs container to the Artifact Registry Set Up Terraform for GKE Service Create a Terraform configuration (e.g., main.tf) to define your GKE cluster, node pool, and any other required resources. We makes sure to set up authentication and specify the Docker image you want to deploy. To get started, we create a terraform directory to ring fence our files for terraform Created a gke.tf file to hold the core deployment details Created a variables.tf file with our target variables for the project, region and image and setup defaults Created terraform.tfvars file with our target key value pairs to match the variables defined in the main file Setup the Cloud Build configuration file (cloudbuild.yaml) to automate the container build process of the docker and shipped it to googles artifact repository. Setup a load balancer code in the gke.tf
Trigger Plan and Apply Deployment Validated deployment via terraform init terraform fmt terraform validate terraform plan terraform apply
Public cloud: AWS, GCP, Azure. More than one cloud is a "good to have" but one is a "must have". General cloud concepts, especially networking. Containerization, such as: Docker, containerd, kubernetes IaC (Infrastructure as code). At least some Terraform preferred. Linux (or other POSIX OS). VCS (Version Control System). Git is highly preferred. TLS is a plus.
You may do all or some of the following tasks. Please read over the complete list before starting.
If you know how to use git, start a git repository (local-only is acceptable) and commit all of your work to it. Use Infrastructure as Code (IaC) to the deploy the code as specified below. Terraform is ideal, but use whatever you know, e.g. CloudFormation, CDK, Deployment Manager, etc. Deploy the app in a container in any public cloud using the services you think best solve this problem. Use node as the base image. Version node:10 or later should work. Navigate to the index page to obtain the SECRET_WORD. Inject an environment variable (SECRET_WORD) in the Docker container using the value on the index page. Deploy a load balancer in front of the app. Add TLS (https). You may use locally-generated certs. Q. How do I know I have solved these stages? Each stage can be tested as follows (where <ip_or_host> is the location where the app is deployed):
Public cloud & index page (contains the secret word) - https://rearc.abishaiep.io/ Docker check - https://rearc.abishaiep.io/docker Secret Word check - http://rearc.abishaiep.io/secret_word Load Balancer check - http://rearc.abishaiep.io/loadbalanced TLS check - https://rearc.abishaiep.io/tls
Extra credit - Deploy the same assets across AWS, GCP or Azure if you are able to submit working entries for more than one cloud provider.
A link to a hosted git repository. A compressed file containing your project directory (zip, tgz, etc). Include the .git sub-directory if you used git. Proof of completion, as one or both of the following: Link(s) to hosted public cloud deployment(s). One or more screenshots showing, at least, the index page of the final deployment in one or more public cloud(s) you have chosen. An answer to the prompt: "Given more time, I would improve..." Discuss any shortcomings/immaturities in your solution and the reasons behind them (lack of time is a perfectly fine reason!) This may carry as much weight as the code itself Your work assets should include:
IaC files, if you completed that task. One or more Dockerfiles, if you completed that task. A sensible README or other file(s) that contain instructions, notes, or other written documentation to help us review and assess your submission. Note - the more this looks like a finished solution to deliver to a customer, the better.
You don't have to at all if you don't want to. You can run it in public cloud(s), grab a screenshot, then tear it all down to avoid costs.
If you want to host it longer for us to view it, we recommend taking a screenshot anyway and sending that along with the link. Then you can tear down the quest whenever you want and we'll still have the screenshot. We recommend waiting no longer than one week after sending us the link before tearing it down.
Q. Do I have to spend money out of my own pocket to complete the quest? No. There are many possible solutions to this quest that would be zero cost to you when using AWS, GCP, or Azure.
A quest in the clouds - The demo makes use of GitHub, GCP, DockerHub and Terraform TO demonstrate some of the capabilities of Containerizing and Application then Deployment to GCP