CI/CD One
Integração e entrega contínuas, com GitHub Actions, GitLab CI, CircleCI e Jenkins
Kubernetes One
Do Primeiro Pod ao Cluster em Produção
Kubernetes do zero, dentro de uma empresa de Goiânia que faz a plataforma de inscrição e resultado de concursos do Centro-Oeste: 23 clientes em 41 servidores, um resultado publicado às 14h que derrubou o site por uma hora e cinquenta e dois minutos enquanto quarenta servidores pagos esperavam ociosos, e um cluster Kubernetes que um consultor deixou ligado, rodando um único pod que só diz olá. Pods, Deployments, Services, Gateway API, ConfigMaps, Secrets, volumes, probes, recursos e cotas, escala automática, Helm, GitOps com Argo CD, RBAC, observabilidade e operação — até o dia em que 420 mil candidatos apertam F5 ao mesmo tempo.
R$ 15,90
R$ 24,00
Promoção
Atenção: o idioma desta edição é português.
Edição Brasil
Menos teoria vazia.
Mais código que funciona.
Nada de exemplo solto com foo e bar.
Todo trecho pertence ao mesmo projeto, que cresce capítulo a capítulo —
e os erros aparecem como aparecem na sua tela, para serem lidos linha por linha.
apiVersion: v1kind: Podmetadata: name: ola labels: app: olaspec: containers: - name: ola image: nginx:1.29
kubectl get nodesgke-pequi-pool-7hqd Ready 23d v1.35.4-gke.1200
Um sistema só, do primeiro arquivo ao deploy
README.md
A plataforma de inscrição e resultado de concursos, de 41 servidores a um cluster que aguenta o pico das 14h.
Kubernetes do zero, do primeiro pod ao cluster que aguenta o F5 de 420 mil candidatos.
- Um projeto só: 23 clientes, 41 servidores e o resultado de um concurso às 14h
- Cada peça do cluster desenhada antes do primeiro kubectl: nós, pods, serviços, rede
- Deployments, Gateway API, probes, cotas e escala automática para o pico
- Helm, GitOps com Argo CD e RBAC para entregar a muitos clientes com segurança
- Diagnóstico, custo e o ensaio de falha antes do dia em que todos apertam F5
Leia uma prévia gratuita de Kubernetes One
Esta amostra contém os primeiros capítulos. O PDF completo continua protegido para compradores.
45 capítulos em 11 partes
Abra uma parte para ver os capítulos — e a frase que abre cada um.
parte 01 O painel das 14h03Um servidor em chamas, quarenta ociosos, um cluster que só diz olá, e a ideia de tratar muitas máquinas como uma só. 4 cap.
-
01
O painel das 14h03Uma planilha com cinco cores, uma tarde reconstruída minuto a minuto, cento e trinta núcleos parados ao lado de oito em chamas — e um laço de doze linhas que se recusa a deixar um container morto.
-
02
De caixas a um clusterUm arquivo do Docker Compose que só sabe falar de uma máquina, dois containers que dividem o mesmo localhost, quatro orquestradores numa tabela — e um sócio que prefere o que já conhece.
-
03
O cluster do FabrícioUm README de quatro linhas, um arquivo de acesso fixado num grupo de conversa, três máquinas de vinte e três dias num cluster de seiscentos e noventa e três — e um olá que ninguém reiniciou e mesmo assim renasceu.
-
04
Um cluster na sua máquinaTrês servidores dentro de um notebook, um cérebro que finalmente aparece, dois contextos com quase o mesmo nome — e cinco minutos entre uma máquina sumir e o cluster desistir dela.
parte 02 A API e os objetosO kubectl visto de perto, o manifesto que descreve o estado desejado, o pod e os seus defeitos de primeiro dia, e as etiquetas e divisões que deixam um cluster responder a qualquer pergunta. 4 cap.
-
05
O kubectl e a APIUm comando que, olhado de perto, é só um pedido HTTP; um endereço que devolve o cluster em JSON; uma lista de setenta tipos de objeto — e a planilha do Wander, refeita numa linha e atualizada sozinha.
-
06
O manifestoCento e quarenta linhas que o cluster devolve para nove que o Fabrício escreveu, um comando que cria e outro que garante, um campo com o nome em português — e uma mudança feita à mão que o arquivo desfaz sem pedir licença.
-
07
PodsUm servidor em Go que faz o papel da API, uma etiqueta de versão trocada por dois dígitos, um programa que morre por falta de um endereço — e um contador de reinícios que sobe cada vez mais devagar.
-
08
Rótulos, seletores e namespacesTrês clientes num cluster de estudo, etiquetas que respondem a perguntas que ninguém fez ainda, um namespace que apaga tudo o que tem dentro — e a pergunta da estagiária que fez o Wander levantar da cadeira.
parte 03 Cargas de trabalhoO pod que volta sozinho, a troca de versão sem sair do ar, as tarefas que precisam terminar e os programas que precisam estar em toda máquina ou ter nome e disco próprios. 5 cap.
-
09
O pod que voltaUm objeto que guarda um molde de pod e um número, um pod criado à mão que é adotado e logo apagado, uma troca de imagem que não troca nada — e o motivo de quase ninguém escrever um ReplicaSet.
-
10
DeploymentsUma demonstração marcada para quinta, dois ReplicaSets trocando de lugar um pod por vez, um histórico com o motivo de cada versão — e um comando que volta para a de ontem em onze segundos.
-
11
O rollout que travaDuas versões envenenadas preparadas pelo Wander, uma troca que para no meio e por isso salva a tarde, outra que termina com sucesso e derruba tudo trinta segundos depois — e o prazo de dez minutos que ninguém tinha lido.
-
12
Jobs e CronJobsTrinta e oito mil cartões de confirmação que levavam seis horas e derrubavam o site, oito pods dividindo o trabalho por número, um candidato sem nome no lote dezessete — e um relatório das seis da manhã que chegou às três.
-
13
DaemonSets e StatefulSetsUm pod em cada máquina, inclusive na que não aceita pods, três cópias do Redis que nascem em fila e têm nome de batismo, uma chave gravada que sobrevive à morte do pod — e o banco de dados, que ficou do lado de fora.
parte 04 RedeUm endereço fixo para pods que mudam, a porta de entrada única para vinte e três clientes, HTTPS que se renova sozinho, o DNS por dentro e a parede entre um cliente e outro. 6 cap.
-
14
ServicesTrês endereços que mudam a cada recriação, um endereço que não muda e onde ninguém escuta, um nome que o cluster resolve sozinho — e uma palavra a mais num seletor que deixa o portal falando com o vazio.
-
15
NodePort e LoadBalancerUma porta de número estranho aberta em todas as máquinas, um endereço externo que fica pendente para sempre, um programa que finge ser a nuvem — e uma conta de quarenta e seis balanceadores que o Seu Divino fez numa folha de bloco.
-
16
Ingress e Gateway APIUm objeto que o Fabrício chamava de jeito profissional, o programa que o fazia funcionar aposentado em março, três tipos novos que dividem o trabalho entre quem cuida da porta e quem cuida da casa — e uma rota recusada por morar no namespace errado.
-
17
HTTPS e um domínio por clienteUm certificado para vinte clientes de uma vez, três clientes que têm domínio próprio, um robô que pede, guarda e renova sozinho — e um desafio que a Let's Encrypt foi buscar na máquina velha da prefeitura.
-
18
DNS e rede por dentroUma faixa de endereços dividida entre máquinas, uma rota que leva um pacote de um nó a outro, uma busca de CEP que faz oito perguntas antes de acertar — e um ponto no fim de um nome que corta sete delas.
-
19
NetworkPolicyUma estagiária que lê o resultado do Vereda de dentro do Anápolis em uma linha, uma parede que fecha tudo e leva o DNS junto, três portas abertas de propósito — e a cláusula do contrato, enfim, cumprida em YAML.
parte 05 Configuração e dadosA configuração fora da imagem, as senhas fora do Git, os discos que sobrevivem aos pods e o banco que ficou do lado de fora — até o primeiro cliente mudar para o cluster numa madrugada de domingo. 4 cap.
-
20
ConfigMapsVinte e três arquivos .env espalhados em vinte e três máquinas, uma chave que libera o resultado às 14h00 em ponto, um ensaio em que a chave foi virada e nada aconteceu — e a diferença entre uma variável e um arquivo.
-
21
SecretsUma senha que parece embaralhada e se lê com um comando, um commit que levou a senha do banco para o repositório, um cofre do lado de fora que o cluster consulta sozinho — e a diferença entre esconder e proteger.
-
22
Volumes e PVCsUma pasta que some com o pod e serve exatamente para isso, um pedido de disco que espera até alguém precisar dele, um disco que foi apagado junto com o pedido — e a política que o Wander escreveu em vermelho no quadro.
-
23
O banco fora do clusterUma tabela que decide onde moram os dados de 420 mil candidatos, um Service sem seletor que dá nome a uma máquina de fora, uma madrugada de domingo para mudar o primeiro cliente — e a primeira linha da planilha pintada de cinza.
parte 06 Saúde e recursosO programa dizendo se está vivo e pronto, quanto cada container pede e pode usar, o teto de cada cliente, as cópias e as máquinas que aparecem sozinhas e o lugar onde cada pod vai parar. 6 cap.
-
24
ProbesTrês perguntas que o kubelet faz a cada poucos segundos, um pod que sai da fila sem ser reiniciado, uma verificação de saúde que consultava o banco e matou as quatro cópias de uma vez — e os segundos entre receber o aviso e parar de atender.
-
25
Requests e limitsUm pod que pede sessenta e quatro núcleos e fica esperando para sempre, outro que passa do teto de memória e morre com o código 137, um processador que não falta mas é racionado — e a planilha do Wander reescrita como dois números por container.
-
26
Cotas por clienteTrês planos de contrato escritos como teto de processador e memória, um pod recusado por não dizer quanto queria, valores padrão que o cluster preenche sozinho — e um ReplicaSet que quer mais uma cópia e não pode criar.
-
27
Escalar sozinhoUm programa que mede o consumo de cada pod, uma regra que dobra as cópias a cada quinze segundos, um teste em que a carga chega de uma vez e a regra chega um minuto depois — e o número que a Dra. Heloísa pediu, ainda sem resposta.
-
28
Mais nós quando faltarUm cluster novo em três zonas de São Paulo, pods que esperam uma máquina que ainda está ligando, uma regra que impede o cluster de tirar todas as cópias de uma vez — e uma reserva de espaço ocupada por pods que não fazem nada, de propósito.
-
29
Onde o pod vai pararQuatro cópias da API na mesma zona de um datacenter de três, uma regra de 'uma por máquina' que deixou quatro pods esperando para sempre, um Job preso ao grupo de máquinas baratas — e a diferença entre pedir e exigir.
parte 07 Empacotar e entregarUma base e vinte e três camadas de diferença, os programas de terceiros com histórico de versões, o pipeline que escreve no Git e o agente dentro do cluster que aplica o que está escrito. 4 cap.
-
30
KustomizeVinte e três pastas com quase os mesmos arquivos, uma correção feita em vinte e duas e esquecida numa, uma base e um remendo por cliente — e um ConfigMap que muda de nome sozinho para obrigar os pods a perceberem.
-
31
HelmUm arquivo de instalação de oito mil linhas que alguém precisa atualizar, um gerenciador de pacotes com histórico de versões, uma variável com um erro de digitação que o modelo ignorou em silêncio — e a decisão de usar cada ferramenta para o que ela faz melhor.
-
32
O pipeline até o clusterUm commit que vira imagem com o nome do próprio commit, dois repositórios com papéis diferentes, um cliente que recebe toda versão primeiro e vinte e dois que esperam a aprovação — e a pergunta sobre quem guarda a chave da produção.
-
33
GitOps com Argo CDUm programa dentro do cluster que lê um repositório e não para de comparar, um cliente novo que é só uma pasta nova, uma mudança feita à mão às onze da noite desfeita em quatro segundos — e a migração do banco que passou a acontecer sozinha, antes de tudo.
parte 08 SegurançaQuem pode pedir o quê ao cluster, o que um container pode fazer depois de rodando, e o que entra pela porta antes de virar pod. 3 cap.
-
34
RBACUm arquivo de acesso fixado num grupo de conversa, outra vez, agora no cluster novo e com outra assinatura; papéis com verbos, ligações com nomes, uma pergunta que o cluster responde com sim ou não — e um token sem prazo que só morre quando apagado.
-
35
Pods que não são rootUm container que roda como administrador sem ninguém ter pedido, um sistema de arquivos que não aceita escrita, poderes do kernel retirados um por um — e um namespace que passou a recusar o nginx de sempre.
-
36
Imagens e admissãoUma etiqueta que aponta para outro conteúdo de um dia para o outro, quarenta e uma vulnerabilidades numa imagem de teste, uma regra de três linhas que o API server confere em cada pod — e o busybox, barrado na porta.
parte 09 ObservarO que os containers escreveram, os números ao longo do tempo, os alarmes que valem acordar alguém e a última noite de inscrições, investigada de fora para dentro. 3 cap.
-
37
LogsQuarenta cópias da API escrevendo ao mesmo tempo, um arquivo que gira a cada dez megabytes e some com o pod, um agente em cada máquina que leva tudo para fora — e um CPF completo, impresso milhares de vezes, num lugar onde não devia estar.
-
38
MétricasUm banco de números que pergunta a cada quinze segundos, três fontes que contam coisas diferentes, uma consulta que diz quantos pedidos por segundo cada cliente recebe — e um alarme escrito numa terça para uma sexta que ninguém imaginava.
-
39
Eventos e diagnósticoUm celular que toca às 22h58 da última noite de inscrições, quatro cópias que não existem e por isso não aparecem em lugar nenhum, um pull request aprovado do sofá — e o roteiro de investigação que nasceu daquela noite.
parte 10 OperarAtualizar o cluster sem que ninguém perceba, recuperar um cliente do zero com cronômetro, saber quanto custa cada um, e medir quanto o sistema aguenta antes que o dia pergunte. 4 cap.
-
40
Atualizar sem pararUm e-mail do Google avisando que o cluster vai se atualizar sozinho na véspera do resultado, uma máquina trocada de cada vez sem que nenhum candidato perceba, uma janela de domingo de madrugada — e um congelamento de três semanas com data para acabar.
-
41
Backup e desastreUma pergunta do jurídico sobre um incêndio em São Paulo, um inventário de onde mora cada coisa, um cluster recriado do zero numa manhã de sábado — e doze minutos perdidos por causa de uma permissão que só existia no cluster velho.
-
42
Quanto custa um clusterA fatura de maio linha por linha, um cluster que reserva o dobro do que usa, um programa que observa cada container e sugere números menores — e a conta de quanto custou, ao todo, um pod que diz olá.
-
43
Teste de cargaUma estimativa do pior minuto escrita numa folha de bloco, um robô que aperta F5 vinte e cinco mil vezes por segundo, uma API a 40% de processador que mesmo assim demorava três segundos — e o número que a Dra. Heloísa pedia desde março.
parte 11 Quinze de junhoQuatro falhas em envelopes fechados numa quinta à noite, e a terça em que quatrocentas e doze mil pessoas apertaram F5 às 14h00. 2 cap.
-
44
O ensaioUma quinta à noite com vinte mil F5 por segundo e quatro falhas em envelopes fechados, um plantonista que não sabe o que vem, uma zona toda esvaziada de propósito — e o DNS, de novo, no lugar errado.
-
45
Terça, quinze de junhoUm roteiro com horário para cada commit, a mesma tabela do painel às 14h03 nove meses depois, um pico maior que a estimativa e menor que o ensaio — e a última linha colorida da planilha.
Outros livros da série
CI/CD One
Integração e entrega contínuas, com GitHub Actions, GitLab CI, CircleCI e Jenkins
Cloud One
Fundamentos de nuvem, com AWS, Google Cloud, Azure e DigitalOcean
Docker One
Da minha máquina à produção, sem mistério
Git One
Versionar, voltar atrás e trabalhar em equipe sem medo
Linux One
Terminal, shell e as ferramentas que todo dev usa todo dia
SQL One
Perguntas certas para bancos de verdade
O que leitores dizem sobre Kubernetes One
Carregando avaliações deste livro…
Ver todas as avaliações deste livro →Kubernetes One
Kubernetes do zero, do primeiro pod ao cluster que aguenta o F5 de 420 mil candidatos. O projeto começa a rodar no primeiro capítulo — e não para mais.
Atenção: o idioma desta edição é português.