Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, implementará la aplicación de demostración de la Tienda AKS en Azure Kubernetes Service (AKS) y configurará Azure OpenAI o la API de OpenAI para generar descripciones de productos.
La aplicación nativa de nube de ejemplo consta de servicios escritos en varios lenguajes y marcos, entre los que se incluyen:
- Golang con Gin
- Rust con Actix-Web
- JavaScript con Vue.js y Fastify
- Python con FastAPI
Estas aplicaciones proporcionan front-end para compradores y administradores de tiendas, API REST que envían datos a una cola de mensajes rabbitMQ y una base de datos de DocumentDB y aplicaciones de consola que simulan el tráfico.
Nota
No ejecute contenedores con estado, como DocumentDB y RabbitMQ, sin almacenamiento persistente en producción. En este artículo se usan sin almacenamiento persistente por motivos de simplicidad. En el caso de las cargas de trabajo de producción, use servicios administrados como Azure Cosmos DB o Azure Service Bus.
Para acceder al código base de GitHub para la aplicación de ejemplo, consulte AKS Store Demo.
Antes de empezar
- Necesita una cuenta de Azure con una suscripción activa. Si no tienes ninguna cuenta, crea una gratuita.
- Para esta demostración, use Azure OpenAI o openAI API.
- Para usar Azure OpenAI, necesita permisos para crear un recurso de OpenAI Azure e implementar un modelo. El registro solo es necesario para modelos de acceso limitado o medidas de seguridad modificadas.
- Para usar la API de OpenAI, regístrese en el sitio web de OpenAI.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para obtener más información, consulte Get started with Azure Cloud Shell.
Si prefiere ejecutar localmente comandos de referencia de la CLI, instale la CLI de Azure. Si se ejecuta en Windows o macOS, considere la posibilidad de ejecutar CLI de Azure en un contenedor de Docker. Para obtener más información, consulte Cómo ejecutar el CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en el CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Authenticate para Azure con CLI de Azure.
Cuando se le solicite, instale la extensión CLI de Azure en el primer uso. Para obtener más información sobre las extensiones, consulte Use y administre extensiones con el CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
Crear un grupo de recursos
Un grupo de recursos Azure es un grupo lógico en el que se implementan y administran Azure recursos. Cuando crea un grupo de recursos, se le pide que especifique una ubicación. Esta ubicación es la ubicación de almacenamiento de los metadatos del grupo de recursos y dónde se ejecutan los recursos en Azure si no especifica otra región durante la creación de recursos.
En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.
Cree un grupo de recursos con el comando az group create.
az group create --name myResourceGroup --location eastus
La siguiente salida de ejemplo muestra la creación exitosa del grupo de recursos:
{
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Creación de un clúster de AKS
En el siguiente ejemplo se crea un clúster denominado myAKSCluster en myResourceGroup.
Cree un clúster de AKS con el comando az aks create.
az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
Transcurridos unos minutos, el comando se completa y devuelve información en formato JSON sobre el clúster.
Conectarse al clúster
Para administrar un clúster de Kubernetes, use el cliente de línea de comandos de Kubernetes, kubectl. Si usa Azure Cloud Shell, kubectl ya está instalado.
Para instalar
kubectllocalmente, use el comandoaz aks install-cli.az aks install-cliNota
Si el sistema basado en Linux requiere permisos elevados, use el
sudo az aks install-clicomando .Para configurar
kubectlpara conectarse a su clúster de Kubernetes, use el comandoaz aks get-credentials.Este comando ejecuta las siguientes operaciones:
- Descarga las credenciales y configura la CLI de Kubernetes para usarlas.
- Usa
~/.kube/config, la ubicación predeterminada del archivo de configuración de Kubernetes. Especifique una ubicación diferente para el archivo de configuración de Kubernetes mediante el argumento --file .
az aks get-credentials --resource-group myResourceGroup --name myAKSClusterCompruebe la conexión al clúster con el comando
kubectl get. Este comando devuelve una lista de los nodos del clúster.kubectl get nodesEn la salida de ejemplo siguiente se muestran los nodos creados en los pasos anteriores. Compruebe que cada nodo tiene el estado Listo.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31469198-vmss000000 Ready agent 3h29m v1.25.6 aks-nodepool1-31469198-vmss000001 Ready agent 3h29m v1.25.6 aks-nodepool1-31469198-vmss000002 Ready agent 3h29m v1.25.6
Nota
Para un clúster de AKS privado, conéctese desde un punto de conexión de la misma red virtual que el clúster. Para obtener instrucciones de configuración, consulte Creación de un clúster de AKS privado.
Implementación de la aplicación
El manifiesto AKS Store incluye las siguientes implementaciones y servicios de Kubernetes:
- Servicio de producto: muestra información del producto.
- Servicio de pedidos: realiza pedidos.
- Makeline service: procesa los pedidos de la cola y completa los pedidos.
- Tienda virtual: aplicación web en línea para que los clientes vean productos y realicen pedidos.
- Administración de la tienda: aplicación web para que los empleados de la tienda puedan ver los pedidos en cola y administrar la información sobre los productos.
- Cliente virtual: simula la creación de pedidos de forma programada.
- Trabajo virtual: simula la finalización de pedidos según una programación.
- DocumentDB: NoSQL instancia de datos persistentes.
- RabbitMQ: cola de mensajes para una cola de pedidos.
Nota
No ejecute contenedores con estado, como DocumentDB y RabbitMQ, sin almacenamiento persistente en producción. En este artículo se usan sin almacenamiento persistente por motivos de simplicidad. En el caso de las cargas de trabajo de producción, use servicios administrados como Azure Cosmos DB o Azure Service Bus.
Revise el manifiesto YAML para la aplicación.
Implemente la aplicación mediante el comando
kubectl applyy especifique el nombre del manifiesto de YAML.kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
Implementación de un servicio OpenAI
Elija Azure OpenAI o openAI API para la aplicación que se ejecuta en AKS.
- En el portal de Azure, cree una instancia de OpenAI Azure.
- Inicie sesión en Microsoft Foundry.
- Desactive el botón de alternancia New Foundry y, a continuación, seleccione Ver todos los recursos en Mantener la compilación con Foundry.
- Seleccione el Azure recurso openAI que creó y, a continuación, seleccione Implementaciones en Recursos compartidos.
- Seleccione Implementar modelo>Implementar modelo base.
- Seleccione el modelo base gpt-4o-mini , escriba un nombre de implementación y, a continuación, implemente el modelo. Guarde el nombre de la implementación para la sección siguiente.
Para obtener más información sobre cómo crear una implementación de OpenAI de Azure, consulte Introducción a la generación de texto mediante Azure OpenAI.
Implementación del microservicio de IA
Implemente el microservicio de IA basado en Python que usa OpenAI para generar automáticamente descripciones de productos. Este microservicio se conecta a la aplicación almacén de AKS que implementó en la sección anterior.
Use la Azure implementación de modelos y recursos de OpenAI que creó en la sección Implementación de un servicio OpenAI. Configure las siguientes variables de entorno en el manifiesto del microservicio de IA:
| Variable del entorno | Value |
|---|---|
USE_AZURE_OPENAI |
Establézcalo en "True" para usar Azure OpenAI. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Nombre de la implementación del gpt-4o-mini modelo en Microsoft Foundry. |
AZURE_OPENAI_ENDPOINT |
Punto de conexión de la página Claves y punto de conexión del recurso Azure OpenAI. |
OPENAI_API_KEY |
Una clave de API de la página Claves y punto de conexión del recurso de Azure OpenAI. |
Cree un archivo denominado
ai-service.yamly cópielo en el siguiente manifiesto:apiVersion: apps/v1 kind: Deployment metadata: name: ai-service spec: replicas: 1 selector: matchLabels: app: ai-service template: metadata: labels: app: ai-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: ai-service image: ghcr.io/azure-samples/aks-store-demo/ai-service:2.2.0 ports: - containerPort: 5001 env: - name: USE_AZURE_OPENAI value: "True" - name: AZURE_OPENAI_DEPLOYMENT_NAME value: "" - name: AZURE_OPENAI_ENDPOINT value: "" - name: OPENAI_API_KEY value: "" resources: requests: cpu: 20m memory: 50Mi limits: cpu: 50m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: ai-service spec: type: ClusterIP ports: - name: http port: 5001 targetPort: 5001 selector: app: ai-serviceEstablezca la variable de entorno
USE_AZURE_OPENAIen"True".En Microsoft Foundry, copie el Azure nombre de implementación de OpenAI y establezca el
AZURE_OPENAI_DEPLOYMENT_NAMEvalor.En el portal de Azure, seleccione Claves y punto de conexión en el recurso Azure OpenAI. Copie el punto de conexión y la clave de API y, a continuación, establezca los
AZURE_OPENAI_ENDPOINTvalores yOPENAI_API_KEY.Implemente la aplicación mediante el comando
kubectl applyy especifique el nombre del manifiesto de YAML.kubectl apply -f ai-service.yamlEn la salida de ejemplo siguiente se muestran las implementaciones y los servicios creados correctamente:
deployment.apps/ai-service created service/ai-service created
Nota
El almacenamiento de claves de API directamente en manifiestos de Kubernetes no es seguro y puede exponer secretos en el control de código fuente. En este ejemplo se usan valores de manifiesto para simplificar. En el caso de las cargas de trabajo de producción, autentíquese en Azure OpenAI mediante una identidad administrada o almacene secretos en Azure Key Vault.
Prueba de la aplicación
Compruebe el estado de los pods desplegados con el comando
kubectl get pods.kubectl get podsCompruebe que todos los pods tienen el estado En ejecución antes de continuar.
Obtenga la dirección IP externa para el administrador de la Tienda mediante el
kubectl get servicecomando .kubectl get service store-adminUn servicio de Kubernetes expone el administrador del almacén a través de un equilibrador de carga público. El equilibrador de carga puede tardar unos minutos en asignar una dirección. El valor EXTERNAL-IP se muestra pendiente hasta que la dirección esté disponible.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-admin LoadBalancer 10.0.142.228 40.64.86.161 80:32494/TCP 50mRepita el paso anterior para el
store-frontservicio.En un explorador web, vaya a la dirección IP externa del administrador de la Tienda. En este ejemplo, la dirección es 40.64.86.161.
En Administrador de la Tienda, seleccione Products>Add Product (Agregar producto).
Después
ai-servicede iniciarse, el botón Preguntar al Asistente para IA aparece junto al campo descripción. Escriba el nombre, el precio y las palabras clave, seleccione Preguntar al Asistente para IA para generar una descripción del producto y, a continuación, seleccione Guardar producto.Compruebe que el collar inteligente de perro aparece en el administrador de la tienda.
Vaya a la dirección IP externa de Store Front y compruebe que aparece Dog Smart Collar.
Pasos siguientes
Ahora que ha agregado la funcionalidad de OpenAI a una aplicación de AKS, puede asegurar el acceso a Azure OpenAI desde Azure Kubernetes Service (AKS).
Para más información sobre los casos de uso de IA generativa, vea los siguientes recursos: