Freigeben über


Tutorial: Verwenden des Azure Key Vault-Anbieters für den Secrets Store CSI-Treiber in einem Azure Kubernetes Service-Cluster (AKS)

Hier erfahren Sie, wie Sie unter Verwendung des CSI-Treibers in einem AKS-Cluster (Azure Kubernetes Service) mithilfe des Dienstconnectors eine Verbindung mit Azure Key Vault herstellen. In diesem Tutorial führen Sie die folgenden Aufgaben durch:

  • Erstellen eines AKS-Clusters und einer Azure Key Vault-Instanz
  • Herstellen einer Verbindung zwischen dem AKS-Cluster und der Azure Key Vault-Instanz mit dem Dienstconnector
  • Erstellen einer SecretProviderClass-CRD und eines Pods (pod), der den CSI-Anbieter zum Testen der Verbindung verwendet
  • Bereinigen der Ressourcen

Wichtig

Service Connect in AKS befindet sich derzeit in der Vorschau. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Warnung

Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.

Voraussetzungen

Erstellen von Azure-Ressourcen

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

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. Erstellen Sie mithilfe des folgenden Befehls einen AKS-Cluster, oder sehen Sie sich das entsprechende Tutorial an. In diesem Cluster erstellen Sie die Dienstverbindung und die Poddefinition und stellen die Beispielanwendung bereit.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  3. Stellen Sie mithilfe des folgenden Befehls eine Verbindung mit dem Cluster her:

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. Erstellen Sie mithilfe des folgenden Befehls eine Azure Key Vault-Instanz, oder sehen Sie sich das entsprechende Tutorial an. Dies ist der Zieldienst, der mit dem AKS-Cluster verbunden ist und über den der CSI-Treiber Geheimnisse synchronisiert.

    az keyvault create \
        --resource-group MyResourceGroup \  
        --name MyKeyVault \
        --location EastUS
    
  5. Erstellen Sie mit dem folgenden Befehl ein Geheimnis in Key Vault:

    az keyvault secret set \
        --vault-name MyKeyVault \
        --name ExampleSecret \
        --value MyAKSExampleSecret
    

Erstellen einer Dienstverbindung in AKS mit dem Dienstconnector (Vorschau)

Erstellen Sie über das Azure-Portal oder mithilfe der Azure CLI eine Dienstverbindung zwischen einem AKS-Cluster und einer Azure Key Vault-Instanz.

  1. Öffnen Sie Ihren Kubernetes-Dienst im Azure-Portal, und wählen Sie im linken Menü die Option Dienstconnector aus.

  2. Wählen Sie Erstellen aus, und geben Sie die Einstellungen wie unten gezeigt ein. Behalten Sie bei den anderen Einstellungen die Standardwerte bei.

    Einstellung Option Beschreibung
    Kubernetes-Namespace default Der Namespace, in dem Sie die Verbindung im Cluster benötigen
    Diensttyp Key Vault (CSI aktivieren) Wählen Sie Key Vault als Zieldiensttyp aus, und aktivieren Sie die Option, um CSI zu aktivieren.
    Verbindungsname keyvault_conn Verwenden Sie den vom Dienstconnector bereitgestellten Verbindungsnamen, oder wählen Sie Ihren eigenen Verbindungsnamen aus.
    Abonnement <MySubscription> Das Abonnement für Ihren Azure Key Vault-Zieldienst
    Key vault <MyKeyVault> Der Zielschlüsseltresor, 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
  3. Nach Erstellung der Verbindung werden auf der Seite „Dienstconnector“ Informationen zu der neuen Verbindung angezeigt.

    Screenshot: Azure-Portal mit vom Dienstconnector erstellten Kubernetes-Ressourcen

Testen der Verbindung

  1. Klonen Sie das Beispielrepository:

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

    cd serviceconnector-aks-samples/azure-keyvault-csi-provider
    
  3. Ersetzen Sie die Platzhalter in der Datei secret_provider_class.yaml im Ordner azure-keyvault-csi-provider.

    • Ersetzen Sie <AZURE_KEYVAULT_NAME> durch den Namen des von Ihnen erstellten und verbundenen Schlüsseltresors. Sie können den Wert aus dem Azure-Portal des Dienstconnectors abrufen.
    • Ersetzen Sie <AZURE_KEYVAULT_TENANTID> durch die Mandanten-ID des Schlüsseltresors. Sie können den Wert aus dem Azure-Portal des Dienstconnectors abrufen.
    • Ersetzen Sie <AZURE_KEYVAULT_CLIENTID> durch die Identitätsclient-ID des azureKeyvaultSecretsProvider-Add-Ons. Sie können den Wert aus dem Azure-Portal des Dienstconnectors abrufen.
    • Ersetzen Sie <KEYVAULT_SECRET_NAME> durch den von Ihnen erstellten Key Vault-Geheimnisnamen, z. B. ExampleSecret.
  4. Stellen Sie die Kubernetes-Ressourcen mit dem Befehl kubectl apply in Ihrem Cluster bereit. Installieren Sie kubectl bei Bedarf mithilfe des Befehls az aks install-cli manuell.

    1. Stellen Sie die SecretProviderClass-CRD bereit.
    kubectl apply -f secret_provider_class.yaml
    
    1. Stellen Sie pod bereit. Der Befehl erstellt einen Pod namens sc-demo-keyvault-csi im Standardnamespace Ihres AKS-Clusters.
    kubectl apply -f pod.yaml
    
  5. Überprüfen Sie, ob die Bereitstellung erfolgreich war, indem Sie den Pods mithilfe von kubectl anzeigen:

    kubectl get pod/sc-demo-keyvault-csi
    
  6. Nachdem der Pod gestartet wurde, ist der eingebundene Inhalt unter dem in Ihrer Bereitstellungs-YAML angegebenen Volumepfad verfügbar. Verwenden Sie die folgenden Befehle, um Ihre Geheimnisse zu überprüfen und ein Testgeheimnis auszudrucken.

    • Zeigen Sie mit dem folgenden Befehl Geheimnisse im Geheimnisspeicher an.
    kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
    
    • Zeigen Sie mit dem folgenden Befehl ein Geheimnis im Speicher an. Mit diesem Beispielbefehl wird das Testgeheimnis ExampleSecret angezeigt.
    kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
    

Bereinigen von Ressourcen

Wenn Sie die in diesem Tutorial erstellten Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe, um alle erstellten Ressourcen zu 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.