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/v1
kind: Deployment
metadata:
name: hello-world-deployment
namespace: hello-world
labels:
app: hello-world
spec:
replicas: 2
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: nginxdemos/hello:plain-text
ports:
- 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 AGE
hello-world-deployment 2/2 2 2 102s
kubectl get pods -n hello-world
# Vous devriez voir deux pods avec le statut "Running".
NAME READY STATUS RESTARTS AGE
hello-world-deployment-669dfbd799-294zz 1/1 Running 0 2m21s
hello-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: v1
kind: Service
metadata:
name: hello-world-service
namespace: hello-world
spec:
selector:
app: hello-world
ports:
- protocol: TCP
port: 80
targetPort: 80
type: 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/v1
kind: Ingress
metadata:
name: hello-world-ingress
namespace: hello-world
spec:
ingressClassName: nginx-external
rules:
- host: "hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com" # changez moi
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: hello-world-service
port:
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...
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 !