Introdução: Colando o Kubernetes com Bash
- Pré-requisitos
- Por que Bash?
- O que Vamos Construir
- O Ponto de Entrada: setup.sh
- Iniciando datacenter.sh
- Exercícios Práticos
Configurações de Segurança, Inicialização e Hooks de Ciclo de Vida
- Opções Globais de Set
- Lint em Seus Scripts Shell: shellcheck
- Inicialização do Script
- O Controlador Principal
- Manipulador de Erros
- Manipulador de Saída
- Juntando Tudo
- Exercícios Práticos
Códigos de Saída e Saídas Controladas
- A Função script_exit
- Convenções de Código de Saída
- Revisão de Padrões de Segurança Bash
- Script Atualizado
- Exercícios Práticos
Modo Cron e Redirecionamento de E/S
- O Que o Modo Cron Faz
- Descritores de Arquivo
- Redirecionando para o Modo Cron
- Atualizando o Manipulador de Erros
- Atualizando o Manipulador de Saída
- Registrando cron_init em main
- Script Atualizado
- Exercícios Práticos
O Padrão de Biblioteca: Organizando uma Base de Código Bash
- O Diretório lib/
- Carregando Bibliotecas em main
- Escrevendo um Arquivo de Biblioteca
- Convenções de Nomenclatura
- O Grafo de Dependências
- Duas Bibliotecas Utilitárias que Vale a Pena Conhecer
- Exercícios Práticos
Cores do Terminal e Logging
- A Biblioteca de Logging
- Inicialização de Cores
- A Função log
- verbose_print — Saída em Modo Verboso
- Atualizando o init
- Atualizando o main
- Atualizando o Manipulador de Erros
- Exercícios Práticos
Auxiliares de Validação e Verificações de Binários
- lib/script.sh
- check_binary — Detecção de Ferramenta Necessária
- check_required_binaries — Pré-condições do Sistema
- is_kind — Detecção de Modo
- check_arguments — Validação de Presença de Variável
- check_directories — Validação de Caminho
- check_files — Validação de Presença de Arquivo
- check_repos — Guarda de Presença de Repositórios
- build_path — Construção de PATH
- Usando os Auxiliares na Cadeia init
- Exercícios Práticos
Gerenciamento de Configuração
- O Arquivo de Configuração
- lib/config.sh
- get_configurations — Configuração Interativa
- Lendo a Configuração em main
- Modos de Rede Docker
- Exercícios Práticos
Bloqueio de Script: Prevenindo Execuções Concorrentes
- Por Que um Diretório, Não um Arquivo
- lock_init
- Tratamento de Bloqueios Obsoletos
- Hands-On Exercises
Análise Completa de Parâmetros
- parse_params
- script_usage — O Texto de Ajuda
- Conectando parse_params a main
- Exercícios Práticos
Modo Local e Gerenciamento do Cluster Kind
- Por Que Kind
- lib/kind.sh
- start_env — Criando um Cluster Kind
- stop_env — Parando o Cluster
- delete_env — Destruindo o Cluster
- Carregando Imagens no Kind
- Sem Troca de Ambiente Docker
- Hands-On Exercises
Operações Docker
- lib/docker.sh
- safe_docker — O Wrapper Base
- safe_docker_build — Construindo Imagens
- safe_docker_run — Executando Contêineres
- Carregando Imagens no Kind
- Operações Docker Compose
- docker_cleanup — Removendo Contêineres e Imagens Mortos
- Exercícios Práticos
Kubernetes com kubectl
- lib/kubectl.sh
- safe_kubectl — O Wrapper Base
- kubectl_install_resource_from_file
- kubectl_install_database — Configuração do PostgreSQL
- kubectl_restart — Reinicialização Progressiva
- Gerenciamento de DNS
- Reinicializando Todos os Deployments
- Exercícios Práticos
Helm: Gerenciamento de Pacotes para Kubernetes
- lib/helm.sh
- safe_helm — O Wrapper Base
- Helm Charts em k8s/
- helm_install_service — Instalador Genérico de Serviços
- helm_install_core_service — Serviços Baseados em Template
- Instalar Releases de Configuração
- Funções de Atualização — Upgrades no Local
- Traefik — O Controlador de Ingress
- Exercícios Práticos
Construindo Serviços
- O Pipeline de Build
- lib/build.sh
- build_service — A Função Central de Build
- Funções de Grupo de Serviço
- build_images_init — O Despachante de Build
- lib/install_deps.sh
- check_registry
- Exercícios Práticos
Provisionamento do Zero
- Arquitetura do Sistema
- A Sequência Completa de Provisionamento
- Passo a Passo
- Funções de Suporte
- Parâmetros do Cluster Kubernetes
- Referência de Manifestos Kubernetes
- Exercícios Práticos
- Como é o Sucesso
Operações de Recarga e Recuperação
- lib/reload_services.sh
- reload_services — Atualização Leve de Serviço
- reload_services_init — O Despachante de Recarga
- lib/reload_kubernetes.sh
- reload_all_kubernetes — Reconstrução Completa do Cluster
- Exercícios Práticos
Desmontagem e Limpeza
- Parando o Ambiente
- Excluindo o Ambiente
- Desmontagem Completa do Kubernetes
- Limpeza Docker
- O Manipulador de Saída: Versão Completa
- Juntando o Script Completo
- A Função main() Completa
- A Função init Completa
- O Ciclo de Vida Completo
- A Experiência de Desenvolvimento Que Você Construiu
- Exercícios Práticos
GitOps com ArgoCD
- lib/argocd.sh
- safe_argocd — O Wrapper Base
- helm_install_argocd — Instalando o Controller
- argocd_wait_ready — Confirmando a Inicialização
- argocd_login — Autenticando a CLI
- argocd_create_app — Registrando uma Application
- argocd_sync — Disparando um Sync
- argocd_wait_healthy — Aguardando a Conclusão do Sync
- argocd_delete_app — Removendo uma Application
- Integrando o ArgoCD ao datacenter.sh
- Uma Nota sobre o OpenShift
- Exercícios Práticos
Métricas e Dashboards com Prometheus e Grafana
- lib/monitoring.sh
- helm_install_monitoring — A Stack Completa
- monitoring_wait_ready — Confirmando a Inicialização
- monitoring_port_forward — Acesso Local
- monitoring_apply_servicemonitor — Scrape dos Seus Serviços
- monitoring_get_grafana_password — Recuperação de Credenciais
- Integrando o Monitoramento ao datacenter.sh
- O que o kube-prometheus-stack Oferece
- Exercícios Práticos
Rastreamento Distribuído com OpenTelemetry
- lib/otel.sh
- safe_otel — O Wrapper Base
- helm_install_otel_operator — Instalando o Operator
- otel_wait_ready — Confirmando que o Operator Está em Execução
- otel_apply_collector — Implantando o Collector
- otel_apply_instrumentation — Auto-Instrumentação sem Código
- otel_wait_collector_ready — Confirmando o Collector
- Grafana Tempo — O Backend de Traces
- Integrando o OTel ao datacenter.sh
- Conectando Traces, Métricas e Logs
- Exercícios Práticos
Apêndice: Referência de Comandos datacenter.sh
- setup.sh
- datacenter.sh
- Códigos de Saída
- Parâmetros Encadeáveis vs Não-Encadeáveis
- Fluxos de Trabalho Comuns
- Solução de Problemas