Azure Key Vault-Anbieter für den Secrets Store CSI-Treiber für Konfigurations- und Problembehandlungsoptionen in AKS (Azure Kubernetes Service)
Führen Sie die Schritte in Verwenden des Azure Key Vault Provider for Secrets Store CSI-Treibers in einem AKS-Cluster und Bereitstellen einer Identität für den Zugriff auf den Azure Key Vault-Anbieter für den Secrets Store CSI-Treiber in AKS. Nachdem Sie diese Schritte ausgeführt haben, können Sie zusätzliche Konfigurationen anwenden oder eine Problembehandlung ausführen.
Konfigurationsoptionen
Aktivieren und Deaktivieren der automatischen Rotation
Hinweis
Wenn der Azure Key Vault Provider für den Secrets Store CSI-Treiber aktiviert ist, aktualisiert er die Podeinbindung und das Kubernetes-Geheimnis, das im secretObjects
-Feld von SecretProviderClass
definiert ist. Dies erfolgt durch regelmäßiges Abfragen von Änderungen basierend auf dem definierten Rotationsabrufintervall. Das standardmäßige Rotationsabrufintervall beträgt zwei Minuten.
Hinweis
Wenn ein Geheimnis in einem externen Geheimnisspeicher nach der ursprünglichen Podbereitstellung aktualisiert wird, werden das Kubernetes-Geheimnis und die Podeinbindung regelmäßig aktualisiert, je nachdem, wie die Anwendung die Geheimnisdaten nutzt.
Einbinden des Kubernetes-Geheimnisses als Volume: Verwenden der Funktionen für Autorotation und Synchronisierung von K8s-Geheimnissen des Secrets Store CSI-Treibers. Die Anwendung muss auf Änderungen aus dem eingebundenen Kubernetes-Geheimnisvolume achten. Wenn der CSI-Treiber das Kubernetes-Geheimnis aktualisiert, werden die entsprechenden Volumeinhalte automatisch ebenfalls aktualisiert.
Die Anwendung liest die Daten aus dem Dateisystem des Containers: Verwenden Sie die Rotationsfunktion des Secrets Store CSI-Treibers. Die Anwendung muss nach der Dateiänderung auf dem vom CSI-Treiber eingebundenen Volume Ausschau halten.
Verwenden des Kubernetes-Geheimnisses als Umgebungsvariable: Starten Sie den Pod neu, um das neueste Geheimnis als Umgebungsvariable abzurufen. Verwenden Sie ein Tool, wie etwa Reloader, um Änderungen des synchronisierten Kubernetes-Geheimnisses zu beobachten und rollierende Upgrades auf Pods auszuführen.
Aktivieren der automatischen Rotation in einem neuen AKS-Cluster
Aktivieren Sie die automatische Rotation von Geheimnissen in einem neuen Cluster mithilfe des Befehls
az aks create
, und aktivieren Sie das Add-Onenable-secret-rotation
.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Aktivieren der automatischen Rotation in einem vorhandenen AKS-Cluster
Aktualisieren Sie einen vorhandenen Cluster, um die automatische Rotation von Geheimnissen mit dem Befehl
az aks addon update
und dem Parameterenable-secret-rotation
zu aktivieren.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Angeben eines benutzerdefinierten Rotationsintervalls
Geben Sie mithilfe des Befehls
az aks addon update
mit dem Parameterrotation-poll-interval
ein benutzerdefiniertes Rotationsintervall an.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Deaktivieren der automatischen Rotation
Um die automatische Rotation zu deaktivieren, müssen Sie zunächst das Add-On deaktivieren. Anschließend können Sie das Add-On ohne den Parameter enable-secret-rotation
erneut aktivieren.
Deaktivieren Sie das Geheimnisanbieter-Add-On mithilfe des Befehls
az aks addon disable
.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Aktivieren Sie das Geheimnisanbieter-Add-On ohne den Parameter
enable-secret-rotation
mithilfe des Befehlsaz aks addon enable
erneut.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Wenn Sie bereits eine SecretProviderClass
verwenden, können Sie das Add-On aktualisieren, ohne es zuerst zu deaktivieren, indem Sie az aks addon enable
verwenden, ohne den Parameter enable-secret-rotation
anzugeben.
Synchronisieren von bereitgestelltem Inhalt mit einem Kubernetes-Geheimnis
Hinweis
Die YAML-Beispiele in diesem Abschnitt sind unvollständig. Sie müssen sie so ändern, dass die ausgewählte Methode zum Zugreifen auf Ihre Schlüsseltresoridentität unterstützt wird. Weitere Informationen finden Sie unter Bereitstellen einer Identität für den Zugriff auf den Azure Key Vault-Anbieter für den Geheimnisspeicher-CSI-Treiber.
Sie können ein Kubernetes-Geheimnis erstellen, um den bereitgestellten Inhalt zu spiegeln. Ihre Geheimnisse werden synchronisiert, nachdem Sie einen Pod zum Einbinden gestartet haben. Wenn Sie die Pods löschen, die die Geheimnisse nutzen, wird auch Ihr Kubernetes-Geheimnis gelöscht.
Synchronisieren Sie eingebundene Inhalte mit einem Kubernetes-Geheimnis über das Feld
secretObjects
beim Erstellen einerSecretProviderClass
, sodass der gewünschte Status des Kubernetes-Geheimnisses definiert wird, wie im folgenden Beispiel gezeigt.apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-sync spec: provider: azure secretObjects: # [OPTIONAL] SecretObjects defines the desired state of synced Kubernetes secret objects - data: - key: username # data field to populate objectName: foo1 # name of the mounted content to sync; this could be the object name or the object alias secretName: foosecret # name of the Kubernetes secret object type: Opaque # type of Kubernetes secret object (for example, Opaque, kubernetes.io/tls)
Hinweis
Stellen Sie sicher, dass der
objectName
im FeldsecretObjects
mit dem Dateinamen des eingebundenen Inhalts übereinstimmt. Wenn Sie stattdessenobjectAlias
verwenden, sollte Übereinstimmung mit dem Objektalias bestehen.
Festlegen einer Umgebungsvariable zum Verweisen auf Kubernetes-Geheimnisse
Hinweis
Das YAML-Beispiel demonstriert den Zugriff auf ein Geheimnis über Umgebungsvariablen und „volume/volumeMount“. Dies dient nur zur Veranschaulichung. Eine typische Anwendung verwendet die eine oder die andere Methode. Beachten Sie jedoch, dass sie zuerst von mindestens einem Pod bereitgestellt werden muss, damit ein geheimer Schlüssel über env-Variablen verfügbar ist.
Verweisen Sie auf das neu erstellte Kubernetes-Geheimnis, indem Sie eine Umgebungsvariable in Ihrem Pod festlegen, wie im folgenden Beispielcode gezeigt.
kind: Pod apiVersion: v1 metadata: name: busybox-secrets-store-inline spec: containers: - name: busybox image: registry.k8s.io/e2e-test-images/busybox:1.29-1 command: - "/bin/sleep" - "10000" volumeMounts: - name: secrets-store01-inline mountPath: "/mnt/secrets-store" readOnly: true env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: foosecret key: username volumes: - name: secrets-store01-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "azure-sync"
Zugreifen auf Metriken
Der Azure Key Vault-Anbieter
Metriken werden über Prometheus von Port 8898 aus bereitgestellt, doch ist dieser Port nicht standardmäßig außerhalb des Pods zugänglich.
Greifen Sie über Localhost auf die Metriken zu mittels
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Vom Azure Key Vault-Anbieter für den Secrets Store CSI-Treiber bereitgestellte Metriken
Metrik | BESCHREIBUNG | `Tags` |
---|---|---|
keyvault_request | Die Verteilung der für das Abrufen vom Schlüsseltresor benötigten Zeit | os_type=<runtime os> , provider=azure , object_name=<keyvault object name> , object_type=<keyvault object type> , error=<error if failed> |
grpc_request | Die Verteilung der für die gRPC-Anforderungen benötigten Zeit | os_type=<runtime os> , provider=azure , grpc_method=<rpc full method> , grpc_code=<grpc status code> , grpc_message=<grpc status message> |
Der Secrets Store CSI-Treiber
Metriken werden über Prometheus von Port 8095 aus bereitgestellt, doch wird dieser Port nicht standardmäßig außerhalb des Pods verfügbar gemacht.
Greifen Sie über Localhost auf die Metriken zu mittels
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Vom Secrets Store-CSI-Treiber bereitgestellte Metriken
Metrik | BESCHREIBUNG | `Tags` |
---|---|---|
total_node_publish | Die Gesamtanzahl der erfolgreichen Volumeeinbindungsanforderungen | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Die Gesamtanzahl der erfolgreichen Anforderungen zum Aufheben der Volumeeinbindung | os_type=<runtime os> |
total_node_publish_error | Die Gesamtanzahl von Fehlern bei Volumeeinbindungsanforderungen | os_type=<runtime os> , provider=<provider name> , error_type=<error code> |
total_node_unpublish | Die Gesamtanzahl von Fehlern bei Anforderungen zum Aufheben der Volumeeinbindung | os_type=<runtime os> |
total_sync_k8s_secret | Die Gesamtanzahl synchronisierter Kubernetes-Geheimnisse | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Die Verteilung der zur Synchronisierung des Kubernetes-Geheimnisses benötigten Zeit | os_type=<runtime os> |
total_rotation_reconcile | Die Gesamtanzahl der Rotationsabgleiche | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Die Gesamtzahl der Rotationsabgleiche mit Fehlern | os_type=<runtime os> , rotated=<true or false> , error_type=<error code> |
total_rotation_reconcile_error | Die Verteilung der zum Rotieren von Inhalten im Geheimnisspeicher für Pods benötigten Zeit | os_type=<runtime os> |
Migrieren von Open-Source zu AKS-verwaltetem Secrets Store CSI-Treiber
Deinstallieren Sie den Open-Source-Secret Store CSI-Treiber mit dem folgenden
helm delete
-Befehl.helm delete <release name>
Hinweis
Wenn Sie den Treiber und den Anbieter mithilfe von Bereitstellungs-YAMLs installiert haben, können Sie die Komponenten mit dem folgenden
kubectl delete
-Befehl löschen.# Delete AKV provider pods from Linux nodes kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer.yaml # Delete AKV provider pods from Windows nodes kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer-windows.yaml
Aktualisieren Sie Ihren vorhandenen AKS-Cluster mit dem Feature mithilfe des
az aks enable-addons
-Befehls.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Problembehandlung
Schritte zur Problembehandlung finden Sie unter Problembehandlung für Azure Key Vault-Anbieter für Secrets Store CSI-Treiber.
Nächste Schritte
Weitere Informationen zum Azure Key Vault-Anbieter für den Secrets Store CSI-Treiber finden Sie in den folgenden Ressourcen:
Azure Kubernetes Service