Déploiement C# sur Kubernetes : guide pratique de base

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 exécuter C# dans Kubernetes ?

Le développement moderne en C# (.NET) nécessite de plus en plus une infrastructure évolutive et résiliente. Kubernetes (K8s) est devenu la norme pour l'orchestration de conteneurs, permettant d'automatiser le déploiement, la mise à l'échelle et la gestion des applications. Dans ce guide, nous allons montrer comment transformer votre application C# en conteneur et l'exécuter dans un cluster Kubernetes en pratique.

Vous apprendrez à préparer une image Docker, à écrire des manifestes Kubernetes et à effectuer le déploiement à l'aide de kubectl. Cet article est destiné aux développeurs qui connaissent déjà les bases de C# et souhaitent maîtriser les pratiques modernes de DevOps.



1. Préparation de l'application C# pour la conteneurisation

Avant de déployer l'application dans Kubernetes, il faut l'empaqueter dans une image Docker. Pour l'exemple, prenons une simple application ASP.NET Core Web API.



1.1. Création du projet

Créez un nouveau projet avec .NET CLI :

dotnet new webapi -n MyK8sAppcd MyK8sApp

Assurez-vous que l'application fonctionne localement :

dotnet run

Par défaut, l'application sera accessible à l'adresse http://localhost:5000.



1.2. Ajout du Dockerfile

À la racine du projet, créez un fichier Dockerfile (sans extension). Utilisez une construction multi-étapes pour optimiser la taille de l'image :

# Étape de constructionFROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /appCOPY *.csproj ./RUN dotnet restoreCOPY . ./RUN dotnet publish -c Release -o out

# Étape d'exécutionFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtimeWORKDIR /appCOPY --from=build /app/out ./ENV ASPNETCORE_URLS=http://+:80EXPOSE 80ENTRYPOINT ["dotnet", "MyK8sApp.dll"]


1.3. Construction et vérification de l'image Docker

Construisez l'image et exécutez-la localement :

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

Vérifiez que l'application répond : curl http://localhost:8080/weatherforecast (ou ouvrez dans le navigateur).



2. Rédaction des manifestes Kubernetes

Pour le déploiement dans Kubernetes, vous aurez besoin de fichiers YAML décrivant l'état souhaité de l'application. L'ensemble minimal comprend un Deployment et un Service.



2.1. Création du Deployment

Fichier deployment.yaml :

apiVersion: apps/v1kind: Deploymentmetadata:  name: myk8sapp-deployment  labels:    app: myk8sappspec:  replicas: 2  selector:    matchLabels:      app: myk8sapp  template:    metadata:      labels:        app: myk8sapp    spec:      containers:      - name: myk8sapp        image: myk8sapp:latest        ports:        - containerPort: 80        env:        - name: ASPNETCORE_ENVIRONMENT          value: "Production"        resources:          requests:            memory: "128Mi"            cpu: "250m"          limits:            memory: "256Mi"            cpu: "500m"

Important : Si vous utilisez un cluster local (par exemple, Minikube ou Kind), l'image doit être accessible à l'intérieur du cluster. Ou spécifiez imagePullPolicy: Never pour les images locales.



2.2. Création du Service

Fichier service.yaml :

apiVersion: v1kind: Servicemetadata:  name: myk8sapp-servicespec:  selector:    app: myk8sapp  ports:    - protocol: TCP      port: 80      targetPort: 80  type: LoadBalancer

Le type LoadBalancer convient aux fournisseurs cloud. Pour les clusters locaux, utilisez NodePort ou ClusterIP avec redirection de ports via kubectl port-forward.



3. Déploiement et vérification de l'application

Maintenant que les manifestes sont prêts, effectuez le déploiement dans le cluster Kubernetes.



3.1. Application des manifestes

Blogs

Book Recommendations