DOCKER CONTAINERS AND KUBERNETES
A 2-day intro course to containers and K8s
This technical "workshop style" course covers the core Docker and Kubernetes concepts and guides you to build, deploy and monitor containers on Kubernetes. Developers, DevOps and I.T. Pros will learn how to use containers locally and in the cloud. You’ll experience several demos and hands-on "live coding" activities with the trainer throughout the course as you learn how to build, deploy and monitor containers. No coding experience is required for the hands-on activities since the focus is on DevOps but you'll use the terminal, command prompt and VS Code extensively.
In this course, you will deploy Kubernetes on DigitalOcean, a small cloud provider but large enough to have a Canadian data centre. 😲Wait! Not Azure, AWS or GCP? You might now say "I don't have a Digital Ocean account and I don't plan to use them." No problem because the concepts you'll learn in this course will be applicable to the big 3 providers. To reach a broader audience (Azure, AWS and GCP) for this course, we use DigitalOcean as a "neutral" cloud provider because it's super easy to use and by using this link, you get $100 of free credits to spend in the first 60 days of your DigitalOcean account creation so no cloud usage costs for you and no conflicts with your cloud account that you may have at work. You see, it's a no brainer 😀
In day 1, you'll learn about microservices and their use cases. You'll then learn about containers, Docker and to use the Docker CLI. You'll then learn about Kubenernetes, it's concepts and how to deploy and manage microservices applications packaged in containers locally. This will provide you the essential foundation that you'll need before heading to the cloud.
In Day 2, you'll apply what you learned so far to the cloud. You'll create and connect to a Kubenernetes cluster in the cloud and deploy applications. You'll learn how to use essential tools like Helm, Ingress and service meshes so that you can deploy, manage and maintain applications on Kubernetes like a ninja!
denotes a topic with hands-on "live coding" activity
Docker Containers and Kubernetes Concepts
- Microservices concepts
- The problems with legacy monolithic systems
- Microservices concepts
- Units of deployment & scaling
- Advantages and drawbacks
- Anti patterns
- What is Cloud Native?
- Container concepts
- Using Docker Desktop
- Using the Docker CLI
- Containerize an existing application
- Run containers locally
- Container registry - Docker Hub
- Push and pull containers to Docker Hub
- Multi-Containers with Docker Compose
- What is YAML
- Using the docker-compose command
- Run multi containers locally
- Kubernetes concepts
- What is Kubernetes?
- What can Kubernetes do and not do
- Running Kubernetes locally
- Docker Desktop
- Minikube, MicroK8s, Kind
- Kubernetes API
- The declarative way vs the imperative way
- Using Kubectl
- YAML files
- Nodes and Pods
- Using Selectors
- Setting environnent variables
- Multi container pods
- Workloads - How to deploy different applications types
- Updates using rolling updates
Kubernetes Concepts + K8s in the Cloud
- Communication between pods
- Reaching from the outside world
- Load Balancer
- Storage & Persistance
- App settings
- Liveness & readiness probes
- Kubernetes Web UI installation
- K9s: a dashboard in a terminal!
- Kukernetes in the cloud
- Pricing model
- Create a cluster
- Using the cloud provider CLI
- Kubernetes API
- Using Kubectl with clusters in the cloud
- Launching the Dashboard
- Auto scaling Pods using the Horizontal Pod Autoscaler
- Auto scaling Nodes using the Cluster Autoscaler
- Upgrading a cluster to a newer K8s version
- Using Helm 3
- Helm installation
- Use a chart and deploy an app
- Create a chart to deploy an app
- Update and Rollback
- Logging & Monitoring
- What is Prometheus?
- Installing Grafana
- Service Mesh
- Use cases
- What are Istio and Linkerd
- Installing Linkerd
- Troubleshooting an app using Linkerd
- Why use an Ingress Controller
- Setting up Nginx-Ingress
- Configuring routes
WHY IS THIS FOR ME?
You're new to containers and Kubernetes. You're a developer and you've been tasked to containerize an application to be hosted on Kubernetes. You want to understand the concepts so you can build and test containers locally. You also want to learn how microservices hosted in Kubernetes works so you can architect and develop the system accordingly.
No matter what development platform you use, this course will help you achieve your goals. Note that the course focus is on DevOps topics and you'll use VS Code to create configuration files, not coding actual apps.
You're new to containers and Kubernetes. As the DevOps specialist in your team, you want to understand containers, how to build and test them locally, how to configure and manage applications on Kubernetes.
This course will help you achieve your goals as it focuses on DevOps topics. You'll use VS Code intensively to create configuration files and deploy readily made apps (no coding required) with CLI commands in the terminal or command prompt.
You're new to containers and Kubernetes. As the I.T. Pro in your team, you want to understand containers and how to configure Kubernetes in the Cloud so you can monitor and scale the system in production.
Note that the course focus is on DevOps topics and you'll use VS Code to create configuration files and deploy readily made apps (no coding required). Advanced I.T. Pro topics are not covered in this course.
The following setup is required on your laptop to attend this course:
A detailed checklist will be emailed to the attendees in the week prior to the course.
- A laptop supporting virtualization with either Windows 10 Pro, macOS 10.13+ or Ubuntu 18.04.x
- An active DigitalOcean account. Use this link to get $100 of free credits to spend in the first 60 days of your account creation (offered via the D.O. referral program).
- A Docker Hub account
- A package manager
- Visual Studio Code
- Windows/Mac: Docker Desktop with Kubernetes enabled
- Ubuntu: Docker using APT and Kubernetes using either Minikube, MicroK8s or Kind
- The kubectl CLI