Lernprogramm: Herstellen einer Verbindung mit Azure Storage in AKS mithilfe von Service Connector mit Workload-Identität

In diesem Lernprogramm erfahren Sie, wie Sie mithilfe von Service Connector ein Azure Storage Konto mit einem Pod in einem Azure Kubernetes Service (AKS) Cluster mithilfe der Workloadidentität verbinden. Sie führen die folgenden Aufgaben durch:

  • Erstellen Sie einen AKS-Cluster und ein Azure Storage Konto.
  • Erstellen Sie eine Verbindung zwischen dem AKS-Cluster und dem Azure Storage Konto mithilfe von Service Connector.
  • Klonen Sie eine Beispielanwendung, die eine Verbindung mit dem Azure Storage Konto aus dem AKS-Cluster herstellt.
  • Stellen Sie die Anwendung auf einem Pod im AKS-Cluster bereit, und testen Sie die Verbindung.
  • Bereinigen der Ressourcen

Voraussetzungen

Erstellen von Azure-Ressourcen

  1. Melden Sie sich bei Azure an, indem Sie az login ausführen und den Anweisungen folgen.

  2. Erstellen Sie eine Azure-Ressourcengruppe für dieses Lernprogramm, und ersetzen Sie den Platzhalter <region> durch einen gültigen Wert. Die location muss eine Azure-Region sein, in der Ihr Abonnement über ein ausreichendes Rechenkontingent für die Azure-Ressourcen verfügt und keine Einschränkungen für die Dienste bestehen.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Erstellen Sie einen AKS-Cluster, der die Dienstverbindung, die Poddefinition und die Beispielanwendung enthält, indem Sie den folgenden Befehl ausführen. Weitere Informationen finden Sie unter Quickstart: Bereitstellen eines Azure Kubernetes Service (AKS) Clusters mithilfe von Azure CLI.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Stellen Sie eine Verbindung mit dem Cluster her, indem Sie den folgenden Befehl ausführen.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. Erstellen Sie ein Azure Storage Konto, um der Zieldienst zu sein, mit dem der AKS-Cluster eine Verbindung herstellt und mit der Beispielanwendung interagiert. Weitere Informationen finden Sie unter Create an Azure storage account. Führen Sie den folgenden Befehl aus, und ersetzen Sie <storageaccountname> durch einen Namen mit 3 bis 24 Kleinbuchstaben oder numerischen Zeichen, der für Azure eindeutig ist.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Erstellen Sie eine Azure-Containerregistrierung, um das Anwendungscontainerimage zu hosten, das von der AKS-Poddefinition verwendet wird. Weitere Informationen finden Sie unter Quickstart: Erstellen einer Azure Containerregistrierung mithilfe des Azure Portals. Führen Sie den folgenden Befehl aus, und ersetzen Sie <registryname> durch einen Namen, der aus 5 bis 50 Buchstaben in Kleinbuchstaben oder numerischen Zeichen besteht und in Azure eindeutig ist.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Aktivieren Sie anonyme Pullvorgänge, damit die Registrierungsimages vom AKS-Cluster genutzt werden können. Ersetzen Sie den <registryname> Platzhalter durch Ihren Registrierungsnamen.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Führen Sie den folgenden Befehl aus, um eine vom Benutzer zugewiesene verwaltete Identität zu erstellen, die bei der Erstellung der Dienstverbindung verwendet werden kann, um die Workload-Identität für AKS-Workloads zu aktivieren. Weitere Informationen finden Sie unter Manage von vom Benutzer zugewiesenen verwalteten Identitäten mithilfe des Azure Portals.

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

Herstellen einer Dienstverbindung mit dem Dienstconnector

Erstellen Sie eine Dienstverbindung zwischen dem AKS-Cluster und dem Azure Storage Konto mithilfe von Azure CLI oder dem Azure-Portal.

Führen Sie den folgenden Azure CLI Befehl aus, um eine Dienstverbindung mit dem Azure Speicherkonto zu erstellen. Ersetzen Sie `<storageaccountname>` durch den Namen Ihres Speicherkontos und `<user-identity-resource-id>` durch Ihre vom Benutzer zugewiesene verwaltete Identitätsressourcen-ID.

Sie können ihre vom Benutzer zugewiesene verwaltete Identitätsressourcen-ID aus der Ausgabe des vorherigen Befehls az identity create abrufen oder das Format /subscriptions/<subscription-id>/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyIdentity verwenden.

az aks connection create storage-blob \
  --resource-group MyResourceGroup \
  --name MyAKSCluster \
  --target-resource-group MyResourceGroup \
  --account <storageaccountname> \
  --workload-identity <user-identity-resource-id>

Sobald die Verbindung erstellt wurde, zeigt die Seite des Azure-Portals für den Service Connector Informationen zur neuen Verbindung an. Sie können diese Informationen verwenden, wenn Sie die Datei "pod.yaml " weiter unten in diesem Lernprogramm bearbeiten.

Screenshot des Azure-Portals, auf dem die Kubernetes-Ressourcen angezeigt werden, die von Service Connector erstellt wurden.

Erstellen der Beispielanwendung

  1. Klonen Sie das Beispielrepository, und wechseln Sie dann in das Verzeichnis, das die Beispiel-App enthält. Führen Sie die verbleibenden Befehle aus diesem Ordner aus.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. Erstellen und senden Sie die Images mittels des Befehls az acr build an die Containerregistrierung. Ersetzen Sie den <registryname> Platzhalter durch Ihren Registrierungsnamen.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Zeigen Sie das Image in Ihrer Containerregistrierung mithilfe des az acr repository list Befehls an. Ersetzen Sie den <registryname> Platzhalter durch Ihren Registrierungsnamen.

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

Ausführen der Anwendung und Testen der Verbindung

  1. Ersetzen Sie die folgenden Platzhalter in der Datei "pod.yaml " in Ihrem lokalen App-Ordner:

    • <YourContainerImage>: Ersetzen Sie den Image-Namen in Ihrer Container-Registrierung, z. B. <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: Ersetzen Sie dies durch den Dienstkonto-Dienstconnector, der nach der Verbindungserstellung erstellt wurde. Sie können den Dienstkontonamen auf Der Seite "AKS Cluster Service Connector" im Azure-Portal überprüfen.
    • <SecretCreatedByServiceConnector>: Ersetzen Sie dies durch den Geheimnis-Dienstconnector, der nach der Verbindungserstellung erstellt wurde. Sie können den Dienstkontonamen auf Der Seite "AKS Cluster Service Connector" im Azure-Portal überprüfen.
  2. Stellen Sie den Pod mittels kubectl apply auf Ihrem Cluster bereit. Der Befehl erstellt einen Pod namens sc-demo-storage-identity im Standardnamespace Ihres AKS-Clusters.

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

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

    kubectl logs pod/sc-demo-storage-identity
    

Bereinigen von Ressourcen

Wenn Sie die für dieses Lernprogramm erstellten Azure Ressourcen nicht mehr benötigen, können Sie sie löschen, indem Sie die Ressourcengruppe MyResourceGroup löschen.

az group delete \
  --resource-group MyResourceGroup