Kubernetes Básico
Mergulhe no futuro da infraestrutura
Descrição do livro
O Kubernetes veio para ficar. Em apenas cinco anos, esse orquestrador de contêineres mudou radicalmente o modo como os desenvolvedores e o pessoal de operações fazem o desenvolvimento, a implantação e a manutenção de aplicações na nuvem. A edição atualizada deste livro popular explica como o Kubernetes pode ajudar sua empresa a atingir novos patamares de velocidade, agilidade, confiabilidade e eficiência – não importa se os sistemas distribuídos são uma novidade para você ou se você já vem implantando aplicações nativas de nuvem há algum tempo.
Brendan Burns, Joe Beda e Kelsey Hightower – todos com participação ativa na conceitualização e no desenvolvimento do Kubernetes desde o princípio – mostram como esse sistema está presente no ciclo de vida de uma aplicação distribuída. Você aprenderá a usar ferramentas e APIs para automatizar sistemas distribuídos escaláveis para serviços online, aplicações de machine learning ou até mesmo para um cluster de computadores Raspberry Pi.
Crie e execute um cluster simples para saber como o Kubernetes funciona.
Explore os detalhes da implantação de uma aplicação usando o Kubernetes, Pods, Services, Ingress e ReplicaSets.
Faça a integração de armazenagem em microsserviços conteinerizados no Kubernetes.
Conheça os objetos especializados do Kubernetes, como DaemonSets, Jobs, ConfigMaps e secrets.
Veja exemplos práticos de como desenvolver e implantar aplicações do mundo real no Kubernetes.
Sumário
- Prefácio
- Capítulo 1 Introdução
- Velocidade
- Importância da imutabilidade
- Configuração declarativa
- Sistemas autocorretivos
- Escalando seu serviço e suas equipes
- Desacoplamento
- Como escalar facilmente as aplicações e os clusters
- Como escalar equipes de desenvolvimento com microsserviços
- Separação de responsabilidades para consistência e escalabilidade
- Abstraindo a infraestrutura
- Eficiência
- Resumo
- Velocidade
- Capítulo 2 Criando e executando contêineres
- Imagens de contêiner
- Formato de imagem Docker
- Construindo imagens de aplicações com o Docker
- Dockerfiles
- Otimizando os tamanhos das imagens
- Segurança da imagem
- Construções de imagens em várias etapas
- Armazenando imagens em um registro remoto
- Runtime de contêineres Docker
- Executando contêineres com o Docker
- Explorando a aplicação kuard
- Limitando o uso de recursos
- Limpeza
- Resumo
- Imagens de contêiner
- Capítulo 3 Implantação de um cluster Kubernetes
- Instalando o Kubernetes em um provedor de nuvem pública
- Google Kubernetes Engine
- Instalando o Kubernetes com o Azure Kubernetes Service
- Instalando o Kubernetes no Amazon Web Services
- Instalando o Kubernetes localmente com o minikube
- Executando o Kubernetes no Docker
- Executando o Kubernetes no Raspberry Pi
- Cliente Kubernetes
- Verificando o status do cluster
- Listando os nós de trabalho no Kubernetes
- Componentes de um cluster
- Kubernetes proxy
- Kubernetes DNS
- Kubernetes UI
- Resumo
- Instalando o Kubernetes em um provedor de nuvem pública
- Capítulo 4 Comandos comuns do kubectl
- Namespaces
- Contextos
- Visualizando objetos da API do Kubernetes
- Criando, atualizando e removendo objetos Kubernetes
- Usando rótulos e anotações em objetos
- Comandos de depuração
- Preenchimento automático de comandos
- Alternativas para visualizar seu cluster
- Resumo
- Capítulo 5 Pods
- Pods no Kubernetes
- Raciocinando com Pods
- Manifesto do Pod
- Criando um Pod
- Criando um manifesto de Pod
- Executando Pods
- Listando Pods
- Detalhes sobre os Pods
- Removendo um Pod
- Acessando seu Pod
- Usando encaminhamento de portas
- Obtendo mais informações com logs
- Executando comandos em seu contêiner com exec
- Copiando arquivos de e para os contêineres
- Verificações de sanidade
- Liveness probe
- Readiness Probe
- Tipos de verificação de sanidade
- Gerenciamento de recursos
- Requisições de recursos: mínimo de recursos necessário
- Restringindo o uso de recursos com os limites
- Persistência de dados com volumes
- Usando volumes com Pods
- Maneiras diferentes de usar volumes com Pods
- Persistência de dados usando discos remotos
- Reunindo tudo
- Resumo
- Capítulo 6 Rótulos e anotações
- Rótulos
- Aplicando rótulos
- Modificando rótulos
- Seletores de rótulo
- Seletores de rótulo em objetos da API
- Rótulos na arquitetura do Kubernetes
- Anotações
- Definindo as anotações
- Limpeza
- Resumo
- Rótulos
- Capítulo 7 Descoberta de serviços
- O que é a descoberta de serviços?
- Objeto Service
- DNS para serviços
- Verificações de readiness
- Olhando para além do cluster
- Integração com a nuvem
- Detalhes mais sofisticados
- Endpoints
- Descoberta de serviços manual
- kube-proxy e IPs de cluster
- Variáveis de ambiente do IP do cluster
- Conectando-se com outros ambientes
- Limpeza
- Resumo
- Capítulo 8 Balanceamento de carga HTTP com Ingress
- Especificação de Ingress versus controladores de Ingress
- Instalando o Contour
- Configurando o DNS
- Configurando um arquivo hosts local
- Usando o Ingress
- Uso mais simples possível
- Usando nomes de host
- Usando paths
- Limpeza
- Tópicos avançados e armadilhas relacionados ao Ingress
- Executando vários controladores de Ingress
- Vários objetos Ingress
- Ingress e namespaces
- Reescrita de paths
- Servindo TLS
- Implementações alternativas de Ingress
- Futuro do Ingress
- Resumo
- Capítulo 9 ReplicaSets
- Laços de reconciliação
- Relacionando Pods e ReplicaSets
- Adotando contêineres existentes
- Deixando os contêineres em quarentena
- Design com ReplicaSets
- Especificação de um ReplicaSet
- Templates de Pod
- Rótulos
- Criando um ReplicaSet
- Inspecionando um ReplicaSet
- Encontrando um ReplicaSet a partir de um Pod
- Encontrando um conjunto de Pods para um ReplicaSet
- Escalando os ReplicaSets
- Como escalar de forma imperativa com kubectl scale
- Como escalar de forma declarativa com kubectl apply
- Escalando automaticamente um ReplicaSet
- Removendo ReplicaSets
- Resumo
- Capítulo 10 Deployments
- Seu primeiro deployment
- Funcionamento interno de um deployment
- Criando deployments
- Gerenciando deployments
- Atualizando deployments
- Escalando um deployment
- Atualizando uma imagem de contêiner
- Histórico de rollouts
- Estratégias de deployment
- Estratégia Recriate
- Estratégia RollingUpdate
- Rollouts mais lentos para garantir a saúde do serviço
- Removendo um deployment
- Monitorando um deployment
- Resumo
- Seu primeiro deployment
- Capítulo 11 DaemonSets
- Escalonador de DaemonSets
- Criando DaemonSets
- Limitando os DaemonSets a nós específicos
- Adicionando rótulos em nós
- Seletores de nós
- Atualizando um DaemonSet
- Atualização contínua de um DaemonSet
- Removendo um DaemonSet
- Resumo
- Capítulo 12 Jobs
- Objeto Job
- Padrões para jobs
- Job one shot
- Paralelismo
- Fila de tarefas
- CronJobs
- Resumo
- Capítulo 13 ConfigMaps e secrets
- ConfigMaps
- Criando ConfigMaps
- Usando um ConfigMap
- Secrets
- Criando secrets
- Consumindo secrets
- Registros privados do Docker
- Restrições quanto à nomenclatura
- Gerenciando ConfigMaps e secrets
- Listar
- Criar
- Atualizar
- Resumo
- ConfigMaps
- Capítulo 14 Controle de acesso baseado em perfis no Kubernetes
- Role-Based Access Control
- Identidade no Kubernetes
- Compreendendo os perfis e as vinculações de perfis
- Perfis e vinculações de perfis no Kubernetes
- Técnicas para gerenciar o RBAC
- Testando a autorização com o can-i
- Gerenciando o RBAC no sistema de controle de versões
- Tópicos avançados
- Agregando ClusterRoles
- Usando grupos para vinculações
- Resumo
- Role-Based Access Control
- Capítulo 15 Integrando soluções de armazenagem no Kubernetes
- Importando serviços externos
- Serviços sem seletores
- Limitações aos serviços externos: verificação de sanidade
- Executando singletons confiáveis
- Executando um singleton MySQL
- Provisionamento dinâmico de volumes
- Armazenagem nativa do Kubernetes com StatefulSets
- Propriedades dos StatefulSets
- Replicando o MongoDB manualmente com StatefulSets
- Automatizando a criação do cluster MongoDB
- Volumes persistentes e StatefulSets
- Observação final: os liveness probes
- Resumo
- Importando serviços externos
- Capítulo 16 Estendendo o Kubernetes
- O que significa estender o Kubernetes
- Pontos de extensão
- Padrões para recursos personalizados
- Somente dados
- Compiladores
- Operadores
- Por onde começar
- Resumo
- Capítulo 17 Implantando aplicações no mundo real
- Jupyter
- Parse
- Pré-requisitos
- Construindo o parse-server
- Implantando o parse-server
- Testando o Parse
- Ghost
- Configurando o Ghost
- Redis
- Configurando o Redis
- Criando um serviço Redis
- Implantação do Redis
- Testando o nosso cluster Redis
- Resumo
- Capítulo 18 Organizando a sua aplicação
- Princípios que devem ser seguidos
- Sistema de arquivos como fonte da verdade
- A função da revisão de código
- Flags e guardas para as funcionalidades
- Gerenciando sua aplicação no sistema de controle de versões
- Layout do sistema de arquivos
- Gerenciando versões periódicas
- Estruturando sua aplicação para desenvolvimento, testes e implantação
- Metas
- Progressão de uma release
- Parametrizando sua aplicação com templates
- Parametrizando com o Helm e com templates
- Layout do sistema de arquivos para parametrização
- Implantando sua aplicação pelo mundo
- Arquiteturas para implantação no mundo todo
- Implementando um deployment pelo mundo
- Painéis de controle e monitoração de implantações pelo mundo
- Resumo
- Princípios que devem ser seguidos
- Apêndice A Construindo um cluster Kubernetes com Raspberry Pis
Sobre os autores
Brendan Burns é um dos criadores do Kubernetes e Distinguished Engineer na Microsoft Azure, onde lidera equipes com foco em DevOps, Open Source e Microsserviços.… Ver perfil completo ▶
Joe Beda é um dos criadores do Kubernetes e engenheiro-líder na VMware. Joe é cofundador da Heptio e atuou como CTO na empresa até ela ter sido adquirida pela VMware. Além disso, ajudou a direcionar a estratégia do Kubernetes na VMware.… Ver perfil completo ▶
Kelsey Hightower, Principal Developer Advocate do Google Cloud Platform, assumiu inúmero cargos durante sua carreira em tecnologia e gosta de posições de liderança com foco em lançamento de software.… Ver perfil completo ▶






