Dostawca usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych dla konfiguracji usługi Azure Kubernetes Service (AKS) i opcji rozwiązywania problemów
Wykonaj kroki opisane w artykule Używanie dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych w klastrze usługi AKS i podaj tożsamość, aby uzyskać dostęp do dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych w usłudze AKS. Po wykonaniu tych kroków możesz zastosować dodatkowe konfiguracje lub wykonać rozwiązywanie problemów.
Opcje konfiguracji
Włączanie i wyłączanie automatycznego obracania
Po włączeniu automatycznego obracania dla dostawcy wpisów tajnych usługi Azure Key Vault zaktualizuje on instalację zasobnika i wpis tajny Kubernetes zdefiniowany w secretObjects
polu SecretProviderClass
. Wykonuje to przez okresowe sondowanie pod kątem zmian na podstawie zdefiniowanego interwału sondowania rotacji. Domyślny interwał sondowania rotacji to dwie minuty.
Gdy wpis tajny jest aktualizowany w zewnętrznym magazynie wpisów tajnych po początkowym wdrożeniu zasobnika, wpis tajny Kubernetes i instalacja zasobnika okresowo są aktualizowane w zależności od sposobu, w jaki aplikacja korzysta z danych tajnych.
Zainstaluj wpis tajny Kubernetes jako wolumin: użyj funkcji automatycznego obracania i synchronizowania wpisów tajnych K8s sterownika CSI magazynu wpisów tajnych. Aplikacja musi obserwować zmiany z zainstalowanego woluminu wpisu tajnego Kubernetes. Gdy sterownik CSI aktualizuje wpis tajny Kubernetes, odpowiednia zawartość woluminu zostanie również automatycznie zaktualizowana.
Aplikacja odczytuje dane z systemu plików kontenera: użyj funkcji rotacji sterownika CSI magazynu wpisów tajnych. Aplikacja musi obserwować zmianę pliku z woluminu zainstalowanego przez sterownik CSI.
Użyj wpisu tajnego Kubernetes dla zmiennej środowiskowej: uruchom ponownie zasobnik, aby uzyskać najnowszy wpis tajny jako zmienną środowiskową. Użyj narzędzia, takiego jak Reloader , aby wyszukać zmiany w zsynchronizowanym wpisie tajnym kubernetes i przeprowadzić uaktualnienia stopniowe na zasobnikach.
Włączanie automatycznego obracania w nowym klastrze usługi AKS
Włącz automatyczne obracanie wpisów tajnych w nowym klastrze przy użyciu
az aks create
polecenia i włączenable-secret-rotation
dodatek.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Włączanie automatycznego obracania w istniejącym klastrze usługi AKS
Zaktualizuj istniejący klaster, aby włączyć automatyczną rotację wpisów tajnych przy użyciu
az aks addon update
polecenia i parametruenable-secret-rotation
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Określanie niestandardowego interwału rotacji
Określ niestandardowy interwał rotacji przy użyciu
az aks addon update
polecenia z parametremrotation-poll-interval
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Wyłączanie automatycznego obracania
Aby wyłączyć automatyczne obracanie, należy najpierw wyłączyć dodatek. Następnie możesz ponownie włączyć dodatek bez parametru enable-secret-rotation
.
Wyłącz dodatek dostawcy wpisów tajnych przy użyciu
az aks addon disable
polecenia .az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Ponownie włącz dodatek dostawcy wpisów tajnych bez parametru
enable-secret-rotation
az aks addon enable
przy użyciu polecenia .az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Jeśli używasz SecretProviderClass
już programu , możesz zaktualizować dodatek bez wcześniejszego wyłączania go bez az aks addon enable
określania parametru enable-secret-rotation
.
Synchronizowanie zainstalowanej zawartości z wpisem tajnym rozwiązania Kubernetes
Uwaga
Przykłady YAML w tej sekcji są niekompletne. Należy je zmodyfikować, aby obsługiwać wybraną metodę dostępu do tożsamości magazynu kluczy. Aby uzyskać szczegółowe informacje, zobacz Zapewnianie tożsamości w celu uzyskania dostępu do dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych.
Możesz utworzyć wpis tajny kubernetes w celu dublowania zainstalowanej zawartości wpisów tajnych. Wpisy tajne są synchronizowane po uruchomieniu zasobnika w celu ich zainstalowania. Usunięcie zasobników korzystających z wpisów tajnych spowoduje również usunięcie wpisu tajnego platformy Kubernetes.
Synchronizowanie zainstalowanej zawartości z wpisem tajnym Kubernetes przy użyciu
secretObjects
pola podczas tworzeniaSecretProviderClass
elementu w celu zdefiniowania żądanego stanu wpisu tajnego Kubernetes, jak pokazano w poniższym przykładzie YAML.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)
Uwaga
Upewnij się, że pole
objectName
wsecretObjects
polu jest zgodne z nazwą pliku zainstalowanej zawartości. Jeśli zamiast tego używaszobjectAlias
, powinien on być zgodny z aliasem obiektu.
Ustawianie zmiennej środowiskowej w celu odwołowania się do wpisów tajnych platformy Kubernetes
Uwaga
Przykładowy kod YAML demonstruje dostęp do wpisu tajnego za pomocą zmiennych env i woluminu/woluminuMount. Jest to przeznaczone do celów ilustracyjnych. Typowa aplikacja używałaby jednej metody lub drugiej. Należy jednak pamiętać, że aby wpis tajny był dostępny za pośrednictwem zmiennych env, najpierw musi być zainstalowany przez co najmniej jeden zasobnik.
Odwołuj się do nowo utworzonego wpisu tajnego platformy Kubernetes, ustawiając zmienną środowiskową w zasobniku, jak pokazano w poniższym przykładzie YAML.
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"
Metryki dostępu
Dostawca usługi Azure Key Vault
Metryki są obsługiwane za pośrednictwem rozwiązania Prometheus z portu 8898, ale ten port nie jest domyślnie uwidoczniony poza zasobnikiem.
Uzyskaj dostęp do metryk za pośrednictwem hosta lokalnego przy użyciu polecenia
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Metryki udostępniane przez dostawcę usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych
Metryczne | opis | Tagi |
---|---|---|
keyvault_request | Rozkład czasu pobierania z magazynu kluczy. | os_type=<runtime os> , , provider=azure , object_name=<keyvault object name> , , object_type=<keyvault object type> error=<error if failed> |
grpc_request | Rozkład czasu dla żądań gRPC. | os_type=<runtime os> , , provider=azure , grpc_method=<rpc full method> , , grpc_code=<grpc status code> grpc_message=<grpc status message> |
Sterownik CSI magazynu wpisów tajnych
Metryki są obsługiwane z portu 8095, ale ten port nie jest domyślnie uwidoczniony poza zasobnikiem.
Uzyskaj dostęp do metryk za pośrednictwem hosta lokalnego przy użyciu polecenia
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Metryki udostępniane przez sterownik CSI magazynu wpisów tajnych
Metryczne | opis | Tagi |
---|---|---|
total_node_publish | Całkowita liczba pomyślnych żądań instalacji woluminu. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Całkowita liczba pomyślnych żądań odinstalowania woluminu. | os_type=<runtime os> |
total_node_publish_error | Całkowita liczba błędów dotyczących żądań instalacji woluminu. | os_type=<runtime os> , , provider=<provider name> error_type=<error code> |
total_node_unpublish_error | Całkowita liczba błędów z żądaniami odinstalowania woluminu. | os_type=<runtime os> |
total_sync_k8s_secret | Całkowita liczba zsynchronizowanych wpisów tajnych platformy Kubernetes. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Rozkład czasu synchronizacji wpisu tajnego platformy Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | Łączna liczba uzgodnień rotacji. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Łączna liczba rotacji jest uzgadniana z błędami. | os_type=<runtime os> , , rotated=<true or false> error_type=<error code> |
total_rotation_reconcile_error | Rozkład czasu rotacji zawartości magazynu wpisów tajnych dla zasobników. | os_type=<runtime os> |
Migrowanie ze sterownika CSI magazynu wpisów tajnych zarządzanych przez usługę AKS do usługi AKS
Odinstaluj sterownik CSI magazynu wpisów tajnych typu open source przy użyciu następującego
helm delete
polecenia.helm delete <release name>
Uwaga
Jeśli sterownik i dostawca zostały zainstalowane przy użyciu list YAMLs wdrażania, możesz usunąć składniki przy użyciu następującego
kubectl delete
polecenia.# 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
Uaktualnij istniejący klaster usługi AKS za pomocą funkcji za pomocą
az aks enable-addons
polecenia .az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Rozwiązywanie problemów
Aby uzyskać instrukcje rozwiązywania problemów, zobacz Rozwiązywanie problemów z dostawcą usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych.
Następne kroki
Aby dowiedzieć się więcej o dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych, zobacz następujące zasoby:
Azure Kubernetes Service