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
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Installieren Sie die Azure CLI, und melden Sie sich mithilfe des Befehls az login bei der Azure CLI an.
- Installieren Sie Docker und kubectl für die Verwaltung von Containerimage- und Kubernetes-Ressourcen.
- Grundkenntnisse im Zusammenhang mit Containern und AKS. Informationen zu den ersten Schritten finden Sie unter Tutorial: Vorbereiten einer Anwendung für Azure Kubernetes Service (AKS).
Erstellen von Azure-Ressourcen
Erstellen Sie eine Ressourcengruppe für dieses Tutorial.
az group create \ --name MyResourceGroup \ --location eastus
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
Stellen Sie mithilfe des folgenden Befehls eine Verbindung mit dem Cluster her:
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster
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
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.
Öffnen Sie Ihren Kubernetes-Dienst im Azure-Portal, und wählen Sie im linken Menü die Option Dienstconnector aus.
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 Nach Erstellung der Verbindung werden auf der Seite „Dienstconnector“ Informationen zu der neuen Verbindung angezeigt.
Testen der Verbindung
Klonen Sie das Beispielrepository:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Navigieren Sie zum Beispielordner des Repositorys für Azure Key Vault:
cd serviceconnector-aks-samples/azure-keyvault-csi-provider
Ersetzen Sie die Platzhalter in der Datei
secret_provider_class.yaml
im Ordnerazure-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 desazureKeyvaultSecretsProvider
-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
.
- Ersetzen Sie
Stellen Sie die Kubernetes-Ressourcen mit dem Befehl
kubectl apply
in Ihrem Cluster bereit. Installieren Siekubectl
bei Bedarf mithilfe des Befehls az aks install-cli manuell.- Stellen Sie die
SecretProviderClass
-CRD bereit.
kubectl apply -f secret_provider_class.yaml
- Stellen Sie
pod
bereit. Der Befehl erstellt einen Pod namenssc-demo-keyvault-csi
im Standardnamespace Ihres AKS-Clusters.
kubectl apply -f pod.yaml
- Stellen Sie die
Überprüfen Sie, ob die Bereitstellung erfolgreich war, indem Sie den Pods mithilfe von
kubectl
anzeigen:kubectl get pod/sc-demo-keyvault-csi
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.