Docker and Kubernetes are important technologies that can help you scale your applications.
Docker is a platform for packaging, deploying, and running applications in containers. Kubernetes is a system for managing containerized applications across a cluster of nodes. It provides basic mechanisms for deployment, maintenance, and scaling of applications.
Introduction to Containers
- Docker installation and set up.
- Docker images and containers
- Building a Dockerfile with best practices
- Logging , networking and security
- Docker volumes
- Image registries
- Labs
Kubernetes introduction
- What is Microservices – principle and forecast
- Architecture deep dive
- Installation on multiple environments ( cloud , local , vagrant )
- Labs on identifying the operational pieces ( Kubelet , apiserver, controllers , etcd )
- Kubernetes the hard way
Managed pods
- Replicasets
- Daemonsets
- Jobs
- Deployments
- Labs and exercises
Introduction to Kubernetes first class citizen - pods
- YAML definition
- Introduction of Pods
- Listing pods through
- Creation of namespaces
- Labs on pod creation , imperative and declarative
Pods in-depth
- InitContainers
- Health checks
- Accessing containers
- Requests and limits
- Labs and exercises
Secrets and Configmaps
- What they are
- How to create them
- How to reference them in a pod
- Labs and exercises
Volumes
- Types of volumes
- Creating a volume
- Dynamic volume provisioning
- Labs on using configmaps, secrets, OpenEBS or rook ( Install one of the CAS -> Longhorn preferably )
Kubernetes Networking
- CNI
- ClusterIP
- Nodeport
- Loadbalancer
- Ingress
- Certmanager for TLS
Security
- RBAC
- Network Policies
- Security Context ( for both pod and container )
- PSP
- PSP replacement
- Kyverno
- CIS Benchmark
Advanced Scheduling concepts
- NodeSelectors
- NodeAffinity
- Pod Affinity/AntiAffinity
Advanced Scaling
- Cluster autoscaler
- HPA
Monitoring applications with Prometheus and Grafana
- Concept
- Installation
- Best practice
- Troubleshooting
- Link to further study