Despliegue de C# en Kubernetes: guía básica práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué ejecutar C# en Kubernetes?

El desarrollo moderno en C# (.NET) requiere cada vez más una infraestructura escalable y tolerante a fallos. Kubernetes (K8s) se ha convertido en el estándar para la orquestación de contenedores, permitiendo automatizar el despliegue, escalado y gestión de aplicaciones. En esta guía, mostraremos cómo convertir tu aplicación C# en un contenedor y ejecutarla en un clúster de Kubernetes en la práctica.

Aprenderás cómo preparar una imagen Docker, escribir manifiestos para Kubernetes y realizar el despliegue usando kubectl. El artículo está dirigido a desarrolladores que ya conocen los fundamentos de C# y quieren dominar las prácticas modernas de DevOps.



1. Preparación de la aplicación C# para la contenerización

Antes de desplegar la aplicación en Kubernetes, es necesario empaquetarla en una imagen Docker. Como ejemplo, tomaremos una aplicación simple de ASP.NET Core Web API.



1.1. Creación del proyecto

Crea un nuevo proyecto usando .NET CLI:

dotnet new webapi -n MyK8sAppcd MyK8sApp

Asegúrate de que la aplicación funcione localmente:

dotnet run

Por defecto, la aplicación estará disponible en http://localhost:5000.



1.2. Adición del Dockerfile

En la raíz del proyecto, crea un archivo Dockerfile (sin extensión). Usa una compilación de múltiples etapas para optimizar el tamaño de la imagen:

# Etapa de compilaciónFROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /appCOPY *.csproj ./RUN dotnet restoreCOPY . ./RUN dotnet publish -c Release -o out

# Etapa de ejecuciónFROM 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. Compilación y verificación de la imagen Docker

Compila la imagen y ejecútala localmente:

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

Verifica que la aplicación responda: curl http://localhost:8080/weatherforecast (o ábrelo en el navegador).



2. Escritura de manifiestos de Kubernetes

Para el despliegue en Kubernetes, se necesitan archivos YAML que describan el estado deseado de la aplicación. El conjunto mínimo incluye Deployment y Service.



2.1. Creación del Deployment

Archivo 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"

Importante: Si usas un clúster local (por ejemplo, Minikube o Kind), la imagen debe estar disponible dentro del clúster. O especifica imagePullPolicy: Never para imágenes locales.



2.2. Creación del Service

Archivo service.yaml:

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

El tipo LoadBalancer es adecuado para proveedores en la nube. Para clústeres locales, usa NodePort o ClusterIP con reenvío de puertos mediante kubectl port-forward.



3. Despliegue y verificación de la aplicación

Ahora que los manifiestos están listos, realiza el despliegue en el clúster de Kubernetes.



3.1. Aplicación de los manifiestos

Blogs

Book Recommendations