#kubernetes #devops

Estrutura Básica de Deploy no Kubernetes: Namespaces, Deployments e Ingress

TL;DR; A implantação de serviços no Kubernetes baseia-se na coordenação de três frentes arquiteturais: isolamento lógico (Namespaces e Secrets), gerenciamento declarativo de estado e rede interna (Deployments e Services), e roteamento de tráfego externo (Ingress). A união desses manifestos atende, na maioria dos cenários, aos requisitos básicos de operação de aplicações conteinerizadas.

A implantação de serviços no Kubernetes exige a definição de recursos específicos para garantir isolamento, execução e exposição da aplicação. Usualmente, uma arquitetura funcional é estabelecida coordenando três frentes principais de configuração.

1. Isolamento Lógico e Dados Sensíveis (Namespace e Secrets)

O Namespace fornece um mecanismo de escopo lógico dentro do cluster. Seu uso prático evita colisões de nomes de recursos e permite a segregação de ambientes, como homologação e produção.

Para o gerenciamento de credenciais, normalmente emprega-se o objeto Secret. Ele armazena dados confidenciais separadamente do código e dos manifestos de aplicação, isolando o estado sensível do controle de versão.

apiVersion: v1
kind: Secret
metadata:
  name: app-credentials
  namespace: producao
type: Opaque
stringData:
  APP_KEY: "sua-chave-sensivel"

2. Estado Declarativo e Descoberta de Serviço (Deployment e Service)

O Deployment é o recurso da API responsável por gerenciar o estado declarativo de Pods e ReplicaSets. Ele assegura que a quantidade especificada de réplicas da aplicação esteja em execução e gerencia os limites computacionais de CPU e memória.

Como os Pods são inerentemente efêmeros e seus endereços IP mudam dinamicamente, usualmente utiliza-se um Service para atuar como um balanceador de carga interno. Ele provê um IP e um nome DNS estáveis, roteando o tráfego para os Pods que correspondam a um seletor específico (label selector).

apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  selector:
    app: backend-api
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

3. Exposição HTTP/HTTPS (Ingress)

Segundo a documentação da API, um Ingress gerencia o roteamento de tráfego externo para os serviços internos do cluster.

Na prática, ele consolida regras de roteamento baseadas em host ou path e, normalmente, centraliza a terminação SSL/TLS. Ele atua mapeando requisições (ex: api.dominio.com) para o Service correto configurado previamente.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
spec:
  rules:
  - host: api.dominio.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: backend-service
            port: 
              number: 80


Referências