Curso Docker and Kubernetes Fundamentals
24 horasVisão Geral
Este Curso Docker and Kubernetes Fundamentals, oferece uma combinação de conceitos teóricos, bem como laboratórios práticos do mundo real, permitindo que os alunos apliquem seus conhecimentos. O Curso Docker and Kubernetes Fundamentals, cobre habilidades essenciais de Kubernetes e Docker e apresenta brevemente a integração contínua.
Objetivo
Após realizar este Curso Docker and Kubernetes Fundamentals, você será capaz de:
- Os usos fundamentais da tecnologia de contêineres e os princípios arquitetônicos de como aplicar contêineres a desafios técnicos.
- Crie contêineres com soluções empacotadas e software personalizado.
- Use os ambientes CLI do Docker e do Kubernetes para implantar soluções em ambientes locais (Docker) e de cluster (Kubernetes).
- Como serviços com estado – como bancos de dados, soluções de streaming e outros aplicativos especializados – podem ser implantados em configurações altamente disponíveis com redundância e descoberta de serviços/balanceamento de carga.
- Como outros componentes – podem ser usados para integrar serviços na plataforma Kubernetes.
- Como o Docker e tecnologias como Jenkins podem ser usados para testar e construir contêineres continuamente com base em alterações no código-fonte.
Publico Alvo
- Desenvolvedores,
- arquitetos de sistemas,
- líderes de equipes técnicas,
- administradores de sistemas e profissionais de DevOps que desejam compreender e usar Kubernetes em ambientes de nuvem.
Pre-Requisitos
- Proficiência com a interface de linha de comando do Linux (CLI)
- Amplo conhecimento de administração de sistemas Linux: sistema de arquivos Linux, rede e scripts bash.
- Conceitos e metodologias de programação de computadores. Exemplos completos de código do curso são fornecidos nas linguagens de programação Python e Java.
Materiais
Português/Inglês + Exercícios + Lab PraticoConteúdo Programatico
Docker and Linux Container Technology: Introduction and Use-Cases
- Modern Infrastructure Terminology
- Virtualization
- Hypervisors
- Hypervisor Types
- Type 1 Hypervisors
- Type 2 Hypervisors
- Type 1 vs. Type 2 Processing
- Paravirtualization
- Virtualization Qualities
- Disadvantages of Virtualization
- Containerization
- Virtualization vs. Containerization
- Where to Use Virtualization and Containerization
- Containerization: High-Level
- Popular Containerization Systems
- What are Linux Containers
- Docker
- OpenVZ
- Solaris Zones (Containers)
- Container Orchestration Tools
- Docker Swarm
- Kubernetes
- Mesos and Marathon
- Docker Use-Cases
- Microservices
- Microservices and Containers / Clusters
Docker in Action
- Docker Basics
- Where Can I Run Docker?
- Installing Docker Container Engine
- Docker Toolbox
- What is Docker?
- Docker Architecture
- Docker Architecture Diagram
- Docker Images
- Docker Containers
- Docker Integration
- Docker Services
- Docker Application Container Public Repository
- Docker Run Command
- Starting, Inspecting, and Stopping Docker Containers
- Docker Volume
- Dockerfile
- Docker Compose
- Using Docker Compose
- Dissecting docker-compose.yml
- Specifying services
- Dependencies between containers
- Injecting Environment Variables
Managing Docker State
- State and Data in Docker
- Volumes
- More About Volumes
- Uses for Volumes
- Working With Volumes
- Create Volume
- Use Volumes with Containers
- Bind Mounts
- Using Bind Mounts
- tmpfs Mounts
- Storing Data in the Container
- Storage Drivers
- Remote Data Storage
- Networking
- The Default Bridge Network
- User-Defined Bridge Networks
- Docker Network Commands
- Creating a User-Defined Bridge Network
Open Container Initiative and Container Runtime Interface
- Open Container Initiative (OCI)
- Docker
- Docker Engine Architecture
- runC
- containerd
- containerd Benefits
- CRI-O
- CRI-O Components
- Kubernetes and CRI-O
- Using Container Runtimes with Minikube
- Docker Runtime and Kubernetes
- Putting Things Together
Kubernetes Architecture
- Kubernetes Basics
- What is Kubernetes?
- Container Orchestration
- Architecture Diagram
- Components
- Kubernetes Cluster
- Master Node
- Kube-Control-Manager
- Nodes
- Pod
- Using Pods to Group Containers
- Label
- Label Syntax
- Label Selector
- Annotation
- Persistent Storage
- Resource Quota
- Interacting with Kubernetes
Working with Kubernetes
- Installation
- Startup
- Kubernetes Tools
- kubectl Command Line Interface
- API Proxy
- Dashboard
- Kubernetes Component Hierarchy
- Deployments
- Deployment Commands
- Updating Deployments
- Network Considerations
- Services
- Namespaces
- Labels
- Annotations
- Other Useful Commands
Kubernetes Workload
- Kubernetes Workload
- Managing Workloads
- Imperative commands
- Imperative Object Configuration
- Declarative Object Configuration
- Configuration File Schema
- Understanding API Version
- Obtaining API Versions
- Stateless Applications
- Sample Deployment Manifest File
- Working with Deployments
- Stateful Applications
- Sample Stateful Manifest File
- Working with StatefulSet
- Jobs
- Sample Job Manifest File
- Working with Batch Job
- DaemonSets
- Sample Daemon Manifest File
- Rolling Updates
Scheduling and Node Management
- Kubernetes Scheduler
- Kubernetes Scheduler Overview (contd.)
- Kubernetes Scheduler Overview (contd.)
- Skip Kubernetes Scheduler
- Scheduling Process
- Scheduling Process - Predicates and Priorities
- Scheduling Algorithm
- Kubernetes Scheduling Algorithm
- Scheduling Conflicts
- Controlling Scheduling
- Label Selectors
- Node Affinity and Anti-affinity
- Node Affinity Example
- Node Antiaffinity Example
- Taints and Tolerations
Managing Networking
- Kubernetes Networking Components
- The Kubernetes Network Model
- Networking Scenarios
- Container-Container Communication
- Pod-Pod Communication
- 1.3 Pod-Service Communication
- External-Service Communication
- Accessing Applications
- Useful Commands
- Container Network Interface (CNI)
- What is CNI’s Role?
- CNI Configuration Format
- Sample CNI Configuration
- Running the CNI Plugins
Managing Persistent Storage
- Storage Methods
- Container OS file system storage
- Docker Volumes
- Kubernetes Volumes
- K8S Volume Types
- Cloud Resource Types
- configMaps
- Creating configMaps from Literals
- Creating configMaps from files
- Using configMaps
- emptyDir
- Using an emptyDir Volume
- Other Volume Types
- Persistent Volumes
- Creating a Volume
- Persistent Volume Claim
- Persistent Volume
- Pod that uses Persistent Volume
- Secrets
- Creating Secrets from Files
- Creating Secrets from Literals
- Using Secrets
- Security Context
- Security Context Usage
Working with Helm
- What is Helm?
- Installing Helm
- Helm and KUBECONFIG
- Helm Features
- Helm Terminology
- Searching for Charts with helm CLI
- Adding Repositories
- Helm Hub - Search
- Helm Hub - Chart Page
- Installing a Chart
- Upgrading a Release
- Rolling Back a Release
- Creating Custom Charts
- Common Chart Files
- Helm Templates
- Installing A Custom Chart
- Packaging Custom Charts
Logging, Monitoring, and Troubleshooting
- Differences Between Logging and Monitoring
- Logging in Kubernetes
- Basic Logging
- Logging Agents
- Fluentd and Elastic Stack
- Monitoring with Prometheus
- Kubernetes and Prometheus - Metrics
- Alerting
- Debugging Pods
- Debugging Pods (Contd.)
- Debugging Nodes
- Debugging Replication Controllers and Services
- Upgrading Kubernetes
- Upgrade Process
- Determine Which Version to Upgrade To
- Upgrade kubeadm
- Upgrade Control Plane Node
- Upgrade kubelet and kubectl
- Upgrade Worker Nodes
- Recovering From a Failure State
Continuous Integration Fundamentals
- Jenkins Continuous Integration
- Jenkins Features
- Running Jenkins
- Downloading and Installing Jenkins
- Running Jenkins as a Stand-Alone Application
- Running Jenkins on an Application Server
- Installing Jenkins as a Windows Service
- Different types of Jenkins job
- Configuring Source Code Management(SCM)
- Working with Subversion
- Working with Subversion (cont'd)
- Working with Git
- Build Triggers
- Schedule Build Jobs
- Polling the SCM
- Maven Build Steps
- Configuring Jenkins to Access Kubernetes
- Jenkins Pipeline
- Jenkins Pipeline Output
- Installing Jenkins Plugins
Lab Exercises
- Lab 1. Creating a Docker Account and Obtaining an Access Token
- Lab 2. Managing Containers
- Lab 3. Building Images
- Lab 4. Dockerfiles
- Lab 5. Getting Started with Docker Compose
- Lab 6. Docker Volumes
- Lab 7. Custom Network Management
- Lab 8. Configuring Minikube/Kubernetes to Use a Custom Docker Account
- Lab 9. Accessing the Kubernetes API
- Lab 10. Working with Kubernetes Workloads
- Lab 11. Scheduling and Node Management
- Lab 12. Accessing Applications
- Lab 13. Using Persistent Storage
- Lab 14. Getting Started with Helm
- Lab 15. Build CI Pipeline with Jenkins