diff --git a/README.md b/README.md index ffc3278b..7f2bf864 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,34 @@ It is a fun way to assess your cloud skills. It is also a good representative sample of the work we do at Rearc. Quest is a webapp made with node.js and golang. -### Q. Do I need to be an expert in node.js and golang? +### Q. So what skills should i have ? +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. Docker (containerization). IaC (Infrastructure as code). Linux/Unix. Git. TLS certs is a plus. -No. The starting point of the quest app is `npm install && npm start`. That is all the node.js you need to know. And you wont even see golang. +### Q. What do i have to do ? -### Q. So what skills should I have? +You may do all or some of the following tasks. Please read over the complete list before starting. + +1. If you know how to use git, start a git repository (local-only is acceptable) and commit all of your work to it. +2. Deploy the app in any public cloud and navigate to the index page. Use Linux 64-bit x86/64 as your OS (Amazon Linux preferred in AWS, Similar Linux flavor preferred in GCP and Azure) +3. Deploy the app in a Docker container. Use `node:10` as the base image. +4. Inject an environment variable (`SECRET_WORD`) in the Docker container. The value of `SECRET_WORD` should be the secret word discovered on the index page of the application. +5. Deploy a load balancer in front of the app. +6. Use Infrastructure as Code (IaC) to "codify" your deployment. Terraform is ideal, but use whatever you know, e.g. CloudFormation, CDK, Deployment Manager, etc. +7. 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 `` is the location where the app is deployed): + +1. Public cloud & index page (contains the secret word) - `http(s)://[:port]/` +2. Docker check - `http(s)://[:port]/docker` +3. Secret Word check - `http(s)://[:port]/secret_word` +4. Load Balancer check - `http(s)://[:port]/loadbalanced` +5. TLS check - `http(s)://[:port]/tls` + +### Q. Do I have to do all these? -AWS. General cloud concepts, especially networking. Docker (containerization). IaC (Infrastructure as code). Linux/Unix. Git. TLS certs is a plus. +You may do whichever, and however many, of the tasks above as you'd like. We suspect that once you start, you won't be able to stop. It's addictive. Extra credit if you are able to submit working entries for more than one cloud provider. ### Q. What do I have to do? @@ -44,8 +65,8 @@ You may do whichever, and however many, of the tasks above as you'd like. We sus - A link to a hosted git repository. - A ZIP file containing your project directory. Include the `.git` sub-directory if you used git. 2. Proof of completion, as one or both of the following: - - A link to a hosted AWS deployment. - - One or more screenshots showing, at least, the index page of the final deployment. + - 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. Your work assets should include: @@ -53,9 +74,9 @@ Your work assets should include: - 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. -### Q. How long do I need to host my submission on AWS? +### Q. How long do I need to host my submission on public cloud(s)? -You don't have to at all if you don't want to. You can run it in AWS, grab a screenshot, then tear it all down to avoid costs. +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. diff --git a/bin/001 b/bin/001 index ae345f45..527044cd 100755 Binary files a/bin/001 and b/bin/001 differ diff --git a/bin/002 b/bin/002 index 0bcddc7b..5f34da3b 100755 Binary files a/bin/002 and b/bin/002 differ diff --git a/bin/003 b/bin/003 index 986c2776..c9afefad 100755 Binary files a/bin/003 and b/bin/003 differ diff --git a/bin/004 b/bin/004 index 8f0c2414..6626e255 100755 Binary files a/bin/004 and b/bin/004 differ diff --git a/bin/005 b/bin/005 index 8b244dcb..4204291b 100755 Binary files a/bin/005 and b/bin/005 differ diff --git a/bin/006 b/bin/006 index add80f03..6a2e39b4 100755 Binary files a/bin/006 and b/bin/006 differ