Sdílet prostřednictvím


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 SecretProviderClasskó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 povolte enable-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 parametrem rotation-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 .

  1. 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
    
  2. 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 SecretProviderClassdoplně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žijete objectAlias , 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

  1. 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
    
  2. 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í: