Programa do Curso
Dia 1 – Contêineres e Gerenciamento de Imagens
Introdução às Plataformas de Contêiner
- Implantação tradicional de aplicações em comparação com a implantação baseada em contêiner
- Contêineres e máquinas virtuais
- Rodapés de contêiner e motores de contêiner
- A função do Docker, Kubernetes e OpenShift
- Arquiteturas comuns de plataformas de contêiner
- Fluxos de trabalho de desenvolvimento, teste e produção
Trabalhando com Contêineres
- Executar e gerenciar contêineres
- Ciclo de vida do contêiner
- Iniciar, parar e remover contêineres
- Executar comandos dentro dos contêineres
- Variáveis de ambiente
- Mapeamento de portas
- Logs do contêiner
- Uso de recursos e inspeção de processos
Criando Imagens de Contêiner
- Estrutura da imagem e camadas
- Criar Dockerfiles e Containerfiles
- Selecionar imagens base
- Adicionar dependências da aplicação
- Configurar pontos de entrada e comandos
- Caching de imagem
- Reduzir o tamanho da imagem
- Criar imagens reproduzíveis
Registros de Contêiner
- Registros públicos e privados
- Dar marca e versionar imagens
- Enviar (push) e recuperar (pull) imagens
- Autenticação de imagem
- Retenção e limpeza de imagens
- Considerações básicas de segurança da imagem
Rede e Armazenamento de Contêineres
- Conceitos de rede de contêiner
- Rede bridge
- Exposição de portas
- Comunicação entre contêineres
- Monta-bind e volumes
- Dados persistentes do contêiner
- Considerações sobre backup
Exercícios Práticos
- Executar e inspecionar contêineres
- Criar uma imagem de aplicação
- Configurar portas e variáveis de ambiente
- Publicar uma imagem em um registro
- Armazenar dados persistentes fora de um contêiner
Dia 2 – Arquitetura do Kubernetes e Cargas de Trabalho
Fundamentos do Kubernetes
- O propósito da orquestração de contêiner
- Arquitetura do Kubernetes
- Componentes do plano de controle
- Nós workers
- Servidor de API
- Agendador (Scheduler)
- Controladores
- Estado do cluster e estado desejado
- Comunicar-se com o cluster usando o kubectl
Recursos do Kubernetes
- Pods
- ReplicaSets
- Deployments
- Namespaces
- Rótulos e anotações
- Selectores
- Definições de recursos declarativas
- Manuais (manifests) em YAML
Implantando Aplicações
- Criar e gerenciar Deployments
- Escalar cargas de trabalho
- Atualizar imagens de contêiner
- Atualizações graduais (rolling updates)
- Rollbacks
- Histórico de deployment
- Reiniciar cargas de trabalho
- Gerenciar réplicas de aplicação
Configuração da Aplicação
- ConfigMaps
- Secrets
- Variáveis de ambiente
- Arquivos de configuração
- Separação do código da aplicação da configuração
- Gerenciar configurações específicas do ambiente
Gestão de Recursos
- Solicitações de CPU e memória
- Limites de CPU e memória
- Cotas de recursos
- Faixas de limite (limit ranges)
- Implicações no agendamento
- Diagnosticar falhas relacionadas a recursos
Exercícios Práticos
- Implantar uma aplicação em contêiner
- Criar e atualizar manifests do Kubernetes
- Escalar uma aplicação
- Realizar uma atualização gradual e um rollback
- Configurar a aplicação usando ConfigMaps e Secrets
- Atribuir solicitações e limites de recurso
Dia 3 – Rede, Armazenamento e Segurança no Kubernetes
Rede do Kubernetes
- Modelo de rede do cluster
- Comunicação entre pods
- Descoberta de serviço
- DNS dentro do cluster
- Serviços ClusterIP
- Serviços NodePort
- Serviços LoadBalancer
- Conceitos de Ingress
- Padrões de exposição de aplicações
Políticas de Rede
- Controlar o tráfego entre cargas de trabalho
- Regras de ingress e egress
- Controle de tráfego baseado em namespace
- Testar conectividade de rede
- Solucionar problemas de comunicação de serviço
Armazenamento Persistente
- Armazenamento efêmero e persistente
- Volumes
- PersistentVolumes
- PersistentVolumeClaims
- StorageClasses
- Provisionamento dinâmico
- Modos de acesso
- Políticas de retenção
- Armazenamento para aplicações com estado
Controle de Acesso no Kubernetes
- \r
- Conceitos de autenticação e autorização
- Controle de Acesso Baseado em Funções (RBAC)
- Roles e ClusterRoles
- RoleBindings e ClusterRoleBindings
- Contas de serviço
- Acesso de menor privilégio
- Inspecionar permissões efetivas
Segurança de Cargas de Trabalho
- Contextos de segurança
- Executar contêineres como não-root
- Capacidades do Linux
- Sistemas de arquivos somente leitura
- Manipulação de segredos (secrets)
- Procedência da imagem
- Riscos comuns de configuração
Exercícios Práticos
- Expor uma aplicação usando serviços do Kubernetes
- Configurar ingress
- Restringir tráfego usando uma política de rede
- Fornecer armazenamento persistente
- Configurar permissões RBAC
- Executar uma carga de trabalho com um contexto de segurança apropriado
Dia 4 – Trabalhando com Ambientes OpenShift
Introdução ao OpenShift
- O OpenShift como uma plataforma de aplicações baseada em Kubernetes
- Recursos do Kubernetes em um ambiente OpenShift
- Arquitetura do cluster OpenShift
- Projetos e namespaces
- Usuários da plataforma e contas de serviço
- Trabalhar com o console web
- Trabalhar com a CLI do OpenShift
Gerenciando Projetos e Acesso
- Criar e gerenciar projetos
- Atribuir permissões ao usuário
- Roles em nível de projeto
- Acesso administrativo
- Cotas de recurso
- Faixas de limite (limit ranges)
- Contas de serviço
- Revisar recursos do projeto
Implantando Aplicações
- Implantar imagens de contêiner
- Criar cargas de trabalho de aplicações
- Gerenciar deployments
- Escalar aplicações
- Atualizar versões da aplicação
- Rollbacks
- Gerenciar configuração da aplicação
- Trabalhar com segredos
Exposição de Aplicações
- Serviços no OpenShift
- Rotas (Routes)
- Conceitos de TLS
- Acesso interno e externo à aplicação
- Nomes de host e certificados
- Solucionar problemas de rota e serviço
Armazenamento no OpenShift
- Persistent Volume Claims
- StorageClasses
- Anexar armazenamento a cargas de trabalho
- Cargas de trabalho com estado (Stateful)
- Permissões de acesso ao armazenamento
- Solucionar problemas de montagem de volumes
Agendamento e Gestão de Nós
- Rótulos e selectores
- Selectores de nós (node selectors)
- Taints e tolerações
- Conceitos de afinidade e anti-afinidade
- Alocação de cargas de trabalho
- Colocar em isolamento (cordoning) e drenar nós
- Considerações sobre manutenção dos nós
Exercícios Práticos
- Acessar um ambiente OpenShift
- Criar e configurar um projeto
- Implantar e expor uma aplicação
- Configurar acesso de usuário e conta de serviço
- Anexar armazenamento persistente
- Escalar e atualizar uma carga de trabalho em execução
Dia 5 – Operações, Monitoramento e Solução de Problemas
Monitoramento da Plataforma
- Monitorar a saúde do cluster e da aplicação
- Métricas de recurso
- Saúde dos nós
- Status da carga de trabalho
- Capacidade e utilização de recursos
- Identificar limitações de desempenho
Logs e Eventos
- Logs do contêiner
- Logs do pod
- Logs anteriores do contêiner
- Eventos do Kubernetes
- Mensagens da aplicação e da plataforma
- Filtrar e interpretar dados operacionais
Verificações de Saúde (Health Checks)
- Sondas de inicialização (startup probes)
- Sondas de prontidão (readiness probes)
- Sondas de vivacidade (liveness probes)
- Projetar endpoints de saúde úteis
- Diagnosticar falhas nas sondas
- Evitar reinicializações desnecessárias da aplicação
Solucionando Problemas em Cargas de Trabalho
- Pods pendentes
- Falhas na extração da imagem (image pull failures)
- Loops de falha (crash loops)
- Variáveis de ambiente mal configuradas
- Montagens falhas
- Recursos insuficientes
- Erros de permissão
- Problemas de conectividade de serviço e rota
- Problemas de DNS
- Falhas na inicialização da aplicação
Segurança Operacional
- Revisar permissões
- Uso de contas de serviço
- Manipulação segura de credenciais
- Práticas de segurança de imagem
- Isolamento de rede
- Auditoria de acesso à plataforma
- Aplicar o princípio do menor privilégio
Manutenção e Gestão do Ciclo de Vida
- Verificações rotineiras da plataforma
- Manutenção dos nós
- Considerações sobre backup da aplicação
- Backup de configuração
- Planejamento de atualização
- Gestão de mudanças
- Teste de atualizações
- Planejamento de rollback
- Conceitos de recuperação de desastres
Oficina Prática Final
Os participantes completam um cenário operacional ponta a ponta:
- Criar e dar marca a uma imagem de contêiner.
- Publicar a imagem em um registro.
- Implantar a aplicação no Kubernetes ou OpenShift.
- Configurar configurações da aplicação e credenciais.
- Expor a aplicação.
- Anexar armazenamento persistente.
- Configurar permissões de acesso.
- Adicionar verificações de saúde.
- Escalar e atualizar a aplicação.
- Diagnosticar e resolver uma falha introduzida.
Formato do Curso
- Aulas interativas e discussões técnicas.
- Demonstrações pelo instrutor.
- Exercícios práticos extensivos.
- Workshops de administração e solução de problemas baseados em cenários.
- Trabalho prático em ambientes de contêiner, Kubernetes e OpenShift.
Opções de Personalização do Curso
- O curso pode ser adaptado à infraestrutura existente dos participantes, ao provedor de nuvem e às ferramentas de contêiner utilizadas.
- O equilíbrio entre tópicos de Docker, Kubernetes e OpenShift pode ser ajustado de acordo com a experiência da equipe.
- Os exercícios práticos podem ser personalizados para as aplicações da organização, processos de implantação e requisitos operacionais.
Aviso de Marca Registrada
OpenShift é uma marca registrada da Red Hat, Inc. Este treinamento desenvolvido independentemente não está afiliado, endossado ou autorizado pela Red Hat.
Requisitos
Os participantes devem ter:
- Experiência no uso da linha de comando do Linux.
- Conhecimento básico de administração de sistemas ou DevOps.
- Compreensão geral dos conceitos de rede.
- Familiaridade com processos de implantação de software.
Experiência anterior com Docker, Kubernetes ou OpenShift é útil, mas não obrigatória.
Testemunhos de Clientes (7)
Leia as explicações e ele simplificou muito o entendimento
Eric Van Wyk
Curso - Docker, Kubernetes and OpenShift 3 for Administrators
Máquina Traduzida
Os laboratórios foram os melhores. Muito práticos e fornecem experiência prática. Pessoalmente, acredito que seja o meio mais eficaz para realmente entender o curso e aplicar os conceitos abordados.
Hishaam Johnstone
Curso - Docker, Kubernetes and OpenShift 3 for Administrators
Máquina Traduzida
Amei a disposição para ajudar e explicar mais quando havia incertezas
Letlotlo Miffi
Curso - Docker, Kubernetes and OpenShift 3 for Administrators
Máquina Traduzida
Adriano estudou o assunto profundamente, que é o estilo que eu mais prefiro, ou seja: menos sobre os comandos e mais sobre o mecanismo por trás deles. Os cenários discutidos foram bem apoiados por exemplos práticos, o que ajudou muito a entender o material apresentado.
Mariusz BANASZCZYK - Sopra Steria
Curso - Docker, Kubernetes and OpenShift for Administrators
Máquina Traduzida
Conhecimento aprofundado de Adriano. Explicação dos conceitos básicos
Tomasz Szalankiewicz - LPP SA
Curso - Docker, Kubernetes and OpenShift for Administrators
Máquina Traduzida
Gostei geralmente do apresentador.
Josif Kovacevic - ANZ
Curso - Docker, Kubernetes and OpenShift for Administrators
Máquina Traduzida
Adrian clearly knows and enjoys this technology.
Tom Edginton - National Oceanography Centre
Curso - Docker, Kubernetes and OpenShift for Administrators
Máquina Traduzida