Curso Docker and Kubernetes Fundation
32 horasVisão Geral
Este Curso Docker and Kubernetes Fundation, oferece uma combinação de aprendizado teórico e laboratórios práticos, para que você tenha a oportunidade de aplicar seu conhecimento em um ambiente prático. O curso abrange as habilidades essenciais do Kubernetes e do Docker, bem como uma introdução básica à Integração Contínua.
- Você é um desenvolvedor, arquiteto ou líder de equipe técnica sem uma compreensão básica do Kubernetes e do Docker? Para atender às demandas do seu local de trabalho, você precisará ter um forte conhecimento das tecnologias Kubernetes e Docker nos ambientes de desenvolvimento, produção e preparação.
Objetivo
Após realizar este Curso Docker and Kubernetes Fundation, você será capaz de:
- Aprenda 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 em pacote e software personalizado.
- Use os ambientes CLI Docker e Kubernetes para implantar soluções em ambientes locais (Docker) e de cluster (Kubernetes).
- Saiba 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ço/balanceamento de carga.
- Mostre como outros componentes – podem ser usados para integrar serviços dentro da plataforma Kubernetes.
- Explore como o Docker e tecnologias como Jenkins podem ser usados para testar e criar contêineres continuamente com base em alterações no código-fonte.
Tópicos
- Tecnologia de contêiner Docker e Linux
- Docker em ação
- Gerenciando o estado do Docker
- Open Container Initiative e Interface do Container Runtime
- Arquitetura do Kubernetes
- Trabalhando com Kubernetes
- Carga de trabalho do Kubernetes
- Agendamento e gerenciamento de nós
- Gerenciamento de rede
- Como gerenciar o armazenamento persistente
- Trabalhando com o leme
- Registro, monitoramento e solução de problemas
- Fundamentos de Integração Contínua
Publico Alvo
- Desenvolvedores,
- Arquitetos de sistemas,
- Líderes de equipes técnicas,
- Administradores de sistemas e profissionais de DevOps que desejam entender e usar o Kubernetes em ambientes de nuvem.
Pre-Requisitos
- Proficiência com a interface de linha de comando do Linux (CLI)
- Ampla compreensão da administração do sistema Linux: sistema de arquivos Linux, rede e scripts bash.
- Conceitos e metodologias de programação de computadores. Exemplos de código completos para o curso são fornecidos nas linguagens de programação Python e Java.
Materiais
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 (1/2)
- Virtualization Qualities (2/2)
- 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
- Mesos and Marathon (contd.)
- 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
- Kubernetes Workload (contd.)
- Managing Workloads
- Imperative commands
- Imperative Object Configuration
- Declarative Object Configuration
- Configuration File Schema
- Understanding API Version
- Obtaining API Versions
- Obtaining API Versions (contd.)
- Stateless Applications
- Sample Deployment Manifest File
- Working with Deployments
- Stateful Applications
- Sample Stateful Manifest File
- Sample Stateful Manifest File (Contd.)
- Working with StatefulSet
- Jobs
- Sample Job Manifest File
- Sample Job Manifest File (Contd.)
- Working with Batch Job
- DaemonSets
- DaemonSets (contd.)
- Sample Daemon Manifest File
- Rolling Updates
- Rolling Updates (Contd.)
Scheduling and Node Management
- Kubernetes Scheduler
- Kubernetes Scheduler Overview (contd.)
- Skip Kubernetes Scheduler
- Scheduling Process
- Scheduling Process - Predicates
- Scheduling Process - Priorities
- Scheduling Algorithm
- Kubernetes Scheduling Algorithm
- Scheduling Conflicts
- Controlling Scheduling
- Label Selectors
- Label Selectors (contd.)
- Label Selectors (Contd.)
- Node Affinity and Anti-affinity
- Node Affinity Example
- Node Antiaffinity Example
- Taints and Tolerations
- Taints and Tolerations (Contd.)
- Taints and Tolerations - Example
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 Obtain 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
- Lab 16. Appendix: Deploying Stateful Services in Docker