PubNub sponsors SDD. Pub/sub messaging, IoT control, Real-time data-stream network, Trusted by 2,000 companies for thousands of apps. Get Started.

Microservices to Kubernetes

Course Logistics

This course is for software engineers (architects, developers, DevOps, administrators, testers) who want to move their solutions to Microservices and containers running on Cloud native, distributed container platforms. This introduction course covers the key operations to automate, deploy, and manage containerized applications on Kubernetes.

Prerequisites

  • Laptop with browser and internet connectivity
  • Students are encouraged to install Minikube, a form of Kubernetes on their local laptop with hardware minimally equivalent to an i7 with 16GB memory

Day 1 – Microservices and Containers

Goal: Get comfortable with building and running microservices in containers

  • Agenda and course logistics
  • Attendee introductions

Microservice Frameworks

  • Granularity and modularity
  • High cohesion, low coupling
  • Common language frameworks
  • REST and gRPC services
  • Swagger
  • Building
  • Versioning
  • Kata: Spring Boot with Maven/Gradle

Managing Containers

  • (R)evolution of VMs to Containers
  • Bajillions of containers
  • History and architecture with Linux
  • Image format and OCI specification
  • Tooling
  • Kata: Running containers

Building Containers

  • Dockerfile
  • Scripts in containers
  • Deriving from containers
  • Microframeworks in containers
  • Kata: Writing polyglot containers

Designing Containers

  • Best practices
  • Optimization
  • Networking
  • Storage
  • Low coupling
  • Security
  • Java and JLink
  • Kata: Advanced multi-layer dockerfile

Managing Containers

  • Continuous integration
  • Versioning
  • Registries
  • Container engines
  • Container orchestration
  • Kata: Publishing and debugging

Day 2 – Kubernetes

Goal: Get comfortable with running applications on Kubernetes

Architecture

  • What is Kubernetes?
  • Why is it leading over other choices?
  • Targets and vendor choices
  • Cloud Native Computing Foundation
  • Terms and Components
  • Manifests and Objects
  • Kata: First applications on Kubernetes

Cluster Administration

  • Kubectl and Dashboard
  • VSCode/Intellij plugins
  • Helm
  • Kata: Explore application using Helm

>Orientation of 20+ Standard Objects

  • Resource manifest morphology
  • Cluster of Nodes
  • Objects for Pods
  • Resource requests
  • Namespaces
  • Services, DNS and Ingress
  • ConfigMaps and Secrets
  • Persistence and Statefulness
  • Role-based access control
  • Kata: Create deployments using objects
  • Kata: Jobs and work queues

Possibilities with 15 Container Patterns

  • Sidecar
  • Ambassador
  • Adapter
  • Scatter/Gather
  • Queue
  • Initializer
  • Kata: Build, deploy and explore a sidecar

Operations

  • Deployment targets
  • Minikube, Minishift, K3s
  • Cloud services
  • Terraform
  • Kubeadm
  • KOPS
  • Helm charts and context files
  • Kata: Minikube orientation

Day 3 – Creating Applications

Goal: Get comfortable with designing and monitoring applications on Kubernetes

Runtime Observability

  • Logging
  • Tracing
  • Monitoring
  • Probes, resilience and scaling
  • Diagnostics
  • Kata: Logging stack
  • Kata: Horizontal pod scaling with Prometheus

Application Creation

  • Example application design
  • Helm chart design
  • Build, Publish and Run
  • Kata: Create and deploy a multi-container solution

Operator Pattern

  • Architecture
  • Public operators
  • Customer Resource Definitions
  • Controllers
  • SDK

Current Trends

  • Istio
  • Knative
  • Serverless
  • CI/CD
  • Kata: Functions with OpenFaaS

Conclusion

  • Next steps and learning more
  • Open questions and discussion

Jonathan Johnson

Jonathan Johnson

Jonathan is been engineering commercial software for 30 years. He started out building laboratory instrument software and managing its data, and then moved on to personal banking software using object-oriented design. Jonathan returned to laboratory software at 454 Life Sciences and Roche Diagnostics, and leveraged Java-based state machines and enterprise services to manage the terabytes of data flowing out of DNA sequencing instruments. As a hands-on architect at Thermo Fisher Scientific, he applied the advantages of microservices, containers, and Kubernetes to their laboratory management platform. Now he shares ways to modernize application architectures while adhering to the fundamentals of high modularity and low coupling, and regularly discusses his experiences with technical groups, meetups and workshops.

Visit website

Follow Jonathan on Twitter

Click here to register