Poskytovatel služby Azure Key Vault pro konfiguraci a možnosti řešení potíží s ovladačem CSI pro úložiště tajných kódů pro konfiguraci služby Azure Kubernetes Service (AKS)
Postupujte podle pokynů v tématu Použití zprostředkovatele služby Azure Key Vault pro ovladač CSI úložiště tajných kódů v clusteru AKS a zadejte identitu pro přístup k poskytovateli služby Azure Key Vault pro ovladač CSI úložiště tajných kódů v AKS. Po dokončení těchto kroků můžete použít další konfigurace nebo provést řešení potíží.
Možnosti konfigurace
Povolení a zakázání automatické obměně
Poznámka:
Když je povolen poskytovatel služby Azure Key Vault pro ovladač CSI úložiště tajných SecretProviderClass
kódů, aktualizuje připojení podu a tajný klíč Kubernetes definovaný v secretObjects
poli . Provede to pravidelným dotazováním změn na základě vámi definovaného intervalu hlasování o obměně. Výchozí interval hlasování o obměně je dva minuty.
Poznámka:
Když se tajný klíč aktualizuje v externím úložišti tajných kódů po počátečním nasazení podu, tajný kód Kubernetes a připojení podu se pravidelně aktualizují v závislosti na tom, jak aplikace využívá tajná data.
Připojte tajný klíč Kubernetes jako svazek: Použijte automatické obměny a synchronizujte funkce tajných kódů K8s ovladače CSI úložiště tajných kódů. Aplikace musí sledovat změny z připojeného svazku tajných kódů Kubernetes. Když ovladač CSI aktualizuje tajný klíč Kubernetes, příslušný obsah svazku se automaticky aktualizuje i.
Aplikace čte data ze systému souborů kontejneru: Použijte funkci obměny ovladače CSI úložiště tajných kódů. Aplikace musí sledovat změnu souboru ze svazku připojeného ovladačem CSI.
Použijte tajný klíč Kubernetes pro proměnnou prostředí: Restartujte pod a získejte nejnovější tajný kód jako proměnnou prostředí. Pomocí nástroje, jako je reloader , sledujte změny synchronizovaného tajného kódu Kubernetes a proveďte postupné upgrady podů.
Povolení automatické obměně v novém clusteru AKS
Povolte automatické obměně tajných kódů v novém clusteru pomocí
az aks create
příkazu a povolteenable-secret-rotation
doplněk.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Povolení automatické obměně u existujícího clusteru AKS
Aktualizujte existující cluster, aby bylo možné pomocí příkazu a parametru
az aks addon update
enable-secret-rotation
povolit automatické obměně tajných kódů.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Zadání vlastního intervalu otočení
Zadejte vlastní interval otáčení pomocí
az aks addon update
příkazu s parametremrotation-poll-interval
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Zakázání automatické obměně
Pokud chcete zakázat automatické obměně, musíte nejdřív doplněk zakázat. Potom můžete doplněk znovu povolit bez parametru enable-secret-rotation
.
Pomocí příkazu zakažte doplněk zprostředkovatele tajných kódů
az aks addon disable
.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Znovu povolte doplněk zprostředkovatele tajných kódů bez parametru
enable-secret-rotation
az aks addon enable
pomocí příkazu.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Pokud už používáte SecretProviderClass
doplněk, můžete ho aktualizovat, aniž byste ho napřed az aks addon enable
zakázali bez zadání parametru enable-secret-rotation
.
Synchronizace připojeného obsahu s tajným kódem Kubernetes
Poznámka:
Příklady YAML v této části jsou neúplné. Musíte je upravit tak, aby podporovaly zvolenou metodu přístupu k vaší identitě trezoru klíčů. Podrobnosti najdete v tématu Zadání identity pro přístup k poskytovateli služby Azure Key Vault pro ovladač CSI úložiště tajných kódů.
Možná budete chtít vytvořit tajný kód Kubernetes, který bude zrcadlit připojený obsah tajných kódů. Vaše tajné kódy se synchronizují po spuštění podu pro jejich připojení. Když odstraníte pody, které tajné kódy využívají, odstraní se také tajný kód Kubernetes.
Synchronizovat připojený obsah s tajným kódem Kubernetes pomocí
secretObjects
pole při vytvářeníSecretProviderClass
pro definování požadovaného stavu tajného kódu Kubernetes, jak je znázorněno v následujícím příkladu 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)
Poznámka:
Ujistěte se, že pole
objectName
odpovídásecretObjects
názvu souboru připojeného obsahu. Pokud místo toho použijeteobjectAlias
, měl by se shodovat s aliasem objektu.
Nastavení proměnné prostředí pro odkaz na tajné kódy Kubernetes
Poznámka:
Příklad YAML ukazuje přístup k tajnému kódu prostřednictvím proměnných env a svazku /volumeMount. To je pro ilustrativní účely. Typická aplikace by používala jednu nebo druhou metodu. Mějte ale na paměti, že aby byl tajný klíč dostupný prostřednictvím proměnných env, musí být nejprve připojen alespoň jedním podem.
Na nově vytvořený tajný kód Kubernetes můžete odkazovat nastavením proměnné prostředí v podu, jak je znázorněno v následujícím příkladu 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"
Přístup k metrikám
Zprostředkovatel služby Azure Key Vault
Metriky se obsluhují přes Prometheus z portu 8898, ale tento port není ve výchozím nastavení vystavený mimo pod.
Přístup k metrikám přes localhost pomocí
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Metriky poskytované poskytovatelem služby Azure Key Vault pro ovladač CSI úložiště tajných kódů
Metrický | Popis | Značky |
---|---|---|
keyvault_request | Distribuce toho, jak dlouho trvalo získání z trezoru klíčů. | os_type=<runtime os> , provider=azure , object_name=<keyvault object name> , , object_type=<keyvault object type> error=<error if failed> |
grpc_request | Distribuce doby trvání požadavků gRPC. | os_type=<runtime os> , provider=azure , grpc_method=<rpc full method> , , grpc_code=<grpc status code> grpc_message=<grpc status message> |
Ovladač CSI úložiště tajných kódů
Metriky se obsluhují z portu 8095, ale tento port není ve výchozím nastavení vystavený mimo pod.
Přístup k metrikám přes localhost pomocí
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Metriky poskytované ovladačem CSI úložiště tajných kódů
Metrický | Popis | Značky |
---|---|---|
total_node_publish | Celkový počet úspěšných žádostí o připojení svazků. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Celkový počet úspěšných žádostí o odpojení svazku | os_type=<runtime os> |
total_node_publish_error | Celkový počet chyb s požadavky na připojení svazku. | os_type=<runtime os> , , provider=<provider name> error_type=<error code> |
total_node_unpublish_error | Celkový počet chyb při odpojování svazků | os_type=<runtime os> |
total_sync_k8s_secret | Celkový počet synchronizovaných tajných kódů Kubernetes | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Distribuce toho, jak dlouho trvalo synchronizaci tajného kódu Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | Celkový počet shodných rotací. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Celkový počet otočení se shoduje s chybami. | os_type=<runtime os> , , rotated=<true or false> error_type=<error code> |
total_rotation_reconcile_error | Distribuce doby trvání obměny obsahu úložiště tajných kódů pro pody. | os_type=<runtime os> |
Migrace z opensourcového úložiště tajných kódů na ovladač CSI spravovaného službou AKS
Pomocí následujícího
helm delete
příkazu odinstalujte opensourcový ovladač CSI úložiště tajných kódů.helm delete <release name>
Poznámka:
Pokud jste ovladač a poskytovatele nainstalovali pomocí yamlů nasazení, můžete komponenty odstranit pomocí následujícího
kubectl delete
příkazu.# 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
Pomocí příkazu upgradujte stávající cluster AKS pomocí funkce
az aks enable-addons
.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Řešení problému
Postup řešení potíží najdete v tématu Řešení potíží se zprostředkovatelem služby Azure Key Vault pro ovladač CSI úložiště tajných kódů.
Další kroky
Další informace o poskytovateli služby Azure Key Vault pro ovladač CSI úložiště tajných kódů najdete v následujících zdrojích informací:
Azure Kubernetes Service