website/content/fr/docs/tasks/access-application-cluster/service-access-application-...

155 lines
5.0 KiB
Markdown

---
title: Utiliser un Service pour accéder à une application dans un cluster
content_type: tutorial
weight: 60
---
<!-- overview -->
Cette page montre comment créer un Service Kubernetes que des clients externes peuvent utiliser
pour accéder à une application s'exécutant dans un cluster.
Le Service fournit une répartition de charge pour une application
ayant deux instances en cours d'exécution.
## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}}
## {{% heading "objectives" %}}
- Exécuter deux instances d'une application Hello World.
- Créer un Service qui expose un port du nœud.
- Utiliser le Service pour accéder à l'application en cours d'exécution.
<!-- lessoncontent -->
## Création d'un service pour une application s'exécutant dans deux pods
Voici le fichier de configuration pour le déploiement de l'application :
{{% codenew file="service/access/hello-application.yaml" %}}
1. Exécutez une application Hello World dans votre cluster :
Créez le déploiement de l'application en utilisant le fichier ci-dessus :
```shell
kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml
```
La commande précédente crée un
{{< glossary_tooltip text="Deployment" term_id="deployment" >}}
et un
{{< glossary_tooltip term_id="replica-set" text="ReplicaSet" >}} associé.
Le ReplicaSet possède deux
{{< glossary_tooltip text="Pods" term_id="pod" >}},
chacun exécutant l'application Hello World.
1. Affichez les informations du déploiement :
```shell
kubectl get deployments hello-world
kubectl describe deployments hello-world
```
1. Affichez les informations des ReplicaSet :
```shell
kubectl get replicasets
kubectl describe replicasets
```
1. Créez un Service qui expose le déploiement :
```shell
kubectl expose deployment hello-world --type=NodePort --name=example-service
```
1. Affichez les informations sur le Service :
```shell
kubectl describe services example-service
```
Le résultat sera similaire à ceci :
```none
Name: example-service
Namespace: default
Labels: run=load-balancer-example
Annotations: <none>
Selector: run=load-balancer-example
Type: NodePort
IP: 10.32.0.16
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31496/TCP
Endpoints: 10.200.1.4:8080,10.200.2.5:8080
Session Affinity: None
Events: <none>
```
Notez la valeur de NodePort pour le service. Par exemple,
dans le résultat précédent, la valeur de NodePort est 31496.
1. Répertoriez les pods qui exécutent l'application Hello World :
```shell
kubectl get pods --selector="run=load-balancer-example" --output=wide
```
Le résultat est similaire à ceci :
```none
NAME READY STATUS ... IP NODE
hello-world-2895499144-bsbk5 1/1 Running ... 10.200.1.4 worker1
hello-world-2895499144-m1pwt 1/1 Running ... 10.200.2.5 worker2
```
1. Obtenez l'adresse IP publique de l'un de vos nœuds qui exécute
un pod Hello World. L'obtention de cette adresse dépend de la manière dont vous avez configuré votre cluster.
Par exemple, si vous utilisez Minikube, vous pouvez
voir l'adresse du nœud en exécutant `kubectl cluster-info`. Si vous utilisez
des instances Google Compute Engine, vous pouvez utiliser la commande
`gcloud compute instances list` pour voir les adresses publiques de vos
nœuds.
1. Sur le nœud choisi, créez une règle de pare-feu autorisant le trafic TCP
sur votre port. Par exemple, si votre Service a une valeur NodePort de
31568, créez une règle de pare-feu autorisant le trafic TCP vers le port 31568. Différents
fournisseurs cloud offrent différentes façons de configurer des règles de pare-feu.
1. Utilisez l'adresse du nœud et le port de nœud pour accéder à l'application Hello World :
```shell
curl http://<adresse-ip-publique>:<port>
```
`<adresse-ip-publique>` est l'adresse IP publique de votre nœud,
et `<port>` est la valeur de NodePort pour votre service. La
réponse à une requête réussie est un message de bienvenue :
```none
Hello Kubernetes!
```
## Utilisation d'un fichier de configuration de service
Au lieu d'utiliser `kubectl expose`, vous pouvez utiliser un
[fichier de configuration de service](/docs/concepts/services-networking/service/)
pour créer un Service.
## {{% heading "cleanup" %}}
Pour supprimer le Service, saisissez cette commande :
kubectl delete services example-service
Pour supprimer le Déploiement, le ReplicaSet et les Pods qui exécutent
l'application Hello World, saisissez cette commande :
kubectl delete deployment hello-world
## {{% heading "whatsnext" %}}
Suivez le tutoriel
[Connecter des applications avec les Services](/docs/tutorials/services/connect-applications-service/).