Sobes.tech
Middle

Kan een applicatie uit een namespace een applicatie uit een andere namespace binnen de cluster zien?

sobes.tech AI

Antwoord van AI

Ja, applicaties in verschillende namespaces kunnen elkaar binnen de cluster zien.

In Kubernetes zijn namespaces logische isolaties die helpen bij het organiseren van resources. Ze vormen geen netwerkisolatie standaard.

Interactie tussen namespaces is mogelijk via DNS-services van Kubernetes.

Een applicatie in namespace-a kan toegang krijgen tot een service genaamd my-service in namespace-b via de volledige domeinnaam (FQDN):

<servicenaam>.<namespace-naam>.svc.cluster.local

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

Het is ook mogelijk om een verkorte naam te gebruiken als DNS in het cluster correct is ingesteld, maar FQDN is altijd betrouwbaarder voor interactie tussen namespaces.

# Voorbeeld Service in namespace-b
apiVersion: v1
kind: Service
metadata:
  name: my-service # Servicenaam
  namespace: namespace-b # Namespace van de service
spec:
  selector:
    app: my-app # Selector voor de pods waar de service naartoe wijst
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
# Voorbeeld Pod in namespace-a, die toegang krijgt tot een service in namespace-b
apiVersion: v1
kind: Pod
metadata:
  name: consumer-pod
  namespace: namespace-a # Namespace van de consument-pod
spec:
  containers:
  - name: consumer-container
    image: my-consumer-image
    command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Adres van de service in een andere namespace

Het is belangrijk op te merken dat netwerkbeleid (Network Policies) gebruikt kan worden om de interactie tussen namespaces te beperken. Standaard, als er geen dergelijke beleidsregels zijn, is interactie toegestaan.

Netwerkbeleid definieert groepen pods die met elkaar kunnen communiceren, gebaseerd op hun namespaces en labels.