0

Microsoft Orleans #09: Despliegue de Orleans en Producción (Docker, Kubernetes, Azure)

En esta clase aprenderemos cómo desplegar Orleans en entornos de producción, utilizando Docker, Kubernetes y Azure para asegurar escalabilidad y alta disponibilidad.

Objetivos de la Clase

  • Comprender los requisitos para desplegar Orleans en producción.
  • Crear una imagen Docker para Orleans.
  • Implementar Orleans en Kubernetes para escalabilidad.
  • Configurar Orleans en Azure Kubernetes Service (AKS).
  • Probar la ejecución distribuida de Orleans en la nube.

¿Cómo Desplegar Orleans en Producción?

Orleans necesita un entorno de ejecución distribuido para manejar múltiples instancias de Granos. Las opciones más comunes incluyen:

  1. Docker: Empaquetar Orleans en contenedores ligeros.
  2. Kubernetes: Gestionar múltiples instancias de Orleans con balanceo de carga.
  3. Azure Kubernetes Service (AKS): Desplegar Orleans en la nube con escalabilidad automática.

Crear una Imagen Docker para Orleans

1. Agregar un Archivo Dockerfile

Crea un archivo Dockerfile en la raíz del proyecto OrleansDemo:

# Imagen base de .NET
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app

# Copiar archivos del proyecto y compilarlos
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY OrleansDemo/ OrleansDemo/
RUN dotnet publish OrleansDemo/OrleansDemo.csproj -c Release -o /app/publish

# Ejecutar el proyecto
FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "OrleansDemo.dll"]

2. Construir la Imagen Docker

Ejecuta el siguiente comando en la terminal:

docker build -t orleans-demo .

Esto creará una imagen Docker con Orleans lista para ejecutarse.

3. Ejecutar Orleans en un Contenedor

docker run -p 8080:8080 --name orleans-container orleans-demo

Implementar Orleans en Kubernetes

1. Crear un Archivo de Despliegue de Kubernetes

Crea un archivo orleans-deployment.yaml con la configuración de Orleans en Kubernetes:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: orleans-silo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: orleans
  template:
    metadata:
      labels:
        app: orleans
    spec:
      containers:
      - name: orleans
        image: orleans-demo
        ports:
        - containerPort: 8080

2. Aplicar el Despliegue en Kubernetes

Ejecuta el siguiente comando para desplegar Orleans en un clúster de Kubernetes:

kubectl apply -f orleans-deployment.yaml

3. Verificar el Despliegue

kubectl get pods

Esto mostrará los pods de Orleans en ejecución en Kubernetes.

Desplegar Orleans en Azure Kubernetes Service (AKS)

1. Crear un Clúster de Kubernetes en Azure

Ejecuta los siguientes comandos para crear un clúster en Azure Kubernetes Service (AKS):

az aks create --resource-group OrleansGroup --name OrleansCluster --node-count 3 --enable-addons monitoring --generate-ssh-keys

2. Conectar Kubernetes Localmente

az aks get-credentials --resource-group OrleansGroup --name OrleansCluster

3. Desplegar Orleans en AKS

kubectl apply -f orleans-deployment.yaml

4. Exponer Orleans como un Servicio en la Nube

apiVersion: v1
kind: Service
metadata:
  name: orleans-service
spec:
  type: LoadBalancer
  selector:
    app: orleans
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Ejecuta:

kubectl apply -f orleans-service.yaml

Esto creará un balanceador de carga en Azure para acceder a Orleans desde Internet.

Probar Orleans en Kubernetes

1. Obtener la IP Pública del Servicio

kubectl get services orleans-service

Esto mostrará la IP externa de Orleans.

2. Llamar a Orleans desde un Cliente Externo

curl http://<IP-EXTERNA>/api/usuarios/user123/nombre

Si todo funciona correctamente, Orleans debería responder con los datos almacenados.

Cuestionario de Autoevaluación

  1. ¿Cómo Orleans puede ejecutarse en un entorno de producción?
  2. ¿Cuál es la ventaja de ejecutar Orleans en Kubernetes?
  3. ¿Qué diferencia hay entre Docker y Kubernetes para desplegar Orleans?
  4. ¿Cómo se puede exponer Orleans a Internet en Azure?
  5. ¿Qué sucede si un nodo de Orleans en Kubernetes falla?

Resumen de la Clase

  • Orleans puede desplegarse en producción con Docker, Kubernetes y Azure.
  • Docker permite crear imágenes portables para ejecutar Orleans en cualquier entorno.
  • Kubernetes permite escalar Orleans automáticamente según la demanda.
  • Azure Kubernetes Service (AKS) facilita el despliegue en la nube con balanceo de carga.
  • Probamos el despliegue y acceso a Orleans desde un cliente externo.

Próxima Clase: Testing y Monitoreo

En la siguiente clase, aprenderemos cómo realizar pruebas unitarias en Orleans y monitorear el estado de los Granos y Silos en tiempo real.

Fernando Sonego

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *