This shows you the differences between two versions of the page.
devops:laboratoare:06 [2022/07/27 16:04] bogdan.croitoru |
devops:laboratoare:06 [2022/07/29 18:35] (current) bogdan.croitoru |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== TBD ===== | + | ===== FINAL PROJECT ===== |
+ | |||
+ | 1. (5p) Create a new student<number> branch from the following Git repository: https://gitlab.sschool.ro.thales/oana/devops-ss-2022/-/tree/develop, starting from branch develop | ||
+ | |||
+ | |||
+ | 2. (5p) Modify the Jenkinsfile and add a new stage that will execute the "ps -aux" command. Select your term-vm as the running node (also from the Jenkinsfile) | ||
+ | |||
+ | |||
+ | 3. (5p) Filter out the output of the above command by searching for the Jenkins Java process and redirect it to a "process_details.txt" file | ||
+ | <note>You can use a specific command to filter by "home\/jenkins"</note> | ||
+ | |||
+ | |||
+ | 4. (5p) Add a post block with "always" option, "archiveArtifacts" to select all the "*.txt" files | ||
+ | |||
+ | |||
+ | 5. (5p) Create a new file in the repo root with the name "exam.sh" | ||
+ | Add a shebang and print the following text: "I am <NAME> and I will get a nice grade!" | ||
+ | Commit and push and check the Jenkins triggered job. | ||
+ | <note tip>Hint: make sure the script has executable rights</note> | ||
+ | |||
+ | 6. (15p) Create a dockerfile starting from the "nexus.app.de.corp.thales:5000/thales/ee/oana/debugbox:latest" image, with the following steps: | ||
+ | a) copy the "exam.sh" file in /opt/ | ||
+ | b) change your working directory to /opt/ | ||
+ | (using WORKDIR directive in Dockerfile) | ||
+ | c) create a new user with the id "1000 + <student_number>" | ||
+ | Exemplu comandă pentru adăugarea unui utilizator: useradd –create-home –shell /bin/bash –uid 1000 –user-group devops | ||
+ | d) expose port 1234 | ||
+ | (using EXPOSE directive) | ||
+ | |||
+ | 7. (15p) Update the Jenkinsfile with 2 new stages (name them as you like): | ||
+ | ==> build the Docker image with the name "dockerimage-<student_number>" | ||
+ | ==> start a container using the generated image that will execute the "exam.sh" script | ||
+ | <note>The container should: | ||
+ | * remove by itself after the run is finished | ||
+ | * have port 1234 exposed | ||
+ | </note> | ||
+ | <note tip>Hint: **-it** for running docker containers will block the terminal. Before you use it in Jenkins make sure if you actually need it.</note> | ||
+ | |||
+ | 8. | ||
+ | * (5p) Check the "my.yaml" file in your branch and fix the problems. | ||
+ | * (10p) Set the following properties: | ||
+ | <note> | ||
+ | * metadata => name: student<number> | ||
+ | * start a container called "awesome_container" based on the nginx Docker image | ||
+ | * expose port 80 | ||
+ | </note> | ||
+ | * Create a new pod based on it. | ||
+ | |||
+ | 9. (10p) Check the newly created pod and describe it | ||
+ | * Get the value of the "Container ID" field and write it as a new line in the "kubernetes_details.txt" file | ||
+ | |||
+ | 10. (10p) Show the logs for the running pod using kubectl commands and redirect the output to <student_no>_pod_logs.txt | ||
+ | |||
+ | 11. (5p) Create a pull request to the "develop" branch | ||
+ | |||
+ | 12. (5p) Complete feedback form, located here: https://forms.gle/Jwp9RoaBUHSYJ4uv5 |