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.