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, aprenderá a implementar una aplicación que use Azure OpenAI o OpenAI en AKS. Con OpenAI, puede adaptar fácilmente diferentes modelos de inteligencia artificial, como la generación de contenido, el resumen, la búsqueda semántica y el lenguaje natural a la generación de código, para sus tareas específicas. Para empezar, implemente un clúster de AKS en la suscripción de Azure. Luego, despliegas tu servicio de OpenAI y la aplicación de ejemplo.
La aplicación nativa de nube de ejemplo es representativa de las implementaciones del mundo real. La aplicación de varios contenedores consta de aplicaciones escritas 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 interfaces frontales para los clientes y los administradores, API REST para enviar datos a la cola de mensajes de RabbitMQ y la base de datos de MongoDB, así como aplicaciones de consola para simular el tráfico.
Nota
No se recomienda ejecutar contenedores con estado, como MongoDB y Rabbit MQ, sin almacenamiento persistente para producción. Los usamos aquí para simplificar, pero se recomienda usar servicios administrados, como Azure CosmosDB 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 tiene ninguna cuenta, cree una gratuita.
- Para esta demostración, puede usar el servicio de Azure OpenAI o el servicio de OpenAI.
- Si planea usar el servicio Azure OpenAI, debe solicitar acceso para habilitarlo en su suscripción de Azure mediante el formulario de Solicitud de acceso al servicio Azure OpenAI.
- Si planea usar 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 buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización 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 --name myResourceGroup --location eastusLa 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 --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keysTranscurridos 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 kubectl, el cliente de línea de comandos de Kubernetes.
kubectl ya está instalado si usa Azure Cloud Shell.
Para instalar localmente, use el comando .
az aks install-cliNota
Si el sistema basado en Linux necesita permisos elevados, puede usar el comando .
Para configurar para conectarse a su clúster de Kubernetes, use el comando .
Este comando ejecuta las siguientes operaciones:
- Descarga las credenciales y configura la CLI de Kubernetes para usarlas.
- Usa , la ubicación predeterminada del archivo de configuración de Kubernetes. Puede especificar otra ubicación para el archivo de configuración de Kubernetes con el argumento --file.
az aks get-credentials --resource-group myResourceGroup --name myAKSClusterCompruebe la conexión al clúster con el comando . Este comando devuelve una lista de los nodos del clúster.
kubectl get nodesLa salida del siguiente ejemplo muestra los nodos creados en los pasos anteriores. Asegúrese de que el estado del nodo es 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
En el caso de los clústeres privados, es posible que los nodos no sean accesibles si intenta conectarse a ellos mediante la dirección IP pública. Para corregir esto, debe crear un punto de conexión dentro de la misma red virtual que el clúster para poder conectarse a él. Siga las instrucciones para crear un clúster de AKS privado y, a continuación, conéctese a él.
Implementación de la aplicación
Diagrama de arquitectura de la demostración de IA AKS.
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 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.
- Mongo DB: instancia de NoSQL para datos persistentes.
- Rabbit MQ: cola de mensajes para una cola de pedidos.
Nota
No se recomienda ejecutar contenedores con estado, como MongoDB y Rabbit MQ, sin almacenamiento persistente para producción. Los usamos aquí para simplificar, pero se recomienda usar servicios administrados, como Azure CosmosDB o Azure Service Bus.
Revise el manifiesto YAML para la aplicación.
Implemente la aplicación mediante el comando y 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.yamlEn la salida de ejemplo siguiente se muestran las implementaciones y los servicios creados correctamente:
deployment.apps/mongodb created service/mongodb created deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/makeline-service created service/makeline-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created deployment.apps/store-admin created service/store-admin created deployment.apps/virtual-customer created deployment.apps/virtual-worker created
Implementación de OpenAI
Puede usar Azure OpenAI o OpenAI y ejecutar la aplicación en AKS.
- Azure OpenAI
- OpenAI
- En el portal de Azure, cree una instancia de OpenAI Azure.
- Vaya a la instancia de Azure OpenAI que creó.
- En la hoja Información general , vaya al portal de Microsoft Foundry.
- Cree una nueva implementación de chat con el modelo base gpt-4o-mini .
Para obtener más información sobre cómo crear una implementación en Azure OpenAI, consulte Get comenzó a generar texto mediante Azure OpenAI Service.
Implementación del servicio de IA
Ahora que se implementa la aplicación, puede implementar el microservicio basado en Python que usa OpenAI para generar automáticamente descripciones de nuevos productos que se agregan al catálogo de la tienda.
- Azure OpenAI
- OpenAI
Cree un archivo denominado y 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:latest 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 en .
Obtenga el nombre de la implementación de Azure OpenAI de Foundry y rellene el valor de
AZURE_OPENAI_DEPLOYMENT_NAME.Obtenga el punto de conexión de Azure OpenAI y la clave API de Azure OpenAI desde el portal de Azure seleccionando Keys y Endpoint en el panel izquierdo del recurso. Actualice y en YAML en consecuencia.
Implemente la aplicación mediante el comando y 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
La adición directa de información confidencial, como las claves de API, a los archivos de manifiesto de Kubernetes no es segura y puede confirmarse accidentalmente en los repositorios de código. Lo agregamos aquí por motivos de simplicidad. En el caso de las cargas de trabajo de producción, utilice una Managed Identity para realizar la autenticación en el servicio Azure OpenAI o bien, almacene sus secretos en el almacén de claves Azure Key Vault.
Prueba de la aplicación
Compruebe el estado de los pods implementados con el comando kubectl get pods.
kubectl get podsAsegúrese de que todos los pods estén en ejecución antes de continuar con el paso siguiente.
NAME READY STATUS RESTARTS AGE makeline-service-7db94dc7d4-8g28l 1/1 Running 0 99s mongodb-78f6d95f8-nptbz 1/1 Running 0 99s order-service-55cbd784bb-6bmfb 1/1 Running 0 99s product-service-6bf4d65f74-7cbvk 1/1 Running 0 99s rabbitmq-9855984f9-94nlm 1/1 Running 0 99s store-admin-7f7d768c48-9hn8l 1/1 Running 0 99s store-front-6786c64d97-xq5s9 1/1 Running 0 99s virtual-customer-79498f8667-xzsb7 1/1 Running 0 99s virtual-worker-6d77fff4b5-7g7rj 1/1 Running 0 99sPara obtener la dirección IP de la aplicación web de administración de la tienda y la aplicación web de front-end de la tienda, use el comando .
kubectl get service store-adminLa aplicación expone el sitio de Administración de la tienda a Internet a través de un equilibrador de carga público aprovisionado por el servicio Kubernetes. Este proceso puede tardar unos minutos en completarse. IP EXTERNA muestra inicialmente pendiente, hasta que el servicio se activa y muestra la dirección IP.
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 mismo paso para el servicio denominado `store-front`.
Abra un explorador web y vaya a la dirección IP externa del servicio. En el ejemplo que se muestra aquí, abra 40.64.86.161 para ver Administración de la tienda en el navegador. Repita el mismo paso para Escaparate.
En la administración de la tienda, seleccione la pestaña de productos y después Agregar productos.
Cuando "ai-service" se ejecuta correctamente, debería ver el botón Preguntar a OpenAI junto al campo de descripción. Rellene el nombre, el precio y las palabras clave y, después, seleccione Preguntar a OpenAIGuardar producto para generar una descripción del producto.
Captura de pantalla de cómo usar openAI para generar la descripción de un producto.
Ahora puede ver el nuevo producto que ha creado en Administración de la tienda usado por los vendedores. En la imagen, puede ver que se agrega el collar inteligente de perro.
Captura de pantalla en la que se ve el nuevo producto en la página de administración de la tienda.
También puede ver el nuevo producto que ha creado en el Escaparate usado por los compradores. En la imagen, puede ver que se agrega el collar inteligente de perro. No olvide obtener la dirección IP del escaparate mediante el comando.
Captura de pantalla en la que se ve el nuevo producto en la página de escaparate de la tienda.
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:
- documentación de Azure OpenAI Service
- Introducción a Azure OpenAI Services
- Plataforma OpenAI
- Project Miyagi - Ejemplo de visualización para stack de Copilot