Course Code: cakbp
Duration: 35 hours
Overview:

Instructor-led lectures with more than 35 hands on labs on per student private environment

Course Outline:

Part 1 : Containerization with Podman & Docker and Best Practices

- Introduction to Containers

- Why Containers?

- Container Implementations

- Docker & Podman

- Getting Started with Containers

- Installing Podman

- Starting your First Container

- Dissecting Containers aka Containers without Docker & Podman

- Managing Container Lifecycle

- Managing & Inspecting Containers

- Persistent Volumes

- Container Networking 

- Managing Container Image Lifecycle 

- Container Image Implementation

- Managing & Inspecting Images 

- Creating Images the Quick'n'Dirty way

- Containers for Production 

- Container based Systemd Services 

- Systemd based Containers 

- Container Orchestration

- Container Image Authoring 

- The Podman Way aka Introducing Buildah

- The Docker Way aka Dockerfile Authoring 

- Best Practices

- Working with Base Images

- Minimizing Layers

- RUN The Right Way

- Speeding Up Slow Builds

- Multi-Stage Builds

Part 2 : Kubernetes Implementation and Best Practices

- Introduction

- Container orchestration

  • Container Management Systems Limitations

  • Kubernetes Architecture

- introduction

    • masters/nodes

    • etcd

    • kube-apiserver

    • kubelet

    • kube-proxy

    • controller manager

    • kube scheduler

  • Design and install a Kubernetes cluster

  • Labs

- Installing a multi-node Kubernetes cluster

- Kubernetes command-line tools

  • Imperative vs declarative

  • Kubectl

  • Krew

  • Kube ns

  • kube ctx

  • Stern

  • K9s

  • Labs

    • Getting started with Kubernetes

    • Kubectl commands

    • Tools of the trade

- Kubernetes Core concepts

  • Namespaces

  • Pod and Multi-container Pods

  • Labels and Selectors

  • Replication controllers / ReplicaSets

  • Deployments (Rolling Updates and Rolling Back)

  • ConfigMaps and Secrets

  • Labs

    • Kubernetes Core Concepts

    • Rolling Update and Rollback

    • Labels and Selectors

    • ConfigMaps and Secrets

- Kubernetes Networking

  • Docker Networking

  • Cluster Networking

  • Pod Networking

  • Service Networking

  • CoreDNS in Kubernetes

  • Ingress

  • Labs

    • Networking

    • Services

    • Ingress

- Scheduling

  • Manual Scheduling

  • Taints and tolerations

  • Node labels and Selectors

  • Node Affinity

  • Static Pods

  • DaemonSets

  • Labs

    • DaemonSets

    • Jobs and Cronjobs

- Kubernetes and Storage

  • Persistent Volumes

  • Persistent Volume Claims

  • Dynamic Provisioning with StorageClass

  • Labs

    • Volumes, Persistent Volumes and PVCs

    • Wordpress/ Mysql Implementation

    • PHP Guestbook ~ 3 Tier App

- Kubernetes Security

  • Role Based Access Control

  • Service Accounts

  • Security Contexts

  • Resource Quotas

  • Network Policy

  • Labs

    • RBAC and Cluster Roles

    • Service Accounts

    • Security Contexts

    • Resource Quotas

    • Network Policy

- Logging and Monitoring

  • Helm

  • Setting up the EFK stack - Elasticsearch Fluentd Kibana

  • Operators

  • Monitoring Cluster Components

  • Setting up the GAP stack - Grafana Alertmanager Prometheus

  • Labs

    • Helm