Tutoriel - Déployer votre première application
Objectifs
Ce tutoriel vous guide pas à pas pour réaliser votre premier déploiement sur un cluster Managed Kubernetes. À la fin de ce guide, vous aurez :
- Déployé une application web simple.
- Exposé cette application à l'intérieur du cluster via un Service.
- Rendu l'application accessible depuis Internet via un Ingress.
Prérequis
- Vous avez configuré votre accès au cluster comme décrit dans le guide de démarrage rapide.
- Vous disposez d'un namespace sur lequel vous avez les droits de déploiement. Dans ce tutoriel, nous utiliserons un namespace nommé
hello-world.
Étape 1 : Créer un namespace
Si ce n'est pas déjà fait, créez un namespace pour isoler votre application.
kubectl create namespace hello-world
Étape 2 : Déployer une application "Hello World"
Nous allons déployer une application de démonstration qui affiche une simple page web.
-
Créez un fichier nommé
deployment.yamlavec le contenu suivant :apiVersion: apps/v1kind: Deploymentmetadata:name: hello-world-deploymentnamespace: hello-worldlabels:app: hello-worldspec:replicas: 2selector:matchLabels:app: hello-worldtemplate:metadata:labels:app: hello-worldspec:containers:- name: hello-worldimage: nginxdemos/hello:plain-textports:- containerPort: 80 -
Appliquez ce manifeste à votre cluster :
kubectl apply -f deployment.yaml -
Vérifiez que le déploiement a été créé et que les pods sont en cours d'exécution :
kubectl get deployment -n hello-world# Vous devriez voir votre déploiement avec 2/2 replicas prêts.NAME READY UP-TO-DATE AVAILABLE AGEhello-world-deployment 2/2 2 2 102skubectl get pods -n hello-world# Vous devriez voir deux pods avec le statut "Running".NAME READY STATUS RESTARTS AGEhello-world-deployment-669dfbd799-294zz 1/1 Running 0 2m21shello-world-deployment-669dfbd799-plcbg 1/1 Running 0 2m21s
Étape 3 : Exposer l'application dans le cluster (Service)
Pour permettre aux différents composants du cluster de communiquer avec notre application, nous devons créer un Service.
-
Créez un fichier nommé
service.yaml:apiVersion: v1kind: Servicemetadata:name: hello-world-servicenamespace: hello-worldspec:selector:app: hello-worldports:- protocol: TCPport: 80targetPort: 80type: ClusterIP -
Appliquez le manifeste :
kubectl apply -f service.yamlVotre application est maintenant accessible via le nom
hello-world-service.hello-worlddepuis n'importe quel autre pod du cluster.
Étape 4 : Rendre l'application accessible depuis Internet (Ingress)
Pour exposer notre service sur Internet, nous allons utiliser une ressource Ingress. L'offre Managed Kubernetes fournit plusieurs ingressClassName préconfigurés. Nous utiliserons nginx-external pour une exposition publique.
-
Créez un fichier
ingress.yaml. Pensez à remplacervotre-cluster-idpar l'identifiant de votre cluster (ex:ctodev).apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: hello-world-ingressnamespace: hello-worldspec:ingressClassName: nginx-externalrules:- host: "hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com" # changez moihttp:paths:- path: /pathType: Prefixbackend:service:name: hello-world-serviceport:number: 80 -
Appliquez le manifeste :
kubectl apply -f ingress.yaml
Étape 5 : Vérifier l'accès
Une entrée DNS "*" fait déjà pointer toutes les url se terminant par ".external.votre-cluster-id.mk.ms-cloud-temple.com" vers l'IP de l'ingress "external". les applications publiées sur ce suffixe DNS sont donc directement accessibles.
curl http://hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com
Vous devriez recevoir une réponse du serveur NGINX de démo.
StatusCode : 200
StatusDescription : OK
Content : Server address: 10.247.1.223:80
Server name: hello-world-deployment-669dfbd799-plcbg
Date: 29/Oct/2025:15:40:04 +0000
URI: /
Request ID: 2df985e0630c3a123b5cde23b687a033
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 170
Cache-Control: no-cache
Content-Type: text/plain
Date: Wed, 29 Oct 2025 15:40:04 GMT
Expires: Wed, 29 Oct 2025 15:40:03 GMT
Server: ng...
:::warning[Pour aller plus loin : la sécurité en production ] Ce tutoriel vous a montré les bases du déploiement. Pour un environnement de production, il est crucial d'appliquer des mesures de sécurité supplémentaires :
- Utilisez des images sécurisées : Privilégiez des images provenant de votre registre d'entreprise sécurisé comme Harbor plutôt que des images publiques.
- Contrôlez les flux réseau : Mettez en place des
NetworkPoliciespour restreindre les communications aux seuls flux nécessaires entre vos applications. - Appliquez des politiques de gouvernance : Utilisez des outils comme Kyverno pour imposer des règles de sécurité (ex: interdire les conteneurs "root", exiger des
requestsetlimitsde ressources, etc.). :::
Nettoyage
Pour supprimer toutes les ressources que vous avez créées pendant ce tutoriel, vous pouvez simplement supprimer le namespace :
kubectl delete namespace hello-world
Félicitations, vous avez déployé et exposé votre première application sur Managed Kubernetes !