Sobes.tech
Middle

Como é que as aplicações em execução no Kubernetes interagem entre si?

sobes.tech IA

Resposta da IA

A interação entre aplicações no Kubernetes ocorre principalmente através de serviços de rede.

  1. Descoberta de Serviços: As aplicações não se comunicam diretamente com os pods pelos seus endereços IP, pois estes são efémeros e podem mudar ao serem recriados. Em vez disso, usam a Descoberta de Serviços, que fornece um nome DNS estável e um IP para um grupo de pods que desempenham a mesma função.

    • ClusterIP: Tipo de serviço padrão, que fornece um IP interno acessível apenas dentro do cluster.
    • NodePort: Abre uma porta estática em cada nó do cluster, redirecionando o tráfego para o serviço ClusterIP.
    • LoadBalancer: Cria um balanceador de carga externo (se o provedor de nuvem suportar).
    • ExternalName: Permite que o serviço faça referência a um nome DNS externo.
  2. DNS: O Kubernetes fornece um servidor DNS interno (por exemplo, CoreDNS), que cria automaticamente nomes DNS para os serviços. A aplicação pode aceder a outro serviço pelo nome service-name.namespace.svc.cluster.local ou por uma versão abreviada service-name.

  3. Políticas de Rede: Determinam como os grupos de pods podem interagir entre si e com pontos finais de rede externos. São usadas para isolar o tráfego de rede por motivos de segurança.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-all-ingress
      namespace: default
    spec:
      podSelector: {} # Aplica-se a todos os pods no namespace default
      policyTypes:
      - Ingress
      ingress: [] # Proíbe todo o tráfego de entrada
    
  4. Ingress: Gerencia o acesso externo aos serviços no cluster, geralmente via HTTP/HTTPS. O controlador de Ingress (por exemplo, Nginx Ingress, Traefik) encaminha o tráfego da rede externa para os serviços internos correspondentes com base nas regras definidas no recurso Ingress.

  5. Service Mesh: (Por exemplo, Istio, Linkerd) Adiciona um nível adicional de abstração e funcionalidade para a interação entre serviços. Oferece capacidades como TLS mútuo, rastreabilidade de requisições, métricas, gestão de tráfego (testes A/B, lançamentos canários) ao nível de proxies (contenores sidecar) adicionados a cada pod.

Assim, os principais mecanismos de interação são a Descoberta de Serviços via DNS e os diferentes tipos de Serviços, complementados por Políticas de Rede para segurança e Ingress/Service Mesh para uma gestão mais avançada do tráfego e da observabilidade.