Sobes.tech
Middle

Uma aplicação de um espaço de nomes pode ver uma aplicação de outro espaço de nomes dentro do cluster?

sobes.tech IA

Resposta da IA

Sim, as aplicações em diferentes espaços de nomes podem ver-se entre si dentro do cluster.

No Kubernetes, os espaços de nomes são isolamentos lógicos que ajudam a organizar os recursos. Não são um isolamento de rede por padrão.

A interação entre espaços de nomes é possível através dos serviços DNS do Kubernetes.

Uma aplicação em namespace-a pode aceder a um serviço chamado my-service em namespace-b usando o seu nome de domínio completo (FQDN):

<nome-do-serviço>.<nome-do-espaco-de-nomes>.svc.cluster.local

Exemplo: my-service.namespace-b.svc.cluster.local

Também é possível usar um nome abreviado se o DNS no cluster estiver configurado corretamente, mas o FQDN é sempre mais fiável para a interação entre espaços de nomes.

# Exemplo de Serviço em namespace-b
apiVersion: v1
kind: Service
metadata:
  name: my-service # Nome do serviço
  namespace: namespace-b # Espaço de nomes do serviço
spec:
  selector:
    app: my-app # Seletor para os pods a que o serviço se dirige
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
# Exemplo de Pod em namespace-a, que acede a um serviço em namespace-b
apiVersion: v1
kind: Pod
metadata:
  name: consumer-pod
  namespace: namespace-a # Espaço de nomes do pod consumidor
spec:
  containers:
  - name: consumer-container
    image: my-consumer-image
    command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Endereço do serviço noutro espaço de nomes

É importante notar que as políticas de rede (Network Policies) podem ser usadas para limitar a interação entre espaços de nomes. Por padrão, se não houver políticas, a interação é permitida.

As políticas de rede definem grupos de pods que podem interagir entre si, com base nos seus espaços de nomes e etiquetas.