For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/deploy-application.md.

Déployer une application

Voir en Markdown

Découvrez comment déployer une application "Hello World" sur un cluster OVHcloud Managed Kubernetes

Objectif

OVHcloud Managed Kubernetes service vous fournit des clusters Kubernetes sans les contraintes liées à l'installation ou à l'exploitation. Ce guide explique comment déployer une simple application Hello World sur un cluster OVHcloud Managed Kubernetes.

Prérequis

  • un cluster OVHcloud Managed Kubernetes
  • au moins un nœud sur le cluster (consultez le guide commander un nœud pour plus de détails)
  • un kubectl correctement configuré (consultez le guide configurer kubectl pour plus de détails)
Warning

Lorsqu'une ressource Service de type LoadBalancer est créée au sein d'un cluster Managed Kubernetes, un Load Balancer Public Cloud associé est automatiquement créé, permettant un accès public à votre application K8S. Le service Load Balancer Public Cloud est facturé à l'heure et apparaîtra dans votre projet Public Cloud. Pour plus d'informations, consultez la documentation suivante : tarifs du Network Load Balancer.

En pratique

Étape 1 - Déployer votre première application

La commande suivante va déployer une application simple (image nginx) à l'aide d'un Deployment Kubernetes et d'un Service Kubernetes.

Créez un nouveau namespace :

kubectl create ns hello-app

Créez un fichier hello.yml pour notre image Docker ovhplatform/hello :

apiVersion: v1
kind: Service
metadata:
  name: hello-world
  labels:
    app: hello-world
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  selector:
    app: hello-world
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world-deployment
  labels:
    app: hello-world
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: ovhplatform/hello
        ports:
        - containerPort: 80

Puis appliquez le fichier :

kubectl apply -f hello.yml -n hello-app

Après avoir appliqué le fichier YAML, un nouveau service hello-world et le déploiement hello-world-deployment correspondant sont créés dans le namespace hello-app :

$ kubectl apply -f hello.yml -n hello-app
service/hello-world created
deployment.apps/hello-world-deployment created
Info

L'application que vous venez de déployer est un simple serveur Nginx avec une unique page statique Hello World. Concrètement, elle ne fait que déployer l'image Docker ovhplatform/hello.

Étape 2 - Lister les pods

Vous venez de déployer un service hello-world dans un pod sur votre worker node. Vérifiez que tout est correct en listant les pods.

kubectl get pods -n hello-app -l app=hello-world

Vous devriez voir votre pod nouvellement créé :

$ kubectl get pods -n hello-app -l app=hello-world
NAME                                           READY     STATUS    RESTARTS   AGE
hello-world-deployment-d98c6464b-7jqvg         1/1       Running   0          47s
Info

Dans ce tutoriel, nous avons choisi de créer un namespace spécifique pour isoler notre application.

Mais si vous souhaitez utiliser le namespace default à la place, c'est le namespace par défaut de Kubernetes ; vous n'avez donc pas besoin de le spécifier dans vos commandes kubectl.

Étape 3 - Lister les déploiements

Vous pouvez également vérifier que le déploiement est actif :

kubectl get deploy -n hello-app -l app=hello-world

Vous verrez alors le hello-service-deployment :

$ kubectl get deploy -n hello-app -l app=hello-world
NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-world-deployment        1         1         1            1           1m

Étape 4 - Lister les services

Utilisez maintenant kubectl pour afficher votre service :

kubectl get services -n hello-app -l app=hello-world

Vous devriez voir votre service nouvellement créé :

$ kubectl get services -n hello-app -l app=hello-world
NAME          TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)        AGE
hello-world   LoadBalancer   10.3.234.211   51.178.69.47   80:31885/TCP   6m54s
Info

Si vous obtenez <pending> sous EXTERNAL-IP, le provisionnement du LoadBalancer peut prendre une minute ou deux ; réessayez donc dans quelques instants.

Étape 5 - Tester votre service

Récupérez l'URL de l'application hello-world :

$ export SERVICE_URL=$(kubectl get svc hello-world -n hello-app -o jsonpath='{.status.loadBalancer.ingress[].ip}')

$ echo "http://$SERVICE_URL/"
http://135.125.83.30/

Copiez/collez l'URL dans votre navigateur pour voir votre nouvelle application hello-world en cours d'exécution :

Tester votre service

Vous pouvez également tester le service nouvellement créé, en ligne de commande, avec curl :

curl $SERVICE_URL

Vous devriez voir votre service nouvellement créé :

curl $SERVICE_URL
<!doctype html>

<html>
<head>
<title>OVH K8S</title>
</head>
<body>
<div class="title">
<p>Hello from Kubernetes!</p>
<img src="./ovh.svg"/>
</div>
</body>
</html>
Info

Si vous obtenez un message d'erreur « Failed to connect to 135.125.83.30 port 80: Connection refused », c'est normal. Le service démarre ; vous devez donc attendre quelques secondes avant de le tester à nouveau.

Étape 6 - Nettoyage

Pour terminer, vous pouvez nettoyer en supprimant le service et le déploiement.

Supprimez le namespace (supprimer le namespace supprimera toutes les ressources créées à l'intérieur, y compris le déploiement et le service) :

kubectl delete ns hello-app

Si vous listez les services, les déploiements et les pods, vous constaterez que hello-world n'existe plus :

$ kubectl delete service hello-world -n hello-app
namespace "hello-app" deleted

$ kubectl get services -l app=hello-world -n hello-app
No resources found in hello-app namespace.

$ kubectl get deployments -n hello-app -l app=hello-world
No resources found in hello-app namespace.

$ kubectl get pods -n hello-app -l app=hello-world
No resources found in hello-app namespace.

Aller plus loin

Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, consultez notre site de documentation OVHcloud Managed Kubernetes.

  • Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.

  • Échangez avec notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?