Part 0


Attendees are expected to have completed DevOps with Docker or have Docker and docker-compose experience. In addition, experience with web software is required, such as Full Stack Web Development or equivalent. Attendees need admin/superuser privileges to complete the exercises and the examples of the material on their computers.

Course material

The course material is meant to be read part by part from start to finish. To get a passing grade, you have to do every exercise. There are exercises in the material placed so that you have learned the required skills from the material. Do the exercises as you go through the material. As you progress further, you will be increasingly searching for information on the internet. You should also supplement your knowledge with the official documentation!

The course material is written using Mac, so some instructions may lack platform-specific details. Please make a pull request to the course material in case you find any mistakes or wish to add something. You can also add an issue through GitHub if you find any problems with the course material. Pinging @Jami Kousa in the Discord also works in some quick-fix cases.

Completing course

To complete the course, submit solutions for all of the exercises in parts 1-5. There is no exam.

The total workload of the course is about 95 hours.


Complete all of the exercises to receive a passing grade.

Make a repository to GitHub and publish your solutions in clearly ordered files / folders. If you need help publishing using Git, you should refer to their guide. Make sure that the repository is available to me. We prefer public repositories, but if you want to keep your experience secret, you can create a private repository and add Jakousa as a collaborator.

Most of the exercises will require you to write code or publish something to Docker Hub. If you are unsure what to submit, you can ask for help in the course chat.

A system for detecting plagiarism is used to check exercises submitted to GitHub. If multiple students hand in the same code, the situation is handled according to the policy on plagiarism of the University of Helsinki.

There are multiple exercises in each part. After you have completed all of the exercises for a part, use the submission application. Note that you can not edit a submission, so mark all as completed.


Course size is 5 ECTS credits. Pass/Fail.


The material includes Quizzes that look like this:


Login to view the exercise

They are an optional part of the course and do not affect your grading. To participate in the quizzes, you have to register a "TMC" account. You can find controls to create an account at the top of the page. Quizzes work as an easy way for us to gather feedback and improve the course.

Google Cloud Credits

In part 3, we will use Google Kubernetes Engine. It is not free, but everyone starting with Google Cloud has $300 worth of free credits. See your options here.

Google has offered students with email addresses some Google Cloud Credits. Finnish/Open University students, you will be given a address when you register to the Open University course.

If you have used all $300 Google Cloud credits, there is nothing I can do. You can complete parts 1-2 and most likely 4-5, but part 3 is required for course completion and the certificate.

Getting started


This course has a Discord group where we discuss everything about the course. Support is available almost 24/7, with the discussion being in both English and Finnish.

Join our DevOps with Kubernetes Discord channel:

All inappropriate, degrading, or discriminating comments on the channel are prohibited and will lead to action taken against the commenter.

Installing kubectl

Kubectl is a command-line tool that we will use to communicate with our Kubernetes cluster. Install instructions

Installing k3d

We will also use k3d for practice. The Install instructions are here. I have tested the course material with version 5.4.1 of k3d.

Note about k3d permission errors

You might get a Permission denied error while using k3d as a normal user.

Be sure to go through this docker post-installation step

Running k3d as sudo leads to problems such as generating the kubeconfig into wrong place i.e. not into ~/.kube.


Did you find a mistake, issue, typo, or something missing? Maybe you just thought that something was not well written and you could do better? Is it Hacktoberfest? Or maybe you want to share a link to a great blog post? Please go ahead and contribute!

Since the course is open source, you can fork, edit and send a pull request. If you do not know what forking is or how to make a pull request consult the github guides. It is okay to practice here.

If you feel like you do not want to be part of the list of contributors you can also add an issue. The guide for making an issue in Github is here.

Here is a link to the repository to find the tabs for issues and pull requests:

Experience quizz

Thank you for answering.


Login to view the exercise


Login to view the exercise