1 RMIT Classification: Trusted COSC2759 Assignment 3 specifications Deadline Sunday 14.06.2020 (11:59 pm AEST) % allocated to this assignment 30 To be submitted via Canvas To be attempted Individually _______________________________________________________________________ Please read this first All of us have been affected by the unfortunate COVID-19 scenario and its aftermath. It is often hard to concentrate and study online; but as a student enrolled in this course, it is your responsibility to regularly attend online lecture, your respective tutorial and consultation session(s). • Bring your questions to online discussion board, consultation sessions or email the head tutor: Homy (
[email protected]). • Watch the online recordings on a regular basis if you cannot attend the live sessions. • Do NOT start the assignment at the last minute. • Do NOT ask for last minute extensions, these are often rejected. Extensions can only be granted for personal and medical reasons, provided you can supply some evidence. Besides, DevOps is a very important skill to have. There is a clear lack of training in this area for the graduates and as such doing well in this course will give you a competitive edge over graduates from other universities. Finally, please do NOT give up on this semester thinking of online study as a waste of time. Global industry projects involving teams at geographically different locations often run fully online. Think of this semester as a training for future. In the fast-evolving CS&IT industry, the online medium is very popular and vastly used. You have 4 weeks to complete this assignment. It is related to Kubernetes and HELM. Get started! 2 RMIT Classification: Trusted Scenario ACME corp. has been very excited with the work you did on their application and has been hard at work expanding on the work that you started. They have containerised the application and expanded the CI build to create a container and publish it. Next they are hoping to start using Kubernetes to host their application as they feel that will be a big advantage for them. They have asked you to expand their CI build to automatically deploy the application to a Kubernetes cluster, implementing a CD pipeline. The Approach To make this easier for ACME corp., which doesn’t have extensive experience with DevOps, we will be using well known SaaS tools to help reduce the learning curve for their development team. You will follow best practice principles and make as much of your solution using code, this includes your configuration and scaffolding scripts. Tools to use: • Terraform • AWS • CircleCI • Docker • Kubernetes • Helm ACME corp. expects a Zip file with all the code and documentation required to run the CD pipeline you are creating for them. This includes the files that define any shell scripts, Docker files, or anything else you use. A scaffold with a folder structure and some support files for this assessment is available here: https://classroom.github.com/a/pd1v39dG Please accept the GitHub classroom invitation. Upon you acceptance, your private repository will be ready automatically. 3 RMIT Classification: Trusted Tasks Pass part: A. (15 marks) Document the solution in the Readme.md file Please document the solution so it can be deployed by someone with no prior knowledge of the approach. This means a step by step guide to deploying the application. Also document your approach and the reason why you approached it in this way. Please consider: a. Analysis of the problem (5 marks) b. Explain and justify the solution (5 marks) c. Writing quality, layout and accuracy (5 marks) B. (15 marks) Create a HELM chart to deploy the application to Kubernetes Include the HELM Chart source files in the zip file a. Include both a Deployment and a Service manifest b. Use variables to allow the Image to be passed in c. Use variables to allow the database endpoint to be passed in C. (30 marks) Deploy the application into a non-production environment Make sure the following is implemented in the CircleCI configuration file and add a screenshot of the successful execution. a. Create a namespace for the application in Kubernetes b. Deploy a database to back the application c. Run database migration script against the database d. Deploy HELM Chart to the Kubernetes cluster Credit part: D. (10 marks) Change the end-to-end test to run against the non-production environment Make sure it is implemented in the CircleCI configuration file and add a screenshot of the successful execution. For all queries pertaining to this assignment, be it specification-related or extension, ONLY send email to your head tutor i.e. Homy and no one else. 4 RMIT Classification: Trusted Distinction part: E. (8 marks) Deploy the application into a production environment Make sure the following is implemented in the CircleCI configuration file and add a screenshot of the successful execution. a. Create a namespace for the application in Kubernetes b. Deploy a database to back the application c. Run database migration script against the database d. Deploy HELM Chart to the Kubernetes cluster F. (2 marks) Create a stage gate before deployments are allowed into production Make sure it is implemented in the CircleCI configuration file and add a screenshot of the successful execution. High Distinction part (you need to self-research these ones): If you can finish all the above tasks, then you can start working on HD tasks No help or consultation will be provided for these tasks. You are welcome to ask general questions regarding the tasks, but this is a strictly self-research section G. (20 marks) Integrate logging to the solution so any logs from the Kubernetes cluster is automatically stored in AWS CloudWatch for the future. Provide a screenshot of the ACME app logs being displayed in CloudWatch (Hint: use the querying function in Log Insights), as well as the code used to deploy the logging solution to the cluster. Add the screenshot to your Readme file. Assessment criteria You will be assessed on: • Your ability to automate the deployment of the ACME web application • Using yaml to define CircleCI tasks • Your ability to use HELM to create a Chart • How well you document your solution 5 RMIT Classification: Trusted PLAGIARISM: All assignments will be checked with plagiarism-detection software; any student found to have plagiarised would be subject to disciplinary action. Plagiarism includes: • CONTRACT CHEATING: paying someone to do your work • CONTRACT CHEATING: getting someone else to write the test or attend demo • submitting work that is not your own or submitting text that is not your own • copying work from/of previous/current semester students • allowing others to copy your work via email, printouts, social media etc. • posting assignment questions (in full or partial) on external technical forums • sending or passing your work to your friends • posting assignment questions on technical forums to get them solved A disciplinary action may lead to • a meeting with the disciplinary committee • a score of zero for the assignment • a permanent record of copying in your personal university records and/or • expulsion from the university, in some severe cases All plagiarism will be penalised. There are no exceptions and no excuses. You have been warned. For more details please read RMIT’s page on Academic Integrity at https://www.rmit.edu.au/students/student-essentials/assessment-and-exams/academic-integrity 6 RMIT Classification: Trusted Submission Procedure ACME corp. expects you push all the code and documentation required to run the Continuous Integration build you are creating for them into your GitHub classroom repository. This includes the files that define any shell scripts, Docker files, or anything else you use. Any pushes to GitHub after Canvas submission will be subjected to late penalty. Late submissions and Extension-related information A penalty of 10% per day of the total marks for each assignment will apply for each day a submission is late, including both weekdays and the weekend. After 5 days, you will receive zero marks for that assignment. Email your lecturer (
[email protected]) for extension related queries. No GitHub pushes will be accepted after 5 day period has elapsed. Please submit ONLY the URL of your GitHub Classroom repository into Canvas, your repository must have a format like below: https://github.com/RMIT-COSC2759-SDO/assessment3-student-