Despliegue de C# en Kubernetes: guía básica para principiantes

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é C# y Kubernetes son una combinación poderosa

\n\n

El desarrollo moderno cada vez más requiere no solo escribir código, sino también empaquetarlo y ejecutarlo correctamente en un entorno en la nube. Kubernetes (o K8s) se ha convertido en el estándar de facto para la orquestación de contenedores, y C# (.NET) es uno de los lenguajes más populares para crear aplicaciones web de alta carga y microservicios.

\n\n

En esta guía, recorreremos el camino desde una aplicación C# lista hasta su despliegue completo en un clúster de Kubernetes. Aprenderá a crear una imagen Docker, escribir manifiestos para el despliegue y el servicio, y luego ejecutar todo con kubectl. Sin magia, solo práctica.

\n\n

Paso 1: Preparación de la aplicación .NET y contenerización

\n\n

1.1 Creación de una API web simple en C#

\n\n

Para la demostración, crearemos una API web mínima de ASP.NET Core. Abra la terminal y ejecute:

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

Por defecto, el proyecto ya contiene el controlador WeatherForecastController. Asegurémonos de que la aplicación se ejecute localmente:

\n\n
dotnet run
\n\n

Navegue a http://localhost:5000/weatherforecast — debería ver una respuesta JSON. Ahora nuestra aplicación está lista para ser empaquetada.

\n\n

1.2 Creación del Dockerfile

\n\n

El despliegue en Kubernetes es imposible sin contenerización. Creemos un archivo Dockerfile en la raíz del proyecto:

\n\n
# Usamos la imagen oficial para la compilación\nFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build\nWORKDIR /app\n\n# Copiamos los archivos del proyecto y restauramos las dependencias\nCOPY *.csproj .\nRUN dotnet restore\n\n# Copiamos el resto de archivos y compilamos la aplicación\nCOPY . .\nRUN dotnet publish -c Release -o out\n\n# Imagen final — solo runtime\nFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime\nWORKDIR /app\nCOPY --from=build /app/out .\nENTRYPOINT ["dotnet", "MyK8sApp.dll"]
\n\n

Tenga en cuenta: usamos compilación multi-etapa (multi-stage build) — esto reduce el tamaño final de la imagen y mejora la seguridad.

\n\n

1.3 Compilación y verificación de la imagen Docker

\n\n

Compile la imagen y ejecútela localmente:

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

Verifique el funcionamiento: http://localhost:8080/weatherforecast. Si todo funciona, perfecto. Detenga el contenedor:

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

Paso 2: Fundamentos de Kubernetes — lo que necesita saber para el despliegue

\n\n

Antes de escribir manifiestos, revisemos los conceptos clave de Kubernetes:

\n\n
    \n
  • Pod — la unidad mínima de despliegue. Contiene uno o más contenedores.
  • \n
  • Deployment — gestiona el estado de los Pods: escalado, actualizaciones, recuperación tras fallos.
  • \n
  • Service — abstracción que proporciona acceso de red a los Pods. Normalmente se usa de tipo ClusterIP (interno) o LoadBalancer (externo).
  • \n
  • ConfigMap / Secret — para almacenar configuración y datos sensibles.
  • \n
\n\n

Usaremos minikube para pruebas locales. Instálelo según la guía oficial.

\n\n

Inicie el clúster:

\n\n
minikube start
\n\n

Paso 3: Creación de manifiestos de Kubernetes para la aplicación C#

\n\n

3.1 Manifiesto de Deployment

\n\n

Cree el archivo 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