Azure Key Vault-provider voor secrets store CSI-stuurprogramma voor AKS-configuratie (Azure Kubernetes Service) en opties voor probleemoplossing

Volg de stappen in De Azure Key Vault-provider gebruiken voor het CSI-stuurprogramma Secrets Store in een AKS-cluster en geef een identiteit op voor toegang tot de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store in AKS. Zodra u deze stappen hebt voltooid, kunt u extra configuraties toepassen of probleemoplossing uitvoeren.

Configuratieopties

Automatische rotatie in- en uitschakelen

Notitie

Wanneer de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store is ingeschakeld, worden de podkoppeling en het Kubernetes-geheim bijgewerkt dat is gedefinieerd in het secretObjects veld van SecretProviderClass. Dit doet u door periodiek te peilen naar wijzigingen, op basis van het interval voor de rotatiepeiling dat u hebt gedefinieerd. Het standaardinterval voor rotatiepeiling is twee minuten.

Notitie

Wanneer een geheim wordt bijgewerkt in een extern geheimenarchief na de eerste podimplementatie, worden de Kubernetes Secret en de podkoppeling periodiek bijgewerkt, afhankelijk van hoe de toepassing de geheime gegevens verbruikt.

Koppel het Kubernetes-geheim als een volume: gebruik de functies voor automatisch rouleren en synchroniseren van K8s-geheimen van het CSI-stuurprogramma Secrets Store. De toepassing moet controleren op wijzigingen van het gekoppelde Kubernetes Secret-volume. Wanneer het CSI-stuurprogramma het Kubernetes-geheim bijwerkt, wordt de bijbehorende volume-inhoud ook automatisch bijgewerkt.

De toepassing leest de gegevens uit het bestandssysteem van de container: gebruik de rotatiefunctie van het stuurprogramma Secrets Store CSI. De toepassing moet controleren of het bestand is gewijzigd van het volume dat is gekoppeld door het CSI-stuurprogramma.

Gebruik het Kubernetes-geheim voor een omgevingsvariabele: start de pod opnieuw om het meest recente geheim op te halen als een omgevingsvariabele. Gebruik een hulpprogramma zoals Opnieuw laden om te kijken naar wijzigingen in het gesynchroniseerde Kubernetes Secret en rolling upgrades uit te voeren op pods.

Automatische rotatie inschakelen op een nieuw AKS-cluster

  • Schakel automatische rotatie van geheimen in op een nieuw cluster met behulp van de az aks create opdracht en schakel de enable-secret-rotation invoegtoepassing in.

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

Automatische rotatie inschakelen op een bestaand AKS-cluster

  • Werk een bestaand cluster bij om automatisch rouleren van geheimen in te schakelen met behulp van de az aks addon update opdracht en de enable-secret-rotation parameter.

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

Een aangepast rotatie-interval opgeven

  • Geef een aangepast rotatie-interval op met behulp van de az aks addon update opdracht met de rotation-poll-interval parameter.

    az aks addon update -g myResourceGroup -n myAKSCluster2 -a azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
    

Automatische rotatie uitschakelen

Als u automatische rotatie wilt uitschakelen, moet u eerst de invoegtoepassing uitschakelen. Vervolgens kunt u de invoegtoepassing opnieuw inschakelen zonder de enable-secret-rotation parameter.

  1. Schakel de invoegtoepassing geheimenprovider uit met behulp van de az aks addon disable opdracht.

    az aks addon disable -g myResourceGroup -n myAKSCluster2 -a azure-keyvault-secrets-provider
    
  2. Schakel de invoegtoepassing geheimenprovider opnieuw in zonder de enable-secret-rotation parameter met behulp van de az aks addon enable opdracht.

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

Als u al een SecretProviderClassinvoegtoepassing gebruikt, kunt u de invoegtoepassing bijwerken zonder deze eerst uit te schakelen door deze te gebruiken az aks addon enable zonder de enable-secret-rotation parameter op te geven.

Gekoppelde inhoud synchroniseren met een Kubernetes-geheim

Notitie

De YAML-voorbeelden in deze sectie zijn onvolledig. U moet deze wijzigen om de gekozen methode voor toegang tot uw sleutelkluisidentiteit te ondersteunen. Zie Een identiteit opgeven voor toegang tot de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store voor meer informatie.

Mogelijk wilt u een Kubernetes-geheim maken om de inhoud van uw gekoppelde geheimen te spiegelen. Uw geheimen worden gesynchroniseerd nadat u een pod hebt gestart om deze te koppelen. Wanneer u de pods verwijdert die de geheimen gebruiken, wordt uw Kubernetes-geheim ook verwijderd.

  • Synchroniseer gekoppelde inhoud met een Kubernetes-geheim met behulp van het veld bij het secretObjects maken van een SecretProviderClass om de gewenste status van het Kubernetes-geheim te definiëren, zoals wordt weergegeven in het volgende voorbeeld 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)
    

    Notitie

    Zorg ervoor dat het objectNamesecretObjects veld overeenkomt met de bestandsnaam van de gekoppelde inhoud. Als u in plaats daarvan gebruikt objectAlias , moet deze overeenkomen met de objectalias.

Een omgevingsvariabele instellen om te verwijzen naar Kubernetes-geheimen

Notitie

In het voorbeeld van YAML wordt de toegang tot een geheim gedemonstreert via env-variabelen en volume/volumeMount. Dit is voor illustratieve doeleinden. Een typische toepassing gebruikt één methode of de andere. Houd er echter rekening mee dat het eerst moet worden gekoppeld door ten minste één pod om een geheim beschikbaar te maken via env-variabelen.

  • Verwijs naar uw zojuist gemaakte Kubernetes-geheim door een omgevingsvariabele in te stellen in uw pod, zoals wordt weergegeven in het volgende voorbeeld 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"
    

Metrische gegevens van Access

De Azure Key Vault-provider

Metrische gegevens worden geleverd via Prometheus vanaf poort 8898, maar deze poort wordt niet standaard buiten de pod weergegeven.

  • Toegang tot de metrische gegevens via localhost met behulp van kubectl port-forward.

    kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
    
Metrische gegevens van de Azure Key Vault-provider voor het CSI-stuurprogramma Secrets Store
Metrisch Beschrijving Tags
keyvault_request De verdeling van hoe lang het duurde om uit de sleutelkluis te komen. os_type=<runtime os>object_name=<keyvault object name>, provider=azure, object_type=<keyvault object type>error=<error if failed>
grpc_request De verdeling van hoe lang het duurde voor de gRPC-aanvragen. os_type=<runtime os>grpc_method=<rpc full method>, provider=azure, grpc_code=<grpc status code>grpc_message=<grpc status message>

Het stuurprogramma Secrets Store CSI

Metrische gegevens worden geleverd vanaf poort 8095, maar deze poort wordt niet standaard buiten de pod weergegeven.

  • Toegang tot de metrische gegevens via localhost met behulp van kubectl port-forward.

    kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 &
    curl localhost:8095/metrics
    
Metrische gegevens die worden geleverd door het stuurprogramma Secrets Store CSI
Metrisch Beschrijving Tags
total_node_publish Het totale aantal geslaagde aanvragen voor het koppelen van volumes. os_type=<runtime os>, provider=<provider name>
total_node_unpublish Het totale aantal geslaagde volume-ontkoppelingsaanvragen. os_type=<runtime os>
total_node_publish_error Het totale aantal fouten met aanvragen voor volumekoppeling. os_type=<runtime os>, , provider=<provider name>error_type=<error code>
total_node_unpublish_error Het totale aantal fouten met volume-ontkoppelde aanvragen. os_type=<runtime os>
total_sync_k8s_secret Het totale aantal Kubernetes-geheimen dat is gesynchroniseerd. os_type=<runtime os, provider=<provider name>
sync_k8s_secret_duration_sec De verdeling van hoe lang het duurde om het Kubernetes-geheim te synchroniseren. os_type=<runtime os>
total_rotation_reconcile Het totale aantal rotaties wordt afstemmen. os_type=<runtime os>, rotated=<true or false>
total_rotation_reconcile_error Het totale aantal rotaties is afgestemd op fouten. os_type=<runtime os>, , rotated=<true or false>error_type=<error code>
total_rotation_reconcile_error De distributie van hoe lang het duurde om geheimen-store-inhoud voor pods te roteren. os_type=<runtime os>

Migreren van opensource naar door AKS beheerd CSI-stuurprogramma voor geheimenarchief

  1. Verwijder het opensource-stuurprogramma Secrets Store CSI met behulp van de volgende helm delete opdracht.

    helm delete <release name>
    

    Notitie

    Als u het stuurprogramma en de provider hebt geïnstalleerd met behulp van YAML's voor implementatie, kunt u de onderdelen verwijderen met behulp van de volgende kubectl delete opdracht.

    # 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. Werk uw bestaande AKS-cluster bij met de functie met behulp van de az aks enable-addons opdracht.

    az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
    

Probleemoplossing

Zie Problemen met de Azure Key Vault-provider voor het CSI-stuurprogramma geheimenarchief oplossen voor probleemoplossing.

Volgende stappen

Zie de volgende resources voor meer informatie over de Azure Key Vault-provider voor Secrets Store CSI Driver: