Course Overview
This class prepares students for the Certified Kubernetes Application Developer (CKAD) exam. Kubernetes is a Cloud Orchestration Platform providing reliability, replication, and stability while maximizing resource utilization for applications and services. By the conclusion of this hands-on training you will go back to work with all necessary commands and practical skills to empower your team to succeed, as well as gain knowledge of important concepts like Kubernetes architecture and container orchestration.
We prioritize covering all objectives and concepts necessary for passing the Certified Kubernetes Application Developer (CKAD) exam. You will command and configure a high availability Kubernetes environment (and later, build your own!) capable of demonstrating all “K8s’’ features discussed and demonstrated in this course. Your week of intensive, hands-on training will conclude with a mock CKAD exam that matches the real thing.
Who should attend
- Anyone who plans to work with Kubernetes at any level or tier of involvement
- Any company or individual who wants to advance their knowledge of the cloud environment
- Application Developers
- Operations Developers
- IT Directors/Managers
Prerequisites
- Basic Linux skills are helpful.
- Familiarity with a text editor like vi, vim, or nano is helpful.
Course Objectives
- Deploy applications to a Kubernetes cluster
- Use Kubernetes primitives to implement common deployment strategies (e.g. blue/green or canary)
- Define, build and modify container images
- Implement probes and health checks
- Understand multi-container Pod design patterns (e.g. sidecar, init and others)
- Understand ConfigMaps
- Create & consume Secrets
- Troubleshooting and debugging tools
- Provide and troubleshoot access to applications via services
- Use Ingress rules to expose applications
Follow On Courses
Outline: Kubernetes CKAD Bootcamp (KUBERNETES BC)
From Containers to Kubernetes
- Kubernetes Architecture
- Define, build and modify container images
- Pods and the Control Plane
- Deploy Kubernetes using Ansible
Pod Basics
- YAML and how to read it
- Manifests for Pods
- Create and Configure Basic Pods
- API Versioning and Deprecations
Cluster Basics
- Namespaces and Fundamental Kubectl Commands
- Creating and Configuring Namespaces
- Kubectl get and sorting
- Listing Resources with kubectl get
- Examining Resources with kubectl describe
Container Health, Security, and Observability
- Kubectl port-forward
- kubectl port-forward
- Kubectl exec and cp
- Performing Commands inside a Pod
- Readiness and Liveness Probes
- Implement Probes and Health Checks
- Security Contexts for Pods
- Applying Security Contexts
Resource Management
- Limits, Requests, and Namespace ResourceQuotas
- Understanding and Defining Resource Requirements, Limits and Quotas
- Kubectl Top and Application Monitoring
- Admission Controller
- Create a LimitRange AdmissionController
RBAC
- Role Based Access Control
- Service Accounts
- Contexts
- Cluster Access with Kubernetes Context
Logging
- Utilize Container Logs
- Kubectl Log Command
- FluentD and RsysLog
Ephemeral Storage
- ConfigMaps and Volume Mounting
- Persistent Configuration with ConfigMaps
- Secrets
- Create and Consume Secrets
Persistent Storage
- Persistent Volumes, Claims, and StorageClasses
- Using PersistentVolumeClaims for Storage
- Persistent Volumes with CSI
- CIS Storage Solution: NFS
Multi-Container Pod Design
- Multi-Container Pods
- Configuring a FluentD Logging Sidecar
- Init Containers
- Using Init Containers for Pod Initialization
Deployments
- Labels
- Understanding Labels and Selectors
- Annotations
- Insert an Annotation
- ReplicaSets
- Create and Configure a ReplicaSet
- DaemonSets
- Deployments- Purpose and Advantages
- Create and Configure a Deployment
- Deployments Rollout
- Performing Rolling Updates and Rollbacks
- Blue/Green and Canary Deployment Strategies
- Advanced Deployment Strategies
- Deployments- Horizontal Scaling
- Horizontal Pod Autoscaler
Jobs and CronJobs
- Jobs and CronJobs
- Running and Executing a Job
- Scheduling a Cronjob
Affinity and Anti-Affinity
- Taints and Tolerations
- Tainted Nodes and Tolerations
NetworkPolicy
- Network Policy
- Network Policy Basics
- Namespace Network Policy
Services and Ingress
- Networking with Services
- Expose Applications via Services
- Networking Plugins
- Ingress Controllers
- Expose Applications via Services
DNS
- Hostnames and FQDNs
- Utilizing FQDNs
The Helm Package Manager
- Helm
- Deploy Existing Packages with Helm
Extending Kubernetes
- Custom Resource Definitions
- Introduction to CRDs
Troubleshooting
- Troubleshooting
CKAD
- Tips to Pass your CKAD Exam!
- CKAD Practice Drill
Bonus Labs
- Deploy a Microserviced Boutique
Appendix
- Useful Lab Links