Tutorial: Herstellen einer Verbindung mit dem Azure OpenAI-Dienst in AKS mithilfe von Workload Identity (Vorschau)

In diesem Tutorial erfahren Sie, wie Sie einen Pod in einem Azure Kubernetes (AKS)-Cluster erstellen, der mit dem Azure OpenAI-Dienst unter Verwendung der Workloadidentität und des Service Connector kommuniziert. In diesem Tutorial führen Sie die folgenden Aufgaben durch:

  • Erstellen Sie ein AKS-Cluster und einen Azure OpenAI-Dienst mit gpt-4-Modellimplementierung.
  • Erstellen Sie eine Verbindung zwischen dem AKS-Cluster und Azure OpenAI mit Service Connector.
  • Klonen Sie eine Beispielanwendung, die mit dem Azure OpenAI-Dienst von einem AKS-Cluster kommuniziert.
  • Bereitstellen der Anwendung in einem Pod im AKS-Cluster und Testen der Verbindung
  • Bereinigen der Ressourcen

Voraussetzungen

Erstellen von Azure-Ressourcen

Sie beginnen dieses Tutorial, indem Sie mehrere Azure-Ressourcen erstellen.

  1. Erstellen Sie eine Ressourcengruppe für dieses Tutorial.

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. Erstellen Sie ein AKS-Cluster mit dem folgenden Befehl, oder verweisen Sie auf AKS-Schnellstart. In diesem Tutorial erstellen wir die Dienstverbindungs- und Poddefinition und stellen die Beispielanwendung für dieses Cluster bereit.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
        --generate-ssh-keys
    
  3. Stellen Sie mithilfe des Befehls azks get-credentials eine Verbindung mit dem Cluster her.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. Erstellen Sie eine Azure OpenAI Service-Ressource mit dem Befehl az cognitiveservices account create. Optional finden Sie in diesem Tutorial weitere Anweisungen. Azure OpenAI Service ist der Zieldienst, den wir mit dem AKS-Cluster verbinden.

    az cognitiveservices account create \
        --resource-group MyResourceGroup \
        --name MyOpenAIService \
        --location eastus \
        --kind OpenAI \
        --sku s0 \
        --custom-domain myopenaiservice \
        --subscription <SubscriptionID>
    
  5. Stellen Sie ein Modell mit dem Befehl az cognitiveservices-Bereitstellung erstellen bereit. Das Modell wird in der Beispielanwendung verwendet, um die Verbindung zu testen.

    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. Erstellen Sie eine Azure Container Registry (ACR)-Ressource mit dem Befehl az acr erstellen oder verweisen Sie auf dieses Tutorial. Die Registrierung hostet das Containerimage der Beispielanwendung, die von der AKS-Poddefinition verwendet wird.

    az acr create \
        --resource-group MyResourceGroup \
        --name myregistry \
        --sku Standard
    
  7. Aktivieren Sie anonymen Pull mit dem Befehl az acr Update, damit das AKS-Cluster die Bilder in der Registrierung nutzen kann.

    az acr update \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --anonymous-pull-enabled
    
  8. Erstellen Sie eine vom Benutzer zugewiesene verwaltete Identität mit dem Befehl az identity create oder verweisen Sie auf dieses Tutorial. Wenn die Verbindung erstellt wird, wird die vom Benutzer zugewiesene verwaltete Identität verwendet, um die Workloadidentität für AKS-Workloads zu aktivieren.

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

Erstellen einer Dienstverbindung in AKS mit dem Dienstconnector (Vorschau)

Erstellen Sie eine Dienstverbindung zwischen einem AKS-Cluster und dem Azure OpenAI-Dienst im Azure-Portal oder der Azure CLI.

Anweisungen zum Erstellen einer neuen Verbindung finden Sie in der Schnellstartanleitung für die AKS-Dienstverbindung, und füllen Sie die Einstellungen aus, die sich auf die Beispiele in der folgenden Tabelle beziehen. Behalten Sie alle anderen Einstellungen mit ihren Standardwerten bei.

  1. Registerkarte Grundlagen:

    Einstellung Beispielwert Beschreibung
    Kubernetes-Namespace default Der Kubernetes-Namespace.
    Diensttyp OpenAI Service Art des Zieldiensts.
    Verbindungsname openai_conn Verwenden Sie den vom Dienstconnector bereitgestellten Verbindungsnamen, oder wählen Sie Ihren eigenen Verbindungsnamen aus.
    Abonnement <MySubscription> Das Abonnement, das für den Azure OpenAI-Dienst verwendet wird.
    OpenAI <MyOpenAIService> Der Azure OpenAI-Zieldienst, mit dem Sie eine Verbindung herstellen möchten.
    Clienttyp Python Die Codesprache oder das Framework, die bzw. das Sie zum Herstellen einer Verbindung mit dem Zieldienst verwenden.
  2. Registerkarte „Authentifizierung“:

    Authentifizierungseinstellung Beispielwert Beschreibung
    Authentifizierungstyp Workloadidentität Der Authentifizierungstyp des Dienstconnectors.
    Abonnement <MySubscription> Das Abonnement, das die vom Benutzer zugewiesene verwaltete Identität enthält.
    Benutzerseitig zugewiesene verwaltete Identität <MyIdentity> Zum Aktivieren der Workloadidentität ist eine benutzerseitig zugewiesene verwaltete Identität erforderlich.

Nachdem die Verbindung erstellt wurde, können Sie die Details im Bereich Service Connector anzeigen.

Klonen der Beispielanwendung

  1. Klonen Sie das Beispielrepository:

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. Wechseln Sie zum Beispielordner des Repositorys für Azure OpenAI:

    cd serviceconnector-aks-samples/azure-openai-workload-identity
    
  3. Ersetzen Sie den <MyModel>-Platzhalter in der app.py-Datei durch den Modellnamen, den wir bereitgestellt haben.

Erstellen und Pushen des Containerimage

  1. Erstellen und übertragen Sie die Images mithilfe des Azure CLI-Befehls az acr build an Ihre ACR.

    az acr build --registry <MyRegistry> --image sc-demo-openai-identity:latest ./
    
  2. Zeigen Sie die Bilder in Ihrer ACR-Instanz mithilfe des Befehls az acr repository list an.

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

Ausführen der Anwendung und Testen der Verbindung

  1. Ersetzen Sie die Platzhalter in der Datei pod.yaml im Ordner azure-openai-workload-identity.

    • Ersetzen Sie <YourContainerImage> durch den Namen des zuvor erstellten Images. Beispiel: <MyRegistry>.azurecr.io/sc-demo-openai-identity:latest.
    • Ersetzen Sie <ServiceAccountCreatedByServiceConnector> durch das Dienstkonto, das nach der Verbindungserstellung vom Dienstconnector erstellt wurde. Möglicherweise überprüfen Sie den Namen des Dienstkontos im Azure-Portal im Bereich Service Connector.
    • Ersetzen Sie <SecretCreatedByServiceConnector> durch das Geheimnis, das nach der Verbindungserstellung vom Dienstconnector erstellt wurde. Sie können den geheimen Namen im Azure-Portal im Bereich Service Connector überprüfen.
  2. Stellen Sie den Pod mit dem Befehl kubectl apply auf Ihrem Cluster bereit, der einen Pod namens sc-demo-openai-identity im Standardnamespace Ihres AKS-Clusters erstellt. Installieren Sie kubectl bei Bedarf mithilfe des Befehls az aks install-cli manuell.

    kubectl apply -f pod.yaml
    
  3. Überprüfen Sie, ob die Bereitstellung erfolgreich war, indem Sie den Pod mit kubectl anzeigen.

    kubectl get pod/sc-demo-openai-identity
    
  4. Überprüfen Sie, ob die Verbindung hergestellt wird, indem Sie die Protokolle mit kubectl anzeigen.

    kubectl logs pod/sc-demo-openai-identity
    

Bereinigen von Ressourcen

Wenn Sie die in diesem Tutorial erstellten Ressourcen nicht mehr benötigen, bereinigen Sie sie, indem Sie die Ressourcengruppe löschen.

az group delete \
    --resource-group MyResourceGroup

Nächste Schritte

Lesen Sie die folgenden Artikel, um mehr über Dienstconnectorkonzepte zu erfahren und sich darüber zu informieren, wie AKS Sie beim Herstellen einer Verbindung mit Diensten unterstützt.