Implantar um aplicativo que usa OpenAI no Serviço Kubernetes do Azure (AKS)
Neste artigo, você aprenderá a implantar um aplicativo que usa o Azure OpenAI ou OpenAI no AKS. Com o OpenAI, você pode facilmente adaptar diferentes modelos de IA, como geração de conteúdo, sumarização, pesquisa semântica e linguagem natural para geração de código, para suas tarefas específicas. Você começa implantando um cluster AKS em sua assinatura do Azure. Em seguida, você implanta seu serviço OpenAI e o aplicativo de exemplo.
O aplicativo nativo da nuvem de exemplo é representativo de implementações do mundo real. O aplicativo de vários contêineres é composto por aplicativos escritos em várias linguagens e estruturas, incluindo:
- Golang com Gin
- Ferrugem com Actix-Web
- JavaScript com Vue.js e Fastify
- Python com FastAPI
Esses aplicativos fornecem front-ends para clientes e administradores de loja, APIs REST para enviar dados para a fila de mensagens RabbitMQ e banco de dados MongoDB e aplicativos de console para simular tráfego.
Nota
Não recomendamos a execução de contêineres com monitoração de estado, como MongoDB e Rabbit MQ, sem armazenamento persistente para produção. Nós os usamos aqui para simplificar, mas recomendamos o uso de serviços gerenciados, como o Azure CosmosDB ou o Azure Service Bus.
Para acessar a base de código do GitHub para o aplicativo de exemplo, consulte AKS Store Demo.
Antes de começar
- Você precisa de uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuitamente.
- Para esta demonstração, você pode usar o serviço OpenAI do Azure ou o serviço OpenAI.
- Se você planeja usar o serviço Azure OpenAI, precisará solicitar acesso para habilitá-lo em sua assinatura do Azure usando o formulário Solicitar acesso ao Serviço OpenAI do Azure.
- Se você planeja usar o OpenAI, inscreva-se no site do OpenAI.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Criar um grupo de recursos
Um grupo de recursos do Azure é um grupo lógico no qual você implanta e gerencia recursos do Azure. Ao criar um grupo de recursos, você será solicitado a especificar um local. Esse local é o local de armazenamento dos metadados do grupo de recursos e onde os recursos são executados no Azure se você não especificar outra região durante a criação do recurso.
O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.
Crie um grupo de recursos usando o
az group create
comando.az group create --name myResourceGroup --location eastus
O exemplo de saída a seguir mostra a criação bem-sucedida do grupo de recursos:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Criar um cluster do AKS
O exemplo a seguir cria um cluster chamado myAKSCluster em myResourceGroup.
Crie um cluster AKS usando o
az aks create
comando.az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
Após alguns minutos, o comando conclui e retorna informações formatadas em JSON sobre o cluster.
Ligar ao cluster
Para gerenciar um cluster Kubernetes, use o cliente de linha de comando Kubernetes, kubectl. kubectl
já está instalado se você usar o Azure Cloud Shell.
Instale
kubectl
localmente usando oaz aks install-cli
comando.az aks install-cli
Nota
Se o seu sistema baseado em Linux requer permissões elevadas, você pode usar o
sudo az aks install-cli
comando.Configure
kubectl
para se conectar ao cluster do Kubernetes usando oaz aks get-credentials
comando.Este comando executa as seguintes operações:
- Baixa credenciais e configura a CLI do Kubernetes para usá-las.
- Usa
~/.kube/config
, o local padrão para o arquivo de configuração do Kubernetes. Especifique um local diferente para o arquivo de configuração do Kubernetes usando o argumento --file .
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verifique a conexão com o cluster usando o
kubectl get
comando. Este comando retorna uma lista dos nós do cluster.kubectl get nodes
O exemplo de saída a seguir mostra os nós criados nas etapas anteriores. Verifique se o status do nó é Pronto.
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 clusters privados, os nós podem ficar inacessíveis se você tentar se conectar a eles por meio do endereço IP público. Para corrigir isso, você precisa criar um ponto de extremidade dentro da mesma VNET que o cluster para se conectar. Siga as instruções para Criar um cluster AKS privado e, em seguida, conecte-se a ele.
Implementar a aplicação
O manifesto do aplicativo AKS Store inclui as seguintes implantações e serviços do Kubernetes:
- Serviço do produto: Mostra as informações do produto.
- Serviço de pedidos: Faz pedidos.
- Serviço Makeline: Processa pedidos da fila e conclui os pedidos.
- Vitrine: aplicativo Web para que os clientes visualizem produtos e façam pedidos.
- Store admin: aplicativo Web para funcionários da loja visualizarem pedidos na fila e gerenciarem informações do produto.
- Cliente virtual: Simula a criação de pedidos de forma programada.
- Trabalhador virtual: simula a conclusão do pedido de forma programada.
- Mongo DB: instância NoSQL para dados persistentes.
- Rabbit MQ: Fila de mensagens para uma fila de pedidos.
Nota
Não recomendamos a execução de contêineres com monitoração de estado, como MongoDB e Rabbit MQ, sem armazenamento persistente para produção. Nós os usamos aqui para simplificar, mas recomendamos o uso de serviços gerenciados, como o Azure CosmosDB ou o Azure Service Bus.
Implante o aplicativo usando o
kubectl apply
comando e especifique o nome do seu manifesto YAML.kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
A saída de exemplo a seguir mostra as implantações e serviços criados com êxito:
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
Implante o OpenAI
Você pode usar o Azure OpenAI ou OpenAI e executar seu aplicativo no AKS.
- Habilite o Azure OpenAI em sua assinatura do Azure preenchendo o formulário Solicitar acesso ao Serviço OpenAI do Azure.
- No portal do Azure, crie uma instância do Azure OpenAI.
- Selecione a instância do Azure OpenAI que você criou.
- Selecione Chaves e Pontos de extremidade para gerar uma chave.
- Selecione Model Deployments>Managed Deployments para abrir o estúdio do Azure OpenAI.
- Crie uma nova implantação usando o modelo gpt-35-turbo .
Para obter mais informações sobre como criar uma implantação no Azure OpenAI, consulte Introdução à geração de texto usando o Serviço OpenAI do Azure.
Implantar o serviço de IA
Agora que o aplicativo está implantado, você pode implantar o microsserviço baseado em Python que usa OpenAI para gerar automaticamente descrições para novos produtos que estão sendo adicionados ao catálogo da loja.
Crie um arquivo nomeado
ai-service.yaml
e copie no seguinte manifesto: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-service
Defina a variável
USE_AZURE_OPENAI
de ambiente como"True"
.Obtenha seu nome de implantação do Azure OpenAI do estúdio do Azure OpenAI e preencha o
AZURE_OPENAI_DEPLOYMENT_NAME
valor.Obtenha seu ponto de extremidade do Azure OpenAI e a chave da API do Azure OpenAI no portal do Azure selecionando Chaves e Ponto de Extremidade na folha esquerda do recurso. Atualize o
AZURE_OPENAI_ENDPOINT
eOPENAI_API_KEY
no YAML de acordo.Implante o aplicativo usando o
kubectl apply
comando e especifique o nome do seu manifesto YAML.kubectl apply -f ai-service.yaml
A saída de exemplo a seguir mostra as implantações e serviços criados com êxito:
deployment.apps/ai-service created service/ai-service created
Nota
Adicionar diretamente informações confidenciais, como chaves de API, aos seus arquivos de manifesto do Kubernetes não é seguro e pode ser acidentalmente confirmado em repositórios de código. Nós o adicionamos aqui para simplificar. Para cargas de trabalho de produção, use a Identidade Gerenciada para autenticar no serviço Azure OpenAI ou armazenar seus segredos no Cofre da Chave do Azure.
Testar a aplicação
Verifique o status dos pods implantados usando o comando kubectl get pods .
kubectl get pods
Certifique-se de que todos os pods estão em execução antes de continuar para a próxima etapa.
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 99s
Obtenha o IP do aplicativo Web de administração da loja e do aplicativo Web da frente da loja usando o
kubectl get service
comando.kubectl get service store-admin
O aplicativo expõe o site de administração da loja à internet por meio de um balanceador de carga público provisionado pelo serviço Kubernetes. Este processo pode demorar alguns minutos a concluir. IP EXTERNO inicialmente mostra pendente até que o serviço aparece e mostra o endereço IP.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-admin LoadBalancer 10.0.142.228 40.64.86.161 80:32494/TCP 50m
Repita a mesma etapa para o serviço chamado 'store-front''.
Abra um navegador da Web e navegue até o endereço IP externo do seu serviço. No exemplo mostrado aqui, abra 40.64.86.161 para ver o administrador da loja no navegador. Repita o mesmo passo para a frente da loja.
No administrador da loja, selecione a guia produtos e, em seguida, selecione Adicionar produtos.
Quando o 'ai-service'' estiver sendo executado com sucesso, você verá o botão Ask OpenAI ao lado do campo de descrição. Preencha o nome, o preço e as palavras-chave e, em seguida, gere uma descrição do produto selecionando Pedir produto OpenAI>Save.
Agora você pode ver o novo produto que você criou no Administrador da Loja usado pelos vendedores. Na imagem, você pode ver Jungle Monkey Chew Toy é adicionado.
Você também pode ver o novo produto que você criou na vitrine usada pelos compradores. Na imagem, você pode ver Jungle Monkey Chew Toy é adicionado. Lembre-se de obter o endereço IP da frente da loja usando o
kubectl get service
comando.
Próximos passos
Agora que adicionou a funcionalidade OpenAI a uma aplicação AKS, pode Proteger o acesso ao Azure OpenAI a partir do Serviço Kubernetes do Azure (AKS).
Para saber mais sobre casos de uso de IA generativa, consulte os seguintes recursos:
Azure Kubernetes Service