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

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

Introduction : Pourquoi C# et Kubernetes forment un duo puissant

\n\n

Le développement moderne exige de plus en plus non seulement d'écrire du code, mais aussi de l'empaqueter correctement et de l'exécuter dans un environnement cloud. Kubernetes (ou K8s) est devenu le standard de facto pour l'orchestration de conteneurs, et C# (.NET) l'un des langages les plus populaires pour créer des applications web à forte charge et des microservices.

\n\n

Dans ce guide, nous passerons d'une application C# prête à son déploiement complet dans un cluster Kubernetes. Vous apprendrez à créer une image Docker, à rédiger des manifestes pour le déploiement et le service, puis à tout lancer avec kubectl. Pas de magie, seulement de la pratique.

\n\n

Étape 1 : Préparation de l'application .NET et conteneurisation

\n\n

1.1 Création d'une API Web simple en C#

\n\n

Pour la démonstration, nous allons créer une API Web ASP.NET Core minimale. Ouvrez le terminal et exécutez :

\n\n
dotnet new webapi -n MyK8sApp\ncd MyK8sApp
\n\n

Par défaut, le projet contient déjà le contrôleur WeatherForecastController. Vérifions que l'application se lance localement :

\n\n
dotnet run
\n\n

Accédez à l'adresse http://localhost:5000/weatherforecast — vous devriez voir une réponse JSON. Notre application est maintenant prête à être empaquetée.

\n\n

1.2 Création du Dockerfile

\n\n

Le déploiement sur Kubernetes est impossible sans conteneurisation. Créons un fichier Dockerfile à la racine du projet :

\n\n
# Utilisation de l'image officielle pour la compilation\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\n\n# Copie des fichiers du projet et restauration des dépendances\nCOPY *.csproj .\nRUN dotnet restore\n\n# Copie des autres fichiers et compilation de l'application\nCOPY . .\nRUN dotnet publish -c Release -o out\n\n# Image finale — seulement le runtime\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENTRYPOINT ["dotnet", "MyK8sApp.dll"]
\n\n

Remarque : nous utilisons une compilation multi-étapes (multi-stage build) — cela réduit la taille finale de l'image et améliore la sécurité.

\n\n

1.3 Construction et vérification de l'image Docker

\n\n

Construisez l'image et lancez-la localement :

\n\n
docker build -t myk8sapp:latest .\ndocker run -d -p 8080:80 --name myapp myk8sapp:latest
\n\n

Vérifiez le fonctionnement : http://localhost:8080/weatherforecast. Si tout fonctionne — parfait. Arrêtez le conteneur :

\n\n
docker stop myapp && docker rm myapp
\n\n

Étape 2 : Bases de Kubernetes — ce qu'il faut savoir pour le déploiement

\n\n

Avant d'écrire des manifestes, comprenons les concepts clés de Kubernetes :

\n\n
    \n
  • Pod — unité de déploiement minimale. Contient un ou plusieurs conteneurs.
  • \n
  • Deployment — gère l'état des Pods : mise à l'échelle, mises à jour, reprise après panne.
  • \n
  • Service — abstraction qui assure l'accès réseau aux Pods. Généralement de type ClusterIP (interne) ou LoadBalancer (externe).
  • \n
  • ConfigMap / Secret — pour stocker la configuration et les données sensibles.
  • \n
\n\n

Nous utiliserons minikube pour les tests locaux. Installez-le selon les instructions officielles.

\n\n

Lancez le cluster :

\n\n
minikube start
\n\n

Étape 3 : Création des manifestes Kubernetes pour l'application C#

\n\n

3.1 Manifeste Deployment

\n\n

Créez un fichier deployment.yaml :

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: myk8sapp-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: myk8sapp\n  template:\n    metadata:\n      labels:\n        app: myk8sapp\n    spec:\n      containers:\n      - name: myk8sapp\n        image: myk8sapp:latest\n        imagePullPol                

Blogs

Book Recommendations