Compartir comentarios
Las respuestas se generan en base a la documentación.

Prueba tu despliegue de .NET

Requisitos previos

Resumen

En esta sección, aprenderás cómo usar Docker Desktop para desplegar tu aplicación en un entorno Kubernetes con todas las funciones en tu máquina de desarrollo. Esto te permite probar y depurar tus cargas de trabajo localmente en Kubernetes antes de realizar el despliegue.

Crear un archivo YAML de Kubernetes

En tu directorio docker-dotnet-sample, crea un archivo llamado docker-dotnet-kubernetes.yaml. Abre el archivo en un IDE o editor de texto y agrega el siguiente contenido. Reemplaza DOCKER_USERNAME/REPO_NAME con tu nombre de usuario de Docker y el nombre del repositorio que creaste en Configurar CI/CD para tu aplicación .NET.

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    service: server
  name: server
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      service: server
  strategy: {}
  template:
    metadata:
      labels:
        service: server
    spec:
      initContainers:
        - name: wait-for-db
          image: busybox:1.28
          command:
            [
              "sh",
              "-c",
              'until nc -zv db 5432; do echo "waiting for db"; sleep 2; done;',
            ]
      containers:
        - image: DOCKER_USERNAME/REPO_NAME
          name: server
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
              hostPort: 8080
              protocol: TCP
          resources: {}
      restartPolicy: Always
status: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    service: db
  name: db
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      service: db
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        service: db
    spec:
      containers:
        - env:
            - name: POSTGRES_DB
              value: example
            - name: POSTGRES_PASSWORD
              value: example
          image: postgres:18
          name: db
          ports:
            - containerPort: 5432
              protocol: TCP
          resources: {}
      restartPolicy: Always
status: {}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    service: server
  name: server
  namespace: default
spec:
  type: NodePort
  ports:
    - name: "8080"
      port: 8080
      targetPort: 8080
      nodePort: 30001
  selector:
    service: server
status:
  loadBalancer: {}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    service: db
  name: db
  namespace: default
spec:
  ports:
    - name: "5432"
      port: 5432
      targetPort: 5432
  selector:
    service: db
status:
  loadBalancer: {}

En este archivo YAML de Kubernetes, hay cuatro objetos separados por ---. Además de un Service y un Deployment para la base de datos, los otros dos objetos son:

  • Un Deployment, que describe un grupo escalable de pods idénticos. En este caso, obtendrás solo una réplica o copia de tu pod. Ese pod, que se describe bajo template, contiene un solo contenedor. El contenedor se crea a partir de la imagen compilada por GitHub Actions en Configurar CI/CD para tu aplicación .NET.
  • Un servicio NodePort, que enrutará el tráfico desde el puerto 30001 de tu host al puerto 8080 dentro de los pods a los que se dirige, lo que te permite acceder a tu aplicación desde la red.

Para obtener más información sobre los objetos de Kubernetes, consulta la documentación de Kubernetes.

Desplegar y verificar tu aplicación

  1. En una terminal, navega al directorio docker-dotnet-sample y despliega tu aplicación en Kubernetes.

    $ kubectl apply -f docker-dotnet-kubernetes.yaml
    

    Deberías ver una salida similar a la siguiente, que indica que tus objetos de Kubernetes se crearon correctamente.

    deployment.apps/db created
    service/db created
    deployment.apps/server created
    service/server created
  2. Asegúrate de que todo haya funcionado listando tus despliegues (deployments).

    $ kubectl get deployments
    

    Tu despliegue debería listarse de la siguiente manera:

    NAME     READY   UP-TO-DATE   AVAILABLE   AGE
    db       1/1     1            1           76s
    server   1/1     1            1           76s

    Esto indica que todos los pods están activos y en ejecución. Realiza la misma comprobación para tus servicios.

    $ kubectl get services
    

    Deberías obtener una salida como la siguiente.

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    db           ClusterIP   10.96.156.90    <none>        5432/TCP         2m8s
    kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          164m
    server       NodePort    10.102.94.225   <none>        8080:30001/TCP   2m8s

    Además del servicio predeterminado kubernetes, puedes ver tu servicio server y tu servicio db. El servicio server está aceptando tráfico en el puerto 30001/TCP.

  3. Abre un navegador y visita tu aplicación en localhost:30001. Deberías ver tu aplicación.

  4. Ejecuta el siguiente comando para eliminar tu aplicación.

    $ kubectl delete -f docker-dotnet-kubernetes.yaml
    

Resumen

En esta sección, aprendiste cómo usar Docker Desktop para desplegar tu aplicación en un entorno Kubernetes con todas las funciones en tu máquina de desarrollo.

Información relacionada: