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 u 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. Empieza implementando un clúster de AKS en tu 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. Aquí se usan por simplicidad, 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, veaDemostración de la Tienda AKS.
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 Azure OpenAI o el servicio OpenAI.
- Si planea usar el servicio Azure OpenAI, debe solicitar acceso para habilitarlo en la suscripción de Azure mediante el formulario Solicitar acceso a Azure OpenAI Service.
- Si planea usar OpenAI, regístrese en el sitio web de OpenAI.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la 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 Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la 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 de Azure es un contenedor lógico en el que se implementan y administran recursos de Azure. 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 donde se ejecutan los recursos en Azure si no se 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 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.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. 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 necesita permisos elevados, puede usar el comando
sudo az aks install-cli.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. 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
kubectl get. 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
En el manifiesto de Aplicación de tienda de AKS se incluyen 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 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. Aquí se usan por simplicidad, pero se recomienda usar servicios administrados, como Azure CosmosDB o Azure Service Bus.
Revise el manifiesto de YAML de 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.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 u OpenAI y ejecutar la aplicación en AKS.
- En Azure Portal, cree una instancia de Azure OpenAI.
- Vaya a la instancia de Azure OpenAI que creó.
- En la hoja Información general , vaya al portal de Azure AI Foundry.
- Cree una nueva implementación de chat con el modelo base gpt-4o-mini .
Para más información sobre cómo crear una implementación en Azure OpenAI, vea Introducción a la generación de texto mediante Azure OpenAI Service.
Implementación del servicio de IA
Ahora que la aplicación está implementada, puede implementar el microservicio basado en Python que usa OpenAI para generar automáticamente descripciones de los nuevos productos que se agregan al catálogo de la tienda.
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: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
USE_AZURE_OPENAIen"True".Obtenga el nombre de la implementación de Azure OpenAI en Estudio de Azure OpenAI y rellene el valor
AZURE_OPENAI_DEPLOYMENT_NAME.Obtenga el punto de conexión de Azure OpenAI y la clave de la API de Azure OpenAI desde Azure Portal; para ello, haga clic en Claves y punto de conexión en el panel izquierdo del recurso. Actualice
AZURE_OPENAI_ENDPOINTyOPENAI_API_KEYen YAML en consecuencia.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
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, use Identidad administrada para autenticarse en el servicio Azure OpenAI en su lugar o almacenar los secretos en 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.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 OpenAI>Guardar producto para generar una descripción del 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.
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
kubectl get service.
Pasos siguientes
Ahora que ha agregado la funcionalidad de OpenAI a una aplicación de AKS, puede proteger 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: