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.
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.
- 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.
- 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.
Day 1: Containers and Docker
- 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
- Evolving Architectures
- DevOps Tooling
- Docker in Action
- Continuous Integration
Day 2: Kubernetes Fundamentals
- 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
- Kubernetes Core Concepts (Quickstart)
- Beyond Basics
- Coding Infrastructure and Platform
- Container Networking
- Storage and State
Day 3: Advanced Kubernetes
- Show how Kubernetes can be used to manage complex integrated applications
- Demonstrate how the deployment of applications can be automated through Continuous Deliver
- Data Pipelines
- Cloud Object Storage
- Continuous Deployment
- Microservice Architecture
- DevOps Primer
- Cloud Native Practices
- Implementing Microservices with Docker and Kubernetes
- Managing software in Linux: apt, yum, apk
- DevOps Workflows with git
- Infrastructure Management with Ansible
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
- Lab: Deploying Jenkins
- Lab: Building CI Pipelines
Kubernetes Core Concepts (Quickstart)
- Kubernetes Core Components
- 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 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
- 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
- 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
No results found