Une application d'un espace de noms peut-elle voir une application d'un autre espace de noms dans le cluster?
sobes.tech IA
Réponse de l'IA
Oui, les applications dans différents espaces de noms peuvent se voir mutuellement au sein du cluster.
Dans Kubernetes, les espaces de noms sont des isolations logiques qui aident à organiser les ressources. Ils ne constituent pas une isolation réseau par défaut.
L'interaction entre espaces de noms est possible via les services DNS de Kubernetes.
Une application dans namespace-a peut accéder à un service nommé my-service dans namespace-b en utilisant son nom de domaine complet (FQDN) :
<nom-du-service>.<nom-de-l-espacedenoms>.svc.cluster.local
Exemple : my-service.namespace-b.svc.cluster.local
Il est également possible d'utiliser un nom abrégé si le DNS du cluster est configuré en conséquence, mais le FQDN est toujours plus fiable pour l'interaction entre espaces de noms.
# Exemple de Service dans namespace-b
apiVersion: v1
kind: Service
metadata:
name: my-service # Nom du service
namespace: namespace-b # Espace de noms du service
spec:
selector:
app: my-app # Sélecteur pour les pods ciblés par le service
ports:
- protocol: TCP
port: 80
targetPort: 8080
# Exemple de Pod dans namespace-a, accédant à un service dans namespace-b
apiVersion: v1
kind: Pod
metadata:
name: consumer-pod
namespace: namespace-a # Espace de noms du pod consommateur
spec:
containers:
- name: consumer-container
image: my-consumer-image
command: ["curl", "my-service.namespace-b.svc.cluster.local"] # Adresse du service dans un autre espace de noms
Il est important de noter que les politiques de réseau (Network Policies) peuvent être utilisées pour limiter l'interaction entre espaces de noms. Par défaut, si aucune politique n'est en place, l'interaction est autorisée.
Les politiques de réseau définissent des groupes de pods qui peuvent interagir entre eux, en fonction de leurs espaces de noms et de leurs étiquettes.