This document includes a very rough syllabus for what would have to be covered by this program to join the platform team at CSESoc. This is very much still subject to change, and feedback is encouraged.

Summary

This course aims to provide a comprehensive introduction to containerisation and Kubernetes. Starting with a basic understanding of software architecture, the course will cover the fundamentals of containerisation, including Docker and other container technologies. Students will gain hands-on experience working with containers, including building and deploying images, and using Docker Compose to manage multi-container applications.

The course will then cover Kubernetes, the leading container orchestration platform, including its architecture and components, and how to deploy and manage containers on a Kubernetes cluster. Students will also learn about advanced Kubernetes concepts such as service meshes, ingress, volumes, and operators.

The course will also cover Infrastructure as Code (IaC) using Terraform and Github Actions, allowing students to automate the provisioning, configuration, and management of infrastructure.

The course will also dive into monitoring and logging, covering core observability concepts, Prometheus, and Grafana, including how to set up monitoring, logging and tracing in a Kubernetes cluster.

Throughout the course, students will gain hands-on experience working with real-world tools and technologies, and will have the opportunity to apply their knowledge to real-world scenarios. By the end of the course, students will have a solid understanding of containerisation and Kubernetes, and will be well-prepared to work with these technologies in a production environment.

Week 0: Introduction to Software Architecture

Weekly Objectives

Week 1: Introduction to Containers

Weekly Objectives

note

By the end of week 1, students will have a basic understanding of how containers work and how different tools such as Docker and Podman can be used to work with containers. The hands-on exercise will give students practical experience of working with different containerisation tools, and this will be a great foundation for the following weeks where we will delve deeper into containerisation technologies and practices. By the end of the week, students will have a good understanding of the different options they have to work with containers and they will be able to pick the one that best fits their needs and requirements.

By the end of week 1, students will have a basic understanding of how containers work and how different tools such as Docker and Podman can be used to work with containers. The hands-on exercise will give students practical experience of working with different containerisation tools, and this will be a great foundation for the following weeks where we will delve deeper into containerisation technologies and practices. By the end of the week, students will have a good understanding of the different options they have to work with containers and they will be able to pick the one that best fits their needs and requirements.

Week 2: Understanding Docker

Weekly Objectives

note

By the end of week 2, students will have a good understanding of how to work with Docker images and how to manage them. They will also be able to use alternative tools to manage images as well. The hands-on exercise will give them practical experience working with images and preparing them to move on to next weeks where they will learn how to run and manage multiple containers with Docker.

By the end of week 2, students will have a good understanding of how to work with Docker images and how to manage them. They will also be able to use alternative tools to manage images as well. The hands-on exercise will give them practical experience working with images and preparing them to move on to next weeks where they will learn how to run and manage multiple containers with Docker.

Week 3: Introduction to CI/CD

Weekly Objectives

note

By the end of week 3, students will have a good understanding of CI/CD and its importance in modern software development. They will also be able to understand the benefits of using CI/CD and how it fits into the software development process. The hands-on exercise will give them practical experience working with a CI pipeline, and this will prepare them for next weeks where they will learn how to use containers in the context of CI/CD.

By the end of week 3, students will have a good understanding of CI/CD and its importance in modern software development. They will also be able to understand the benefits of using CI/CD and how it fits into the software development process. The hands-on exercise will give them practical experience working with a CI pipeline, and this will prepare them for next weeks where they will learn how to use containers in the context of CI/CD.

Week 4: Introduction to Docker Compose

Weekly Objectives

note

By the end of week 4, students will have a good understanding of how to work with multi-container applications and how to simplify their deployment using Docker Compose. The hands-on exercise will give them practical experience working with multi-container applications, and this will prepare them for next weeks where they will learn how to use orchestration tools like Kubernetes to manage the deployment of multi-container applications at scale.

By the end of week 4, students will have a good understanding of how to work with multi-container applications and how to simplify their deployment using Docker Compose. The hands-on exercise will give them practical experience working with multi-container applications, and this will prepare them for next weeks where they will learn how to use orchestration tools like Kubernetes to manage the deployment of multi-container applications at scale.

Week 6: Extended Kubernetes Concepts Part 1

Weekly Objectives

note

By the end of week 6, students will have a good understanding of advanced Kubernetes concepts, including Service Mesh, Ingress, Kubernetes Services, Volumes and VolumeMounts, Operators, Service Accounts, and Helm. The hands-on exercise will give them practical experience working with these concepts and will prepare them for next weeks where they will continue the advanced Kubernetes Concepts.

By the end of week 6, students will have a good understanding of advanced Kubernetes concepts, including Service Mesh, Ingress, Kubernetes Services, Volumes and VolumeMounts, Operators, Service Accounts, and Helm. The hands-on exercise will give them practical experience working with these concepts and will prepare them for next weeks where they will continue the advanced Kubernetes Concepts.

Week 7: Extended Kubernetes Concepts Part 2

Weekly Objectives

note

By the end of week 7, students will have a good understanding of advanced Kubernetes concepts, including mTLS, RBAC, the Open Policy Agent, and the Container Network Interface. The hands-on exercise will give them practical experience working with these concepts and provide a comprehensive understanding of how to secure and manage a Kubernetes cluster in a production environment. This knowledge will be beneficial in the next weeks where they will learn how to use infrastructure as code tools to deploy and manage Kubernetes clusters at scale.

By the end of week 7, students will have a good understanding of advanced Kubernetes concepts, including mTLS, RBAC, the Open Policy Agent, and the Container Network Interface. The hands-on exercise will give them practical experience working with these concepts and provide a comprehensive understanding of how to secure and manage a Kubernetes cluster in a production environment. This knowledge will be beneficial in the next weeks where they will learn how to use infrastructure as code tools to deploy and manage Kubernetes clusters at scale.

Week 8: Infrastructure as Code (IaC)

Weekly Objectives

note

By the end of week 8, students will have a good understanding of Infrastructure as Code, Terraform, and Github Actions, how they can be used to automate the provisioning, configuration, and management of infrastructure, as well as automate the CI/CD pipeline. The hands-on exercises will give them practical experience working with Terraform and Github Actions, and provide a comprehensive understanding of how to deploy and manage Kubernetes clusters at scale using these tools. This knowledge will be beneficial in real-world scenarios where they will have to deploy and manage Kubernetes clusters in a production environment using IaC.

By the end of week 8, students will have a good understanding of Infrastructure as Code, Terraform, and Github Actions, how they can be used to automate the provisioning, configuration, and management of infrastructure, as well as automate the CI/CD pipeline. The hands-on exercises will give them practical experience working with Terraform and Github Actions, and provide a comprehensive understanding of how to deploy and manage Kubernetes clusters at scale using these tools. This knowledge will be beneficial in real-world scenarios where they will have to deploy and manage Kubernetes clusters in a production environment using IaC.

Week 9: Monitoring and Logging

Weekly Objectives:

note

By the end of week 9, students will have a good understanding of monitoring and logging concepts in a Kubernetes cluster, including Prometheus and Grafana for monitoring, Core observability concepts, and how to collect, analyse, and visualise metrics, traces and logs in a Kubernetes cluster. The hands-on exercises will give them practical experience working with these concepts and provide a comprehensive understanding of how to monitor and debug a Kubernetes cluster in a production environment.

By the end of week 9, students will have a good understanding of monitoring and logging concepts in a Kubernetes cluster, including Prometheus and Grafana for monitoring, Core observability concepts, and how to collect, analyse, and visualise metrics, traces and logs in a Kubernetes cluster. The hands-on exercises will give them practical experience working with these concepts and provide a comprehensive understanding of how to monitor and debug a Kubernetes cluster in a production environment.