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.