Modern DevOps Using Docker and Kubernetes

Course Overview

Containers are a powerful tool for developing and managing software. When combined with DevOps practices, it is possible for organizations to efficiently deliver applications and services at high velocity.

This training course introduces containers and two of the most popular tools for their management and orchestration: Docker and Kubernetes. They will be introduced to the core components of both Docker and Kubernetes as they apply to the software development process.

Topics covered include: containers, tools for local management, pods, labels, volumes, networking, replication controllers, services, and stateful sets. Students will get hands-on experience with how the technologies can be used to deliver software following microservices and DevOps strategies, and will create a complete continuous integration and deployment (CICD) pipeline showing how Docker and Kubernetes can be used to manage the software lifecycle. Components of the broader software ecosystem including Ansible, Jenkins, and Spinnaker will also be covered as they pertain to Docker/Kubernetes.

At the end of the course, participants and teams will understand how to build secure, robust, highly available services that are resilient and able to adapt to rigorous application demands. They will also be able to show how components of the ecosystem can be combined to create larger systems addressing complex use-cases.

3 days
    • Learn the fundamental uses of container technology and the architectural principles of how to apply containers to technical challenges.
    • Create containers with both packaged solutions and custom software.
    • Use the Docker and Kubernetes CLI environments to deploy solutions in local (Docker) and cluster (Kubernetes) environments.
    • Understand the fundamental Kubernetes resources used for configuring and deploying containerized applications. Understand how to supply environment specific configuration and secrets for Kubernetes applications.
    • Design and run CI/CD workflows on Docker and Kubernetes using Jenkins and Spinnaker.
    • Learn how stateful services – such as databases, streaming solutions such as Kafka, and other specialty applications such as ElasticSearch – can be deployed in highly-available configurations with redundancy and service-discovery/load-balancing.
    • Show how other components – such as Kafka Connect – can be used to integrate services within the Kubernetes platform.
  • Evolving Architectures

    • Microservice Architecture
    • DevOps Primer
    • Cloud Native Practices
    • Implementing Microservices with Docker and Kubernetes

    DevOps Tooling

    • Managing software in Linux: apt, yum, apk
    • DevOps Workflows with git
    • Infrastructure Management with Ansible

    Docker in Action (Review)

    • Docker runtime and architecture
    • Managing containers
    • Docker Container Registry
    • Lab: Managing Containers
    • Lab: Building Images
    • Lab: Packaging Software with Dockerfiles
    • Lab: Manage Docker Networks
    • Lab: Manage Docker Volumes

    Continuous Integration Using Docker

    • CI/CD Fundamentals
    • Jenkins
    • Lab: Deploying Jenkins
    • Lab: Building CI Pipelines

    Kubernetes Core Concepts (Quickstart)

    • Pods
    • Labels
    • Controllers
    • Services
    • Secrets
    • Lab: Accessing the Kubernetes API
    • Lab: Kubernetes Workloads
      • Deploying an Application to Kubernetes
      • Connecting Applications via Services
    • Lab: Accessing Applications with Services

    Kubernetes: Beyond Basics

    • Kubernetes Services in depth
    • Lab: Kubernetes Service Discovery

    Container Networking In-depth

    • Container Network Fundamentals
    • Container Network Interfaces in Kubernetes
    • Network Traffic in Kubernetes
    • Controlling Application Ingress
    • Lab: MetalLB and NGINX Ingress

    Stateful Services

    • Considerations involved in the management of stateful applications
    • Case Study: Kafka, a Big Data streaming solution
    • Lab: Deploy ZooKeeper and Kafka as stateful sets with headless services
    • Lab: Produce and consume data to Kafka

    Systems Integration

    • Case Study: Building ETL pipelines with Kafka Connect
    • Lab: Deploy MySQL/MariaDB
    • Lab: Deploy ElasticSearch
    • Lab: Extract, Transform, Load Data
    • Lab: Integrate data systems using streams (Kafka Connect)

    Infrastructure as Code

    • Describing and deploying applications as packages
    • Using Helm to deploy pre-packaged software resources to Kubernetes
    • Lab: Install helm and Tiller
    • Lab: Installing software from charts
    • Lab: Packaging Software Components as Charts
    • Lab: Packaging Software Components with Dependencies

    Cloud Storage Within Kubernetes

    • Benefits of Storage as a Service
    • MinIO: A Self-Hosted S3 Server
    • Lab: Deploy Minio to Kubernetes

    Continuous Deployment

    • Kubernetes CD Systems: Considerations
    • Spinnaker: An Integrated CD Toolkit
    • Lab: Deploy Spinnaker to Kubernetes
    • Lab: Configure Continuous Deployment Pipelines
  • Developers, system architects, technical team leads, systems administrators, and DevOps professionals who want to understand Docker/Kubernetes and how it is used in cloud environments.