Note: This is a condensed version of our 2-day bootcamp tailored for the 1 day K8S Hackfest. To learn about our intensive 2 day K8S bootcamp, send us a note at kubernetes@architech.ca
Copyright (c) 2018, Architech. All rights reserved.
** Link to PDF version of the presentation for this bootcamp is here **
Kubernetes (K8S) is the industry standard for deploying, managing, operating container based distributed applications. It is proven in the most demanding production environments in the world. Internet scale companies such as Google, Netflix, EBay and many more depend on Kubernetes to quickly deploy applications and bring product to market faster.
In this bootcamp, we will cover all the essential concepts in Kubernetes. We will go through Kubernetes from the persective of two user personas.
- The Application Engineer that engineers the software solutions deployed to K8S.
- The Platform Engineer that provisions, configures and operates the platform (including cloud services, K8S, CI/CD, databases, message queues, caches, authentication providers, etc) that the Application engineers depends on to bring product to market.
We will deploy a microservice based application to K8S. Using this reference application, we will learn K8S concepts in a more meaningful way - as if you were using K8S to deploy and manage a real application. We will cover scenarios such as:
- Continuous Integration/Continuous Deployment
- Blue/Green deployments
- Auto-scaling your application to deal with peak traffic demand
- RBAC (Role Based Access Control) to ensure Production environments are isolated from Dev/Test and QA.
- Many more.
By the end of this bootcamp, you will learn the following K8S concepts:
- Pods - the unit of deployment on K8S
- Services - how service discovery works in K8S
- Deployments - doing rolling updates, rollbacks, scaling out
- Storage - managing durable state with volumes, persistance volumes and persistent volume claims
- Secrets - externalizing secrets and passwords
- ConfigMaps - externalizing configuration from your applications
- Jobs
- DaemonSets
- StatefulSets
- Ingress and Ingress Controllers - key to controlling how requests originating from outside the cluster is routed to your services
- RBAC - locking down your K8S environment
- Helm - packaging and deploying your application to K8S
- Kubernetes Architecture
- Key components and what role they serve
- Key K8S resources and their purpose
- Quick overview of Kubernetes networking
- K8S as a dynamic platform and what that means
- Setting up your environment
- The Todo list microservices application overview
- Deploying the application to K8S
- Making a change and doing a rolling-update
- Scaling out the application to deal with increased traffic
- Pods - the unit of deployment in K8S
- Defining the manifest
- What to consider when decomposing your application into pods
- Health checks and CPU, Memory requests and limits
- Services - How do pods find each other?
- Exposing your pods as services
- Using load-balancers and NodePorts to expose your pods to clients outside your cluster
- Accessing services external to your cluster. e.g. Azure CosmosDB service
- Deployments - Deployments enable you to perform rolling upgrades, rollback, and scale up/scale down your services.
- Storage - Volumes, Persistent Volumes, Persistence Volume Claims, Storage Classes.
- ConfigMaps - ConfigMaps enable you to define configuration that is accessible as environment variables, files in a volume or command line arguments.
- Ingress - Customizing the routing your published services.
- Deploying the nginx ingress controller
- Configuring routing to different version of your services
- RBAC - Role Based Access Control - Controlling access to your K8S cluster.
- K8S authn/authr model
- Roles and Role bindings
- Integrating Azure AD for authn/authr
- Creating custom roles and role bindings to only allow access to a specific namespace (e.g. qa or dev)
- Introduction to Helm - Package manager for K8S deployments.
- What is it and why you need it
- Deploying the Todo list application using Helm
- Charts and templates
- Sharing your charts
- Brief overview of other K8S tools and projects you should know about: