Déploiement de la passerelle de sortie à Kubernetes: Istio

De nos jours, dans les architectures de microservices, nous avons commencé à utiliser un maillage de service comme Ce pour gérer et sécuriser le flux de trafic à l’intérieur du cluster Kubernetes, dans Ce Mesh de service Nous utilisons des passerelles entravées et de sortie pour acheminer le trafic entrant et sortant. Dans ce blog, nous examinerons comment nous pouvons utiliser la passerelle de sortie pour acheminer le trafic externe quittant le maillage.
Condition préalable
- Compréhension de base de Kubernetes et de son réseautage.
- Le cluster Kubernetes a déjà été configuré avec ISTIO installé.
- ISTIOCTL doit être installé.
Vous pouvez utiliser la commande ci-dessous pour confirmer que Istio est installé dans votre cluster Kubernetes. Les composants Istio seront affichés comme Istiod.
kubectl get pods -n istio-system
Étape 1: Autoriser l’injection de side-car
Nous devons donc ajouter les étiquettes à l’espace de noms afin que le side-car puisse être en mesure d’injecter. Vous pouvez utiliser la commande ci-dessous pour cela –
kubectl label namespace egress istio-injection=enabled
kubectl label namespace default istio-injection=enabled
Étape 2: Déploiement d’un exemple d’application.
kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/sleep/sleep.yaml
Nous utiliserons cet exemple d’application pour tester le trafic si elle se comporte en profondeur la passerelle de sortie.
Étape 3: Mise à jour de la configuration du maillage
Istio permet par défaut de permettre un trafic d’accès sans restriction aux services externes permet de restreindre en mettant à jour la «sortie sortante» vers «Registry_Only»
kubectl -n istio-system get configmap
kubectl -n istio-system edit configmap istio
Cela ressemblera ci-dessous, vous devez mettre à jour la «piroté

configmap
Redémarrez le plan de contrôle ISITO afin que les changements entrent en vigueur. Il bloquera tout le trafic de sortie, sauf que les services externes définis dans ServiceEntry seraient autorisés.

Circulation
Étape 4: Création d’entrée de service et de service de service
Ainsi, pour permettre le trafic de sortie, nous devons définir l’entrée de service pour ces hôtes.

Service
Remarque: «Exportto» définit l’espace de noms. À l’heure actuelle, c’est réglé à Exportto: [“.” ] ce qui signifie qu’il est applicable à l’espace de noms actuel. Vous pouvez utiliser «*» iStead de «». être applicable à tous les espaces de noms.
Étape 5: Déploiement du déploiement de la passerelle de sortie

Déploiement
Étape 6: Service de déploiement

Service
Étape 7: Déploiement de la passerelle
Déployons la passerelle de sortie en utilisant ci-dessous YAML car ce serait le point de sortie du maillage.

Porte
Étape 8: Déploiement de destination
Créons une destination de destination car elle définirait l’hôte de destination et le nom de sous-ensemble qui serait référencé par le service virtuel.

Destination
Étape 9: Déploiement de NetworkPolicy
La stratégie de réseau ci-dessous s’assurerait que notre passerelle de sortie peut recevoir du trafic du plan de contrôle Istio et de l’application d’échantillonnage.

NetworkPolicy
Étape 10: Déploiement de VirtualService
Ainsi, ce service virtuel redirigera le trafic originaire du port de Mesh (Sidecar-Proxy) 80 ou 443 vers la passerelle de sortie puis de l’hôte externe.

VirtualService
Permet de tester le trafic maintenant, pour nous assurer qu’il passe par notre passerelle de sortie –
kubectl exec -it deployment sleep -c sleep -- curl -I https://edition.cnn.com
Ensuite, nous pouvons examiner les journaux pour confirmer si le trafic passe par notre passerelle de sortie.
kubectl logs <Pod-name> -c istio-proxy
Voici l’exemple de la façon dont les journaux ressembleront
[2025-06-25T23:32:42.892Z] "- - -" 0 - - - "-" 304 6087 101 - "-" "-" "-" "-" "52.7.212.xx:xxx" outbound|443||edition.cnn.co 10.23.43.x:xxxxx 10.23.43.x:xxx 10.23.20.xx:xxxxx edition.cnn.com -
Conclusion
Maintenant, vous avez configuré un moyen sécurisé d’envoyer votre trafic sortant à partir du cluster Kubernetes en utilisant la passerelle de sortie d’Istio. Il ajoute également une couche de sécurité qui aligne également les meilleures pratiques qui devraient être suivies dans les architectures de maillage pour le trafic sortant.
Vous pouvez également référer la documentation officielle d’Istio Egress Gateway – https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway
Vous avez trouvé cela utile? PARTAGEZ-LE
Source link