Skip to main content

Command Palette

Search for a command to run...

Guia Prático de Kubernetes para DevOps

Construindo Aplicações Cloud Native com Kubernetes: Um Passo a Passo para o Sucesso.

Updated
5 min read
Guia Prático de Kubernetes para DevOps

Guia Prático de Kubernetes para DevOps

Introdução

Kubernetes é uma plataforma open-source poderosa para orquestrar containers. Pense nela como o maestro de uma orquestra, coordenando a execução de diversos containers (microserviços) de forma eficiente e escalável.

Com a arquitetura de microsserviços crescendo em popularidade, o Kubernetes se tornou essencial para DevOps que buscam:

  • Escalabilidade: Aumente ou diminua a capacidade da sua aplicação com facilidade, atendendo às demandas do usuário.

  • Portabilidade: Execute sua aplicação em qualquer ambiente, seja local, na nuvem ou híbrido.

  • Resiliência: Garanta alta disponibilidade com recuperação automática de falhas.

  • Automação: Simplifique processos de deploy e gerenciamento de infraestrutura.

Este guia prático irá apresentar os conceitos fundamentais do Kubernetes e prepará-lo para explorar suas capacidades avançadas.

Kubernetes Vanilla vs. Distribuições e Serviços Gerenciados

Este guia foca no Kubernetes de código aberto, o "Kubernetes Vanilla". Existem também distribuições como OpenShift e Rancher, que adicionam funcionalidades extras, e serviços gerenciados como GKE (Google Kubernetes Engine), EKS (Amazon Elastic Kubernetes Service) e AKS (Azure Kubernetes Service), que simplificam o gerenciamento da infraestrutura. O Kubernetes Vanilla oferece maior flexibilidade, porém requer mais conhecimento e experiência para operar.

Capítulo 1: Deployments

Um deployment é um objeto Kubernetes que define como uma aplicação será executada. Ele especifica:

  • Pod Specification: Define os containers que compõem a aplicação e seus requisitos de recursos.

  • Replica Count: Define quantas instâncias (pods) da aplicação devem ser executadas.

  • Deployment Strategy: Define como as atualizações serão aplicadas, permitindo rollbacks e zero downtime.

Gerenciando Deployments com kubectl

O kubectl é a ferramenta de linha de comando para interagir com o Kubernetes. Você pode criar, atualizar e inspecionar deployments com comandos como:

  • kubectl apply -f deployment.yaml: Cria ou atualiza um deployment a partir de um arquivo YAML.

  • kubectl get deployments: Lista os deployments existentes.

  • kubectl describe deployment: Exibe detalhes de um deployment específico.

  • kubectl scale deployment: Ajusta o número de réplicas de um deployment.

  • kubectl rollout: Gerencia o processo de atualização de um deployment, incluindo rollbacks e histórico de revisões.

Exemplo de código YAML para deployment e comandos kubectl

Este código YAML define um deployment básico chamado "meu-app" com uma réplica de um pod executando a imagem "nginx:latest".

deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: meu-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: meu-app
  template:
    metadata:
      labels:
        app: meu-app
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Comandos kubectl para gerenciar o deployment:

kubectl apply -f deployment.yaml

kubectl get deployments

kubectl describe deployment meu-app

kubectl scale deployment meu-app --replicas=3

kubectl rollout undo deployment meu-app

kubectl rollout history deployment meu-app

Capítulo 2: Kubernetes Networking

O Kubernetes fornece uma rede virtual para seus pods, permitindo que eles se comuniquem entre si e com o mundo externo.

Princípios Básicos:

  • IP Único por Pod: Cada pod recebe um IP único, facilitando o roteamento de tráfego.

  • DNS: O Kubernetes gerencia um servidor DNS para resolução de nomes de serviços e pods.

  • Network Namespace: Containers dentro do mesmo pod compartilham o mesmo namespace de rede, permitindo comunicação via localhost.

Serviços

Serviços expõem pods para outros pods ou para o mundo externo, independentemente do IP dos pods. Existem diferentes tipos de serviços:

  • ClusterIP: Exposição interna dentro do cluster.

  • NodePort: Exposição externa através de um port específico em cada nó do cluster.

  • LoadBalancer: Exposição externa através de um balanceador de carga.

  • ExternalName: Alias para um serviço externo ao cluster.

Ingresse

Ingresses são objetos que definem regras de roteamento HTTP para serviços, permitindo funcionalidades como balanceamento de carga, SSL termination e roteamento baseado em nome de host e caminho.

Capítulo 3: Kubernetes Volumes

Volumes são diretórios que armazenam dados para pods. Eles permitem que os dados persistam mesmo após a reinicialização de um pod.

Tipos de Volumes:

  • emptyDir: Volume temporário que é apagado quando o pod é excluído.

  • hostPath: Volume que mapeia um diretório do nó do cluster.

  • Persistent Volumes (PVs) e Persistent Volume Claims (PVCs): Volumes persistentes que podem ser provisionados dinamicamente e desacoplados dos pods.

  • Volumes em nuvem: Volumes que utilizam serviços de armazenamento em nuvem como AWS EBS e GCE Persistent Disk.

Modos de Acesso a Volumes:

  • ReadWriteOnce (RWO): Somente um nó pode acessar o volume para leitura e escrita.

  • ReadOnlyMany (ROX): Vários nós podem acessar o volume somente para leitura.

  • ReadWriteMany (RWX): Vários nós podem acessar o volume para leitura e escrita.

Capítulo 4: Kubernetes Security

A segurança é crucial em qualquer ambiente Kubernetes.

Secrets:

Secrets armazenam informações sensíveis, como senhas e tokens, de forma segura. Eles podem ser usados como variáveis de ambiente ou montados como arquivos em pods.

Service Accounts:

Service accounts são identidades para processos que rodam em pods, permitindo controle de acesso aos recursos do cluster.

RBAC (Role-Based Access Control):

RBAC controla o acesso aos recursos do cluster com base em funções e permissões.

Audit Log:

O audit log registra as solicitações à API do Kubernetes, permitindo auditoria e rastreamento de atividades.

Próximos Passos

Este guia prático forneceu uma base sólida para o seu aprendizado em Kubernetes. Explore a documentação oficial do Kubernetes e cursos online para aprofundar seus conhecimentos.

Lembre-se, o Kubernetes é uma ferramenta poderosa que pode transformar a forma como você gerencia suas aplicações em container. Com dedicação e prática, você poderá dominar esta tecnologia e elevar o seu nível de expertise em DevOps.