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

Uwaga

Po włączeniu dostawcy usługi Azure Key Vault dla sterownika CSI magazynu wpisów tajnych aktualizuje 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.

Uwaga

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łącz enable-secret-rotation dodatek.

    az aks create -n myAKSCluster2 -g myResourceGroup --enable-addons azure-keyvault-secrets-provider --enable-secret-rotation
    

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 parametru enable-secret-rotation .

    az aks addon update -g myResourceGroup -n myAKSCluster2 -a 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 parametrem rotation-poll-interval .

    az aks addon update -g myResourceGroup -n myAKSCluster2 -a 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 .

  1. Wyłącz dodatek dostawcy wpisów tajnych przy użyciu az aks addon disable polecenia .

    az aks addon disable -g myResourceGroup -n myAKSCluster2 -a azure-keyvault-secrets-provider
    
  2. Ponownie włącz dodatek dostawcy wpisów tajnych bez parametru enable-secret-rotationaz aks addon enable przy użyciu polecenia .

    az aks addon enable -g myResourceGroup -n myAKSCluster2 -a azure-keyvault-secrets-provider
    

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 tworzenia SecretProviderClass 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 w secretObjects polu jest zgodne z nazwą pliku zainstalowanej zawartości. Jeśli zamiast tego używasz objectAlias , 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

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