Prueba tu despliegue de .NET
Requisitos previos
- Completa todas las secciones anteriores de esta guía, comenzando con Containerizar una aplicación .NET.
- Activa Kubernetes en Docker Desktop.
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
En una terminal, navega al directorio
docker-dotnet-sampley despliega tu aplicación en Kubernetes.$ kubectl apply -f docker-dotnet-kubernetes.yamlDeberí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 createdAsegúrate de que todo haya funcionado listando tus despliegues (deployments).
$ kubectl get deploymentsTu 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 76sEsto indica que todos los pods están activos y en ejecución. Realiza la misma comprobación para tus servicios.
$ kubectl get servicesDeberí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 2m8sAdemás del servicio predeterminado
kubernetes, puedes ver tu servicioservery tu serviciodb. El servicioserverestá aceptando tráfico en el puerto 30001/TCP.Abre un navegador y visita tu aplicación en
localhost:30001. Deberías ver tu aplicación.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: