Déploiement de C# sur Kubernetes : guide de base pour développeurs

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Déploiement C# sur Kubernetes : guide de base

Kubernetes (K8s) est devenu le standard de facto pour l'orchestration d'applications conteneurisées. Si vous développez en C# (.NET), tôt ou tard se posera la question : comment empaqueter votre application et l'exécuter dans le cloud ou sur votre propre cluster. Dans ce guide, nous allons parcourir le cycle complet — de la création d'une simple API web ASP.NET Core à son déploiement dans Kubernetes.

Cet article s'adresse aux développeurs qui connaissent déjà les bases de C# et Docker, mais qui commencent tout juste à travailler avec Kubernetes.



1. Préparation de l'application .NET et de l'image Docker

Avant de déployer une application dans Kubernetes, il faut l'empaqueter dans un conteneur. Créons une API web minimale en C#.

  1. Créez un nouveau projet :
    dotnet new webapi -n MyK8sAppcd MyK8sApp
  2. Assurez-vous que l'application écoute sur le port 80. Dans le fichier Program.cs (ou appsettings.json), indiquez :
    builder.WebHost.UseUrls("http://0.0.0.0:80");
  3. Créez un fichier Dockerfile à la racine du projet :
    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS baseWORKDIR /appEXPOSE 80

    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /srcCOPY ["MyK8sApp.csproj", "."]RUN dotnet restore "./MyK8sApp.csproj"COPY . .RUN dotnet build "MyK8sApp.csproj" -c Release -o /app/build

    FROM build AS publishRUN dotnet publish "MyK8sApp.csproj" -c Release -o /app/publish

    FROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "MyK8sApp.dll"]
  4. Construisez l'image et envoyez-la dans un registre (par exemple, Docker Hub) :
    docker build -t yourdockerhub/my-k8s-app:v1 .docker push yourdockerhub/my-k8s-app:v1

Important : Remplacez yourdockerhub par le nom d'utilisateur réel. Pour les tests locaux, vous pouvez utiliser minikube et ne pas publier l'image — il suffit de la construire localement.



2. Création des manifestes Kubernetes

Kubernetes utilise des fichiers YAML déclaratifs pour décrire l'état souhaité du cluster. Nous aurons besoin de deux objets principaux : Deployment (gestion du pod) et Service (accès réseau).



2.1. Deployment (déploiement)

Créez le fichier deployment.yaml :

apiVersion: apps/v1kind: Deploymentmetadata:  name: my-k8s-app-deployment  labels:    app: my-k8s-appspec:  replicas: 2  selector:    matchLabels:      app: my-k8s-app  template:    metadata:      labels:        app: my-k8s-app    spec:      containers:      - name: my-k8s-app        image: yourdockerhub/my-k8s-app:v1        ports:        - containerPort: 80        resources:          requests:            memory: "64Mi"            cpu: "250m"          limits:            memory: "128Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /health            port: 80          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /ready            port: 80          initialDelaySeconds: 3          periodSeconds: 5

Dans ce manifeste, nous spécifions :

  • replicas: 2 — deux instances de l'application pour la tolérance aux pannes.
  • resources — limites de CPU et de mémoire (important pour le fonctionnement stable du cluster).
  • livenessProbe et readinessProbe — vérifications de santé. Ajoutez les endpoints /health et /ready à votre contrôleur.


2.2. Service (service)

Créez le fichier service.yaml :

apiVersion: v1kind: Servicemetadata:  name: my-k8s-app-servicespec:  selecto                

Blogs

Book Recommendations