Exposer vos applications Kubernetes localement
Mise à jour :
Ce guide fait partie d’une série dédiée à
kubectl, l’outil en ligne
de commande pour interagir avec
Kubernetes. Dans ce guide, nous
explorons plusieurs commandes essentielles pour exposer et accéder aux
applications Kubernetes : kubectl expose
, kubectl port-forward
et kubectl proxy
.
Pourquoi exposer et accéder aux applications Kubernetes ?
Dans Kubernetes, les applications s’exécutent dans des pods et nécessitent des mécanismes d’exposition pour être accessibles. Plusieurs méthodes existent pour accéder à ces applications :
kubectl expose
: crée unService
pour exposer un pod, un déploiement ou un autre objet Kubernetes.kubectl port-forward
: redirige un port local vers un pod pour un accès direct temporaire.kubectl proxy
: permet d’accéder aux API Kubernetes via un proxy sécurisé.
Ces commandes sont utiles pour le développement, le débogage et l’accès aux applications sans nécessiter un LoadBalancer ou une IP publique.
kubectl expose
: Créer un service pour exposer une application
La commande kubectl expose
permet de créer un Service
qui expose un pod, un
déploiement ou un autre objet Kubernetes.
Syntaxe de base
kubectl expose <type-ressource> <nom> --port=<port> --target-port=<port-cible> --type=<type-service>
Exemples
1. Exposer un déploiement comme service ClusterIP (par défaut) :
kubectl expose deployment my-app --port=80 --target-port=8080
2. Exposer un pod avec un service NodePort :
kubectl expose pod my-pod --port=80 --target-port=8080 --type=NodePort
3. Exposer un service en LoadBalancer (nécessite un cloud provider supporté) :
kubectl expose deployment my-app --port=80 --target-port=8080 --type=LoadBalancer
Vérification du service créé
kubectl get services
Erreurs courantes et solutions
-
error: no resources found
:- Vérifiez que la ressource (pod, deployment) existe avec
kubectl get <type>
. - Assurez-vous d’être dans le bon namespace avec
-n <namespace>
.
- Vérifiez que la ressource (pod, deployment) existe avec
-
error: service already exists
: Supprimez le service existant avec :Terminal window kubectl delete service <nom-du-service>
kubectl port-forward
: Accès direct à un pod
La commande kubectl port-forward
permet d’accéder temporairement à une
application en redirigeant un port local vers un pod spécifique.
Syntaxe de base
kubectl port-forward <type-ressource>/<nom> <port-local>:<port-pod>
Exemples
1. Rediriger un port local vers un pod :
kubectl port-forward pod/my-pod 8080:80
Puis, ouvrez http://localhost:8080
dans votre navigateur pour accéder à
l’application.
2. Rediriger un port local vers un service :
kubectl port-forward svc/my-service 9090:80
3. Rediriger plusieurs ports simultanément :
kubectl port-forward pod/my-pod 8080:80 9090:90
Erreurs courantes et solutions
error: unable to listen on port
: Vérifiez qu’aucun autre processus n’utilise déjà ce port local.error: no such host
: Vérifiez que le pod/service cible existe aveckubectl get pods
oukubectl get svc
.
kubectl proxy
: Proxy sécurisé vers l’API Kubernetes
Présentation de kubectl proxy
La commande kubectl proxy
lance un serveur proxy local permettant d’accéder
aux API Kubernetes sans configuration supplémentaire.
Syntaxe de base
kubectl proxy --port=<port>
Exemples
1. Démarrer un proxy sur le port 8001 :
kubectl proxy --port=8001
Accédez à l’API via :
curl http://localhost:8001/api/v1/nodes
2. Accéder à un service Kubernetes via le proxy :
Si un service my-service
existe, utilisez :
curl http://localhost:8001/api/v1/namespaces/default/services/my-service
Arrêter le proxy
Utilisez Ctrl + C
dans le terminal où kubectl proxy
est exécuté.
Erreurs courantes et solutions
error: address already in use
: Un autre processus utilise déjà le port spécifié. Changez de port avec--port=<autre-port>
.error: unauthorized
: Assurez-vous d’être authentifié auprès du cluster aveckubectl config view
.
Bonnes pratiques pour l’exposition des applications
- Privilégiez ClusterIP pour des services internes.
- Utilisez NodePort avec précaution, car il expose un port sur tous les nœuds.
- LoadBalancer est recommandé en production pour un accès externe stable.
- Idéal pour le développement et le test local sans modifier la configuration du cluster.
- Vérifiez que le pod cible est en
Running
avant d’utiliserport-forward
. - Ne pas exposer le proxy à internet sans restrictions d’accès
- Utilisez-le pour interagir avec l’API Kubernetes en développement ou en test.
Conclusion
L’exposition et l’accès aux applications Kubernetes peuvent être gérés
efficacement grâce à kubectl expose
, kubectl port-forward
et kubectl proxy
.
kubectl expose
permet de créer un service et de rendre une application accessible.kubectl port-forward
est utile pour un accès direct temporaire à un pod ou un service.kubectl proxy
facilite l’accès sécurisé à l’API Kubernetes.
En maîtrisant ces commandes, vous améliorez la gestion et la disponibilité de vos applications dans un cluster Kubernetes.
Notes importantes
Ce guide fait partie d’une série complète dédiée à l’utilisation de kubectl
,
l’outil en ligne de commande incontournable pour administrer un cluster
Kubernetes. Chaque commande de kubectl
est abordée en détail dans des guides
spécifiques, organisés par thématique pour faciliter l’apprentissage et la
référence rapide.
Pour naviguer efficacement entre les différents chapitres, vous trouverez un tableau récapitulatif listant les commandes et leurs guides associés. N’hésitez pas à explorer ces ressources pour approfondir vos connaissances et optimiser votre gestion des clusters Kubernetes.
Commandes | Documentation |
---|---|
kubectl api-resources , kubectl explain | Exploration de l’API |
kubectl create , kubectl apply | Création et mise à jour des ressources |
kubectl edit , kubectl patch , kubectl replace | Modification des ressources |
kubectl get , kubectl describe , kubectl logs , kubectl top | Récupération d’informations sur les ressources |
kubectl exec , kubectl attach , kubectl debug , kubectl cp | Gestion et Debug des Pods |
kubectl delete , kubectl annotate , kubectl label | Suppression et annotation |
kubectl expose , kubectl port-forward , kubectl proxy | Exposition et accès aux applications |
kubectl scale , kubectl autoscale , kubectl rollout , kubectl set | Mise à l’échelle et gestion des déploiements |
kubectl wait , kubectl diff | Attente et validation des ressources |