Docker Kubernetes Online Workshop
Duration : 5 Full Days (9:30 AM to 5:30 PM)
Date : 17, 18, 19, 20, 21 April 2023
Overview
This boot camp introduces participants to docker and its ecosystem, help them get started using Docker to build, package and run their applications inside containers. This course also covers container orchestration with Kubernetes.
Prerequisites
- Linux/Unix Systems Fundaments
- Understanding of Command Line Interface
- Basic knowledge of editors on Linux (any one of vi/nano/emacs)
- Understanding of YAML syntax and familiarity with reading/writing basic YAML specifications
Course Contents
Introduction
- Basics of Docker
- Dockerfile
- Networking
Creating and Running Containers
-
- Container Images
- Building Application Images with Docker
- Storing Images in a Remote Registry
- The Docker Container Runtime
Deploying a Kubernetes Cluster
-
- Installing Kubernetes on a Public Cloud Provider
- Installing Kubernetes Locally Using minikube
- Running Kubernetes on Raspberry Pi
- The Kubernetes Client
- Cluster Components
Common Kubernetes Commands
- Namespaces
- Contexts
- Viewing Kubernetes API Objects
- Creating, Updating, and Destroying Kubernetes Objects
- Labelling and Annotating Objects
- Debugging Commands
Pods
- Pods in Kubernetes
- Thinking with Pods
- The Pod Manifest
- Running Pods
- Accessing Pod
- Health Checks
- Resource Management
- Persisting Data with Volumes
- The Distributed System ToolKit
- Sidecar containers
- Ambassador containers
- Adapter containers
Labels and Annotations
- Labels
- Annotations
Resource Quotas
- Enabling Resource Quota
- Compute Resource Quota
- Storage Resource Quota
- Object Count Quota
- Quota Scopes
- Requests vs Limits
- Viewing and Setting Quotas
- Quota and Cluster Capacity
- Limit Priority Class consumption by default
Service Discovery
- What Is Service Discovery?
- Using CoreDNS for Service Discovery
- About CoreDNS
- Upgrading an existing cluster with kubeadm
- Installing kube-dns instead of CoreDNS with kubeadm
- The Service Object
- Looking Beyond the Cluster
- Cloud Integration
- Advanced Details
ReplicaSets
- Reconciliation Loops
- Relating Pods and ReplicaSets
- Designing with ReplicaSets
- ReplicaSet Spec
- Creating a ReplicaSet
- Inspecting a ReplicaSet
- Scaling ReplicaSets
- Deleting ReplicaSets
DaemonSets
- DaemonSet Scheduler
- Creating DaemonSets
- Limiting DaemonSets to Specific Nodes
- Updating a DaemonSet
- Deleting a DaemonSet
Jobs
- The Job Object
- Job Patterns
ConfigMaps and Secrets
- ConfigMaps
- Secrets
- Naming Constraints
- Managing ConfigMaps and Secrets
Deployments
- First Deployment
- Creating Deployments
- Managing Deployments
- Updating Deployments
- Deployment Strategies
- Deleting a Deployment
Integrating Storage Solutions and Kubernetes
- Importing External Services
- Running Reliable Singletons
- Kubernetes-Native Storage with StatefulSets
The Ecosystem
- Installing Helm, the Kubernetes Package Manager
- Using Helm to Install Applications
- Creating Your Own Chart to Package Your Application with Helm
- Converting Your Docker Compose Files to Kubernetes Manifests
- Creating a Kubernetes Cluster with kubicorn
- Storing Encrypted Secrets in Version Control
- Deploying Functions with kuberless
Deploying Real-World Applications
- Parse
- Ghost
- Redis
Service Mesh
-
- Why service mesh?
- Conduit and Istio
- Managing microservices with Istio
Authorization Overview
-
- Determine Whether a Request is Allowed or Denied
- Review Your Request Attributes
- Determine the Request Verb
- Authorization Modules
- Using Flags for Your Authorization Module
- Privilege escalation via pod creation
Networking
-
- Calico
- Flannel
Scaling
-
- Scaling a Deployment
- Automatically Resizing a Cluster in GKE
- Automatically Resizing a Cluster in AWS
- Using Horizontal Pod Autoscaling on GKE
Security
-
- Providing a Unique Identity for an Application
- Listing and Viewing Access Control Information
- Controlling Access to Resources
- Securing Pods
Ingress Controller
-
- What is Ingress?
- Prerequisites
- The Ingress Resource
- Ingress controllers
- Before you begin
- Types of Ingress
- Updating an Ingress
- Failing across availability zones
- Future Work
- Alternatives
Monitoring and Logging
- Accessing the Logs of a Container
- Recover from a Broken State with a Liveness Probe
- Controlling Traffic Flow to a Pod Using a Readiness Probe
- Adding Liveness and Readiness Probes to Your Deployments
- Enabling Heapster on Minikube to Monitor Resources
- Using Prometheus on Minikube
- Using Elasticsearch–Fluentd–Kibana (EFK) on Minikube