Course Code: devsrek8
Duration: 49 hours
Course Outline:

Part 1 : DevOps, Containerization with Podman & Docker and Best Practices (14 labs)

- Introduction to DevOps and Cloud Native Computing

   - Modern IT & its Challenges

   - DevOps as a Solution

   - The 12 Factor App Methology

   - From Cloud Computing to Cloud Native Computing

   - Formal Definition

- Introduction to Containers

  - Why Containers?

  - Container Implementations

  - Docker & Podman

- Getting Started with Containers (2 labs)

  - Installing Podman (1 lab)

  - Starting your First Container (1 lab)

  - Dissecting Containers aka Containers without Docker & Podman

- Managing Container Lifecycle (6 labs)

  - Managing & Inspecting Containers (2 labs)

  - Persistent Volumes (2 labs)

  - Container Networking (2 labs)

 

- Managing Container Image Lifecycle (1 lab)

  - Container Image Implementation

  - Managing & Inspecting Images (1 lab)

  - Creating Images the Quick'n'Dirty way

- Containers for Production (2 labs)

  - Container based Systemd Services (1 lab)

  - Systemd based Containers (1 lab)

  - Container Orchestration

- Container Image Authoring (2 labs)

  - The Podman Way aka Introducing Buildah (1 lab)

  - The Docker Way aka Dockerfile Authoring (1 lab)

- Best Practices (1 lab)

  - Working with Base Images

  - Minimizing Layers

  - RUN The Right Way

  - Speeding Up Slow Builds

  - Multi-Stage Builds (1 lab)

Part 2 : Kubernetes Implementation and Best Practices (25 Labs)

- Introduction to DevOps and SRE

   - SRE or the new « Industrial Revolution »

   - SRE as an Actionable DevOps Implementation

   - SRE Culture & Practice

- Container orchestration (1 lab)

  • 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 (1 lab)

- Kubernetes command-line tools (3 labs)

  • Imperative vs declarative
  • Kubectl (2 labs)
  • Krew
  • Kube ns
  • kube ctx
  • Stern
  • K9s (1 lab)

- Kubernetes Core concepts (6 labs)

  • Namespaces (1 lab)
  • Pod and Multi-container Pods (1 lab)
  • Labels and Selectors (1 lab)
  • Replication controllers / ReplicaSets (1 lab)
  • Deployments (Rolling Updates and Rolling Back) (1 lab)
  • ConfigMaps and Secrets (1 lab)

- Kubernetes Networking (3 labs)

  • Docker Networking
  • Cluster Networking
  • Pod Networking (1 lab)
  • Service Networking  (1 lab)
  • CoreDNS in Kubernetes
  • Ingress (1 lab)

- Scheduling (2 labs)

  • Manual Scheduling
  • Taints and tolerations
  • Node labels and Selectors
  • Node Affinity
  • Static Pods
  • DaemonSets (1 lab)
  • Jobs and Cronjobs (1 lab)

- Kubernetes and Storage (3 labs)

  • Persistent Volumes and Persistent Volume Claims (2 labs)
  • Dynamic Provisioning with StorageClass (1 lab)

- Kubernetes Security (5 labs)

  • Role Based Access Control (1 lab)
  • Service Accounts (1 lab)
  • Security Contexts (1 lab)
  • Resource Quotas (1 lab)
  • Network Policy (1 lab)

- Logging and Monitoring (2 labs)

  • Introducing Helm & Operators
  • Setting up the EFK stack – Elasticsearch Fluentd Kibana (1 lab)
  • Monitoring Cluster Components
  • Setting up the GAP stack - Grafana Alertmanager Prometheus (1 lab)

Part 3 : Helm Best Practices (18 Labs)

- Introduction

   - Automating Kubernetes

   - Ansible, Helm and Operators

   - Helm Architecture

- Getting Started with Helm (2 labs)

   - Helm Concepts

   - Helm Commands (1 lab)

   - Helm User Workflow (1 lab)

- Creating Helm Charts (1 lab)

   - Chart Structure

   - Scaffolding a Helm Chart

   - Creating a Helm Chart (1 lab)

- Creating Umbrella Charts (1 lab)

   - Umbrella Chart Structure

   - Managing Umbrella Charts (1 lab)

- Using Helm Templates (4 labs)

   - Go Templating Overview

   - Templating in Helm (1 lab)

   - Using Variables (1 lab)

   - Calling Templating Functions (1 lab)

   - Implementing Flow Control (1 lab)

- Advanced Helm Techniques (2 labs)

   - Using Global Variables and Subcharts  (1 lab)

   - Sprig Template Functions (1 lab)

- CI/CD with Helm (4 labs)

   - Introducing GitOps

   - Introducing Cloud Native CI/CD with ArgoCD (1 lab)

   - Creating ArgoCD Pipelines (1 lab)

   - Calling Helm based ArgoCD Pipelines (1 lab)

   - Managing Multi Environment Deployments (1 lab)

- Helm Best Practices (3 labs)

   - Introducing DevSecOps and Policy as Code

   - Implementing Chart Validation (1 lab)

   - Implementing Helm Policy as Code with Checkov and KubeLinter (1 lab)

   - Implementing Helm Automated Testing (1 lab)

- Publishing Helm Charts (1 lab)

   - Packaging Helm Charts

   - Managing Chart Dependencies

   - Publishing Helm Charts (1 lab)