Course Code:
k8sbabspk
Duration:
28 hours
Prerequisites:
- Basic understanding of Linux OS and its commands
- Basic understanding of Docker and containers
For the Helm Course:
- Experience with the Linux command line
- Experience managing containers with Kubernetes
- A general understanding of "continuous integration" (CI) / "continuous deliver" (CD) concepts
Overview:
By the end of this training, participants will be able to:
- Understand the difference between monolithic and microservice architectures and the need for container orchestration in modern app development.
- Analyze the high-level Kubernetes architecture including clusters, control plane, worker nodes, and their components.
- Learn to package and deploy applications using Pods, ReplicaSets, and Deployments, and understand their lifecycle and scaling strategies.
- Gain hands-on experience with key kubectl commands, YAML-based declarative deployments, and health probes for application reliability.
- Understand the Kubernetes networking model including container-to-container and pod-to-pod communication.
- Learn to expose applications using ClusterIP, NodePort, and LoadBalancer services.
- Explore Ingress controllers and their architecture to manage external access to services with routing rules.
- Understand how Kubernetes handles storage through Volumes, Persistent Volumes (PV), Persistent Volume Claims (PVC), and Storage Classes.
- Learn to use ConfigMaps and Secrets to manage configurations and sensitive data securely and separately from code.
- Develop practical troubleshooting skills and learn best practices for maintaining healthy and resilient Kubernetes applications.
For the Helm Course:
- Install and configure Helm.
- Create reproducible builds of Kubernetes applications.
- Share applications as Helm charts.
- Run third-party applications saved as Helm charts.
- Manage releases of Helm packages.
Course Outline:
Day 1 - Kubernetes Basics
- Microservice vs monolith applications; Trainers can ask questions about archiving service isolation, probing answers ‘Docker’ from the audience.
- The problem - Automating the deployment, scaling, and management of containerized applications across clusters of servers
- The solution - Highlight the need for orchestration
- Introduction to Kubernetes (introduce scaling, self-healing, and use cases)
- Where did Kubernetes come from Borg >> Omega >> Kubernetes >> Kubernetes as a service (AKS, GKE, EKS)
- Introduce cloud-Native technologies
- Kubernetes as a cloud-native
- Use cases of cloud-native technologies
- Understanding Kubernetes architecture. Start from 40K feet and zoom in little by little. cluster >> control and data plane nodes >> components in master node >> components in worker nodes
- Packaging apps for Kubernetes; Introduce Pods
- Pods and containers
- Pod lifecycle
- Create a Kubernetes cluster; Discuss the hard way, kubeadm, minicube
- Introduce the kubectl command
- Introduce kubectl get command
- Introduce kubectl describe command
- Introduce kubectl exec command
- Introduce kubectl logs command
- Introduce Labels
- Introduce Annotations
- Introduce Namespaces
Deployments
- Introduction to Deployments and Replica sets
- Use case of Deployments and Replica sets in Kubernetes environment
- Why deployments as another layer of abstraction
- A quick word on scaling; discuss manual scaling here, Cover horizontal, vertical, and cluster autoscaling
- Introduce rolling Updates with deployments
- The problem with the imperative approach
- Make deployment with YAML declarative file
- The solution - declarative files (YAML)
- Introduction to YAML and Understanding the YAML format
- Introduce health checks (Liveness probe, readiness probe, and startup probe)
Day 2 - Networking
- Introduction to the networking model inside the cluster
- Introduce container to container communication: Localhost (127.0.0.1)
- Introduce Pod to pod communication: Pod IP address
- Introduce services for external communication
- Introduce ClusterIP - Accessing apps from the inside of the cluster
- Introduce NodePort - Accessing apps from the outside of the cluster
- Introduce LoadBalencer - Accessing apps via load-balencer
- The problem - Complexity and limitations of managing external access to multiple services at scale
- The solution - Unified routing layer to manage external access to services within a Kubernetes cluster
- Introduce Ingress
- Ingress architecture
- How to archive network isolation via network policies
Day 3 - Storage
- Introduction to the Container Storage Interface (CSI)
- Introduce volumes
- Creating and configuring persistent volumes (PV) and claims (PVC)
- Dynamic provisioning: Storage Classes (SC)
- Introduce access modes (ReadWriteOnce, ReadWriteMany, ReadOnlyMany, ReadWriteOncePod)
- The problem - Managing and deploying environment-specific configurations and sensitive data securely
- Solution - Decoupling configuration artifacts and sensitive data from application code
- Introduce Configmaps
- Introduce Secrets
- Are Kubernetes Secrets secure? How to make them secure
Troubleshooting and best practices
- Introduce the concept of troubleshooting
- Troubleshooting tips and tricks
- Best practices to follow
Day 4 - Deploying Kubernetes Applications with Helm
- Introduction
- Helm package manager as a Continuous Integration (CI) / Continous Deployment (CD) tool.
- Installing and Configuring Kubernetes and Helm
- Refresher on Kubernetes Cluster Architecture and Docker
- Overview of Helm Features and Architecture
- Navigating the Kubernetes Dashboard and Helm CLI
- Setting up a Helm Repository
- Creating a Helm Chart
- Deploying a Kubernetes Application
- Managing the Application
- Handling Namespaces
- Monitoring and Logging
- Securing Helm: Authentication and Authorization
- Managing the Life Cycle with Hooks
- Testing Helm
- Working with Database and APIs
- Deploying Complex Applications to Production
- Troubleshooting
- Summary and Next Steps