Modern DevOps with Docker and Kubernetes

Software is remaking the world and containers are remaking how we run and manage software. This course introduces two of the most powerful container technologies - Docker and Kubernetes - and how they can be used by software developers.

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 depoyment (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.

Target Audience.

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.

Prerequisites.

  • Proficiency with the Linux Command Line Interface (CLI)
  • Broad understanding of Linux system administration: Linux file system, networking, and bash scripting.
  • Computer programming concepts and methodologies. Full code examples for the course are provided in the Python and Java programming languages.

Objectives.

  • 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.

Course Details

Day 1: Containers and Docker

Session objectives:

  • Discuss how recent trends in the software industry such as microservice architecture, DevOps, and Cloud Native Practices have led to the emergence of containers and container orchestration platforms.
  • Showcase tooling to help work with groups of computers
  • Introduce Docker and its functional components

Modules:

  • Evolving Architectures
  • DevOps Tooling
  • Docker in Action
  • Continuous Integration

Day 2: Kubernetes Fundamentals

Session objectives:

  • Introduce Kubernetes and its core components
  • Show how stateless and stateful applications can be deployed into a cluster
  • Explore how to provide supporting resources such as networking connectivity, load balancing and ingress, and persistent storage

Modules:

  • Kubernetes Core Concepts (Quickstart)
  • Beyond Basics
  • Coding Infrastructure and Platform
  • Container Networking
  • Storage and State

Day 3: Advanced Kubernetes

Session objectives:

  • Show how Kubernetes can be used to manage complex integrated applications
  • Demonstrate how the deployment of applications can be automated through Continuous Deliver

Modules:

  • Data Pipelines
  • Cloud Object Storage
  • Continuous Deployment

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
Stacked set of four containers


Docker in Action

  • 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
  • Lab: Multi-container Applications

Continuous Integration Using Docker

  • CI/CD Fundamentals
  • Jenkins
  • Lab: Deploying Jenkins
  • Lab: Building CI Pipelines
Aerial view of container yard


Kubernetes Core Concepts (Quickstart)

  • Kubernetes Core Components
    • Pods
    • Labels
    • Controllers
    • Services
    • Secrets
  • Lab: Kubernetes Admin Interfaces
  • Lab: Kubernetes Deployments
    • Deploying an Application to Kubernetes
    • Connecting Applications via Services
  • Lab: Accessing Applications with Services

Kubernetes: Beyond Basics

  • Kubernetes Service Discovery
  • Lab: Kubernetes Service Discovery

Coding Infrastructure and Platform

  • Helm Packaging Fundamentals
  • Lab: Helm in Action
  • Building Helm Charts
  • Lab: Kubernetes and Helm Charts

Container Networking

  • Container Network Fundamentals
  • Container Network Interfaces and Software Defined Networking
  • Network Traffic in Kubernetes
    • Services (In-Depth)
    • Load Balancers
    • Ingress Controllers
  • NGINX Ingress Controller
  • Lab: Load Balancers and Ingress Controllers

Storage and State

  • Storage Management in Kubernetes
    • Persistent Volumes
    • Persistent Volume Claims
Container Yard


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)

Cloud Object Storage

  • 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
  • Lab: CI/CD from Start to End

Comments

Loading
Unable to retrieve data due to an error
Retry
No results found
Back to All Comments