Skip to content

jungho/k8s-bootcamp

Repository files navigation

Kubernetes Bootcamp

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) 2019, 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:

Outline:

  • 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:
    • Draft - Tool to help developers be productive building/testing applications on K8S
    • Minikube - Local single node K8S cluster for development and learning.

Interesting Links

Very Helpful Utilities