Esercitazione: connettersi al servizio OpenAI di Azure nel servizio Azure Kubernetes usando l'identità del carico di lavoro (anteprima)

Questa esercitazione illustra come creare un pod in un cluster Azure Kubernetes (AKS), che comunica con il servizio Azure OpenAI usando l'identità del carico di lavoro e il connettore di servizi. In questa esercitazione si completano le attività seguenti:

  • Creare un cluster del servizio Azure Kubernetes e un servizio OpenAI di Azure con gpt-4 distribuzione del modello.
  • Creare una connessione tra il cluster del servizio Azure Kubernetes e Azure OpenAI con connettore di servizi.
  • Clonare un'applicazione di esempio che comunicherà al servizio Azure OpenAI da un cluster del servizio Azure Kubernetes.
  • Distribuire l'applicazione in un pod nel cluster del servizio Azure Kubernetes e testare la connessione.
  • Pulire le risorse.

Prerequisiti

Creare risorse Azure

Per iniziare questa esercitazione, creare diverse risorse di Azure.

  1. Creare un gruppo di risorse per questa esercitazione.

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. Creare un cluster del servizio Azure Kubernetes con il comando seguente oppure facendo riferimento alla guida introduttiva Avvio rapido servizio Azure Kubernetes. In questa esercitazione viene creata la connessione al servizio e la definizione del pod e viene distribuita l'applicazione di esempio in questo cluster.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
        --generate-ssh-keys
    
  3. Connettersi al cluster servizio Azure Kubernetes usando il comando az servizio Azure Kubernetes get-credentials.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. Creare una risorsa del servizio Azure OpenAI usando il comando az cognitiveservices account create. Facoltativamente, fare riferimento a questa esercitazione per altre istruzioni. Il servizio OpenAI di Azure è il servizio di destinazione che verrà connesso al cluster del servizio Azure Kubernetes.

    az cognitiveservices account create \
        --resource-group MyResourceGroup \
        --name MyOpenAIService \
        --location eastus \
        --kind OpenAI \
        --sku s0 \
        --custom-domain myopenaiservice \
        --subscription <SubscriptionID>
    
  5. Distribuire un modello con il comando az cognitiveservices deployment create . Il modello viene usato nell'applicazione di esempio per testare la connessione.

    az cognitiveservices account deployment create \
        --resource-group MyResourceGroup \
        --name MyOpenAIService
        --deployment-name MyModel \
        --model-name gpt-4 \
        --model-version 0613 \
        --model-format OpenAI \
        --sku-name "Standard"
        --capacity 1
    
  6. Creare una risorsa di Registro Azure Container con il comando az acr create o fare riferimento a questa esercitazione. Il Registro di sistema ospita l'immagine del contenitore dell'applicazione di esempio usata dalla definizione del pod del servizio Azure Kubernetes.

    az acr create \
        --resource-group MyResourceGroup \
        --name myregistry \
        --sku Standard
    
  7. Abilitare il pull anonimo usando il comando az acr update in modo che il cluster del servizio Azure Kubernetes possa usare le immagini nel Registro di sistema.

    az acr update \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --anonymous-pull-enabled
    
  8. Creare un'identità gestita assegnata dall'utente con il comando az identity create o facendo riferimento a questa esercitazione. Quando viene creata la connessione, l'identità gestita assegnata dall'utente viene usata per abilitare l'identità del carico di lavoro per i carichi di lavoro del servizio Azure Kubernetes.

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

Creare una connessione al servizio nel servizio Azure Kubernetes con connettore di servizi (anteprima)

Creare una connessione al servizio tra un cluster del servizio Azure Kubernetes e il servizio Azure OpenAI nel portale di Azure o nell'interfaccia della riga di comando di Azure.

Per istruzioni su come creare una nuova connessione e compilare le impostazioni che fanno riferimento agli esempi nella tabella seguente, vedere la guida introduttiva all’avvio rapido della connessione al servizio Azure Kubernetes. Per tutte le altre impostazioni lasciare i valori predefiniti.

  1. Scheda Generale:

    Impostazione Valore di esempio Descrizione
    Spazio dei nomi Kubernetes default Spazio dei nomi Kubernetes.
    Tipo di servizio Servizio OpenAI Tipo di servizio di destinazione.
    Nome connessione openai_conn Usare il nome della connessione fornito dal connettore di servizi o selezionare il proprio nome di connessione.
    Abbonamento <MySubscription> Sottoscrizione usata per il Servizio OpenAI di Azure.
    OpenAI <MyOpenAIService> Il servizio OpenAI di Azure di destinazione a cui ci si vuole connettere.
    Tipo client Python Linguaggio di codice o framework usato per connettersi al servizio di destinazione.
  2. Scheda Authentication (Autenticazione):

    impostazione di autenticazione Valore di esempio Descrizione
    Tipo di autenticazione Identità del carico di lavoro Tipo di autenticazione di connettore di servizi.
    Abbonamento <MySubscription> Sottoscrizione contenente l'identità gestita assegnata dall'utente.
    Identità gestita assegnata dall'utente <MyIdentity> Per abilitare l'identità del carico di lavoro è necessaria un'identità gestita assegnata dall'utente.

Dopo aver creato la connessione, è possibile visualizzarne i dettagli nel riquadro Connettore di servizi.

Clonare l'applicazione di esempio

  1. Clonare il repository di esempio:

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. Passare alla cartella di esempio del repository per Azure OpenAI:

    cd serviceconnector-aks-samples/azure-openai-workload-identity
    
  3. Sostituire il <MyModel>segnaposto nel app.pyfile con il nome del modello distribuito.

Compilare ed eseguire il push di immagini del contenitore

  1. Compilare ed eseguire il push delle immagini nel Registro Azure Container usando il comando dell'interfaccia della riga di comando di Azure az acr build.

    az acr build --registry <MyRegistry> --image sc-demo-openai-identity:latest ./
    
  2. Visualizzare le immagini nell'istanza di Registro Azure Container usando il comando az acr repository list.

    az acr repository list --name <MyRegistry> --output table
    

Eseguire l'applicazione e testare la connessione

  1. Sostituire i segnaposto nel file pod.yaml nella cartella azure-openai-workload-identity.

    • Sostituire <YourContainerImage> con il nome dell'immagine creata in precedenza. Ad esempio: <MyRegistry>.azurecr.io/sc-demo-openai-identity:latest.
    • Sostituire <ServiceAccountCreatedByServiceConnector> con l'account del servizio creato da connettore di servizi dopo la creazione della connessione. È possibile controllare il nome dell'account del servizio nel portale di Azure nel riquadro Connettore di servizi.
    • Sostituire <SecretCreatedByServiceConnector> con il segreto creato da connettore di servizi dopo la creazione della connessione. È possibile controllare il nome del segreto nel portale di Azure nel riquadro Connettore di servizi.
  2. Distribuire il pod nel cluster con il comando kubectl apply, che crea un pod denominato sc-demo-openai-identity nello spazio dei nomi predefinito del cluster del servizio Azure Kubernetes. Per installare kubectl in locale, usare il comando az aks install-cli se non è installato.

    kubectl apply -f pod.yaml
    
  3. Controllare se la distribuzione ha avuto esito positivo visualizzando il pod con kubectl.

    kubectl get pod/sc-demo-openai-identity
    
  4. Verificare che la connessione venga stabilita visualizzando i log con kubectl.

    kubectl logs pod/sc-demo-openai-identity
    

Pulire le risorse

Se le risorse create in questa esercitazione non sono più necessarie, eliminarle eliminando il gruppo di risorse.

az group delete \
    --resource-group MyResourceGroup

Passaggi successivi

Leggere gli articoli seguenti per altre informazioni sui concetti di connettore di servizi e su come consente al servizio Azure Kubernetes di connettersi ai servizi.