Kubernetes for Developers

Kubernetes for Developers Courseware (WA3007)

In this Kubernetes for Developers training course students learn how to containerize, host, deploy, and configure an application in a multi-node cluster. 

Benefits

  • Learn how to containerize and deploy a new Python script
  • Understand and configure the deployment with ConfigMaps, Secrets and SecurityContexts
  • Understand multi-container pod design
  • Learn to configure probes for pod health
  • Learn to update and roll back an application
  • Understand how to implement services and set NetworkPolicies
  • Learn how to use PersistentVolumeClaims for state persistence

Outline

  1. Kubernetes Core Concepts
    1. Kubernetes Basics
    2. What is Kubernetes?
    3. Container Orchestration
    4. Kubernetes Architecture
    5. Kubernetes Concepts
    6. Cluster and Namespace
    7. Nodes
    8. Master
    9. Pod
    10. Using Pods to Group Containers
    11. Label
    12. Label Syntax
    13. Annotation
    14. Label Selector
    15. Replication Controller and Replica Set
    16. Service
    17. Storage Volume
    18. Secret
    19. Resource Quota
    20. Authentication and Authorization
    21. Routing
    22. Docker Registry
    23. Summary
  2. Kubernetes Architecture
    1. Architecture Diagram
    2. Components
    3. Kubernetes Cluster
    4. Master Node
    5. Kube-Control-Manager
    6. Nodes
    7. Other Components
    8. Interacting with Kubernetes
    9. Summary
  3. Build
    1. What is Docker
    2. Where Can I Run Docker?
    3. Docker and Containerization on Linux
    4. Linux Kernel Features: cgroups and namespaces
    5. The Docker-Linux Kernel Interfaces
    6. Containerizing an Application
    7. Building a Docker Images using Dockerfile
    8. Sample Dockerfile
    9. Environment Variables
    10. Environment Variables - Example
    11. Arguments
    12. Multi-stage Builds
    13. Stop at a Specific Build Stage
    14. RUN
    15. EXPOSE
    16. COPY
    17. ADD
    18. CMD
    19. ENTRYPOINT
    20. CMD vs. ENTRYPOINT
    21. VOLUME
    22. Build the Image
    23. .dockerignore
    24. Dockerfile – Best Practices
    25. Published Ports
    26. Docker Documentation
    27. Docker Registry
    28. Hosting a Local Registry
    29. Deploying to Kubernetes
    30. Running Commands in a Container
    31. Multi-Container Pod
    32. Summary
  4. Design
    1. Traditional Applications
    2. Virtual Machines
    3. Containerized Applications
    4. Decoupled Resources
    5. Transience
    6. Flexible Framework
    7. Application Resource Usage
    8. Measuring Resource Usage
    9. Docker Resource Usage Statistics
    10. Docker Container Resource Constraints
    11. Docker Run Command Resource Flags
    12. Using Label Selectors
    13. Equality Based Label Selector
    14. Set Based Label Selector
    15. Multi-Container Pods
    16. Sidecar Container
    17. Sidecar Container Uses
    18. Adapter Container
    19. Summary
  5. Deployment Configuration
    1. Introduction to Volumes
    2. Container OS file system storage
    3. Docker Volumes
    4. Kubernetes Volumes
    5. Volume Specs
    6. K8S Volume Types
    7. Cloud Resource Types
    8. emptyDir
    9. Using an emptyDir Volume
    10. Other Volume Types
    11. Persistent Volumes
    12. Creating a Volume
    13. Persistent Volume Claim
    14. Persistent Volume
    15. Pod that uses Persistent Volume
    16. Dynamic Volume Provisioning
    17. Requesting Dynamic Storage
    18. Secrets
    19. Creating Secrets from Files
    20. Creating Secrets from Literals
    21. Using Secrets
    22. configMaps
    23. Creating configMaps from Literals
    24. Creating configMaps from files
    25. Using configMaps
    26. Security Context
    27. Security Context Usage
    28. Deployment Configuration Status
    29. Replicas
    30. Scaling
    31. Rolling Updates
    32. Summary
  6. Security
    1. Security Overview
    2. API Server
    3. API & Security
    4. ~/.kube/config
    5. Kubernetes Access Control Layers
    6. Authentication
    7. Authorization
    8. ABAC Authorization
    9. ABAC - Policy Format
    10. ABAC - Examples
    11. RBAC Authorization
    12. Role and ClusterRole
    13. Role - Example
    14. ClusterRole - Example
    15. RoleBinding and ClusterRoleBinding
    16. RoleBinding - Example
    17. ClusterRoleBinding - Example
    18. Authorization Modes - Node
    19. Authorization Modes - ABAC
    20. Admission Controller
    21. Network Policies
    22. Network Policies - Examples
    23. Network Policies - Pod Isolation
    24. Network Policies - Internet Access for Pods
    25. Network Policies - New Deployments
    26. Summary
  7. Exposing Applications
    1. Kubernetes Services
    2. Service Resources
    3. Service Type
    4. ClusterIP
    5. NodePort
    6. NodePort from Service Spec
    7. LoadBalancer
    8. LoadBalancer from Service Spec
    9. ExternalName
    10. Accessing Applications
    11. Service Without a Selector
    12. Ingress
    13. Ingress Resource Example
    14. Ingress Controller
    15. Service Mesh
    16. Summary
  8. Troubleshooting Kubernetes
    1. Troubleshooting Overview
    2. Objects in Kubernetes
    3. Relationships in Kubernetes
    4. Operations in Kubernetes
    5. Understanding the Issue
    6. Troubleshooting Tools
    7. Troubleshooting Commands
    8. Troubleshooting Pods
    9. Troubleshooting the Cluster
    10. Cluster Failure Modes
    11. Monitoring
    12. Monitoring Applications
    13. Accessing Logs
    14. Logging Tools
    15. Conformance Testing
    16. Summary
  9. Lab Exercises
    1. Lab 1. Creating a Docker Account and Obtain an Access Token
    2. Lab 2. Configuring Minikube/Kubernetes to Use a Custom Docker Account
    3. Lab 3. Getting Started with Kubernetes
    4. Lab 4. Building a Docker Image with Dockerfile
    5. Lab 5. Deploying to Kubernetes
    6. Lab 6. Implementing the Sidecar Pattern
    7. Lab 7. Deploying Applications
    8. Lab 8. Implementing RBAC Security
    9. Lab 9. Accessing Applications
    10. Lab 10. Troubleshooting

Required Prerequisites

WA2675 Architecting Microservices with Kubernetes, Docker, and Continuous Integration Training – or equivalent experience.  Students should be familiar with a programming language and be comfortable with basic Linux command line and file editing skills.