Azure Key Vault provider for Secrets Store CSI Driver for Azure Kubernetes Service (AKS) opções de configuração e solução de problemas
Siga as etapas em Usar o provedor do Cofre de Chaves do Azure para Driver CSI do Repositório de Segredos em um cluster AKS e Fornecer uma identidade para acessar o provedor do Cofre de Chaves do Azure para o Driver CSI do Repositório de Segredos no AKS. Depois de concluir essas etapas, você pode aplicar configurações extras ou executar a solução de problemas.
Opções de configuração
Ativar e desativar a rotação automática
Nota
Quando o provedor do Azure Key Vault para o Driver CSI do Secrets Store está habilitado, ele atualiza a montagem do pod e o segredo do Kubernetes definidos no secretObjects
campo .SecretProviderClass
Ele faz isso sondando as alterações periodicamente, com base no intervalo de sondagem de rotação que você definiu. O intervalo de sondagem de rotação padrão é de dois minutos.
Nota
Quando um segredo é atualizado em um armazenamento de segredos externo após a implantação inicial do pod, o Segredo do Kubernetes e a montagem do pod são atualizados periodicamente, dependendo de como o aplicativo consome os dados secretos.
Monte o Segredo do Kubernetes como um volume: Use os recursos de autorrotação e sincronização de segredos do K8s do Driver CSI da Loja de Segredos. O aplicativo precisa observar as alterações do volume Kubernetes Secret montado. Quando o driver CSI atualiza o segredo do Kubernetes, o conteúdo do volume correspondente também é atualizado automaticamente.
O aplicativo lê os dados do sistema de arquivos do contêiner: Use o recurso de rotação do Secrets Store CSI Driver. O aplicativo precisa observar a mudança de arquivo do volume montado pelo driver CSI.
Use o Segredo do Kubernetes para uma variável de ambiente: reinicie o pod para obter o segredo mais recente como uma variável de ambiente. Use uma ferramenta como o Reloader para observar as alterações no Kubernetes Secret sincronizado e executar atualizações contínuas em pods.
Habilitar a rotação automática em um novo cluster AKS
Habilite a rotação automática de segredos em um novo cluster usando o
az aks create
comando e habilite o complementoenable-secret-rotation
.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Habilitar a rotação automática em um cluster AKS existente
Atualize um cluster existente para habilitar a rotação automática de segredos usando o
az aks addon update
comando e oenable-secret-rotation
parâmetro.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Especificar um intervalo de rotação personalizado
Especifique um intervalo de rotação personalizado usando o
az aks addon update
comando com orotation-poll-interval
parâmetro.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Desativar a rotação automática
Para desativar a rotação automática, primeiro você precisa desativar o complemento. Em seguida, você pode reativar o complemento sem o enable-secret-rotation
parâmetro.
Desative o complemento do provedor de segredos usando o
az aks addon disable
comando.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Reative o complemento do provedor de segredos sem o
enable-secret-rotation
parâmetro usando oaz aks addon enable
comando.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Se você já estiver usando um SecretProviderClass
, poderá atualizar o complemento sem desativá-lo primeiro usando az aks addon enable
sem especificar o enable-secret-rotation
parâmetro.
Sincronize o conteúdo montado com um segredo do Kubernetes
Nota
Os exemplos de YAML nesta seção estão incompletos. Você precisa modificá-los para dar suporte ao método escolhido de acesso à identidade do cofre de chaves. Para obter detalhes, consulte Fornecer uma identidade para acessar o provedor do Cofre de Chaves do Azure para o Driver CSI do Repositório de Segredos.
Você pode querer criar um segredo do Kubernetes para espelhar seu conteúdo de segredos montado. Seus segredos são sincronizados depois que você inicia um pod para montá-los. Quando você exclui os pods que consomem os segredos, seu segredo do Kubernetes também é excluído.
Sincronize o conteúdo montado com um segredo do Kubernetes usando o
secretObjects
campo ao criar umSecretProviderClass
para definir o estado desejado do segredo do Kubernetes, conforme mostrado no exemplo a seguir 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)
Nota
Verifique se o
objectName
no campo corresponde aosecretObjects
nome do arquivo do conteúdo montado. Se você usarobjectAlias
em vez disso, ele deve corresponder ao alias do objeto.
Definir uma variável de ambiente para fazer referência a segredos do Kubernetes
Nota
O exemplo YAML demonstra o acesso a um segredo através de variáveis env e volume/volumeMount. Isto é para fins ilustrativos. Uma aplicação típica usaria um método ou outro. No entanto, esteja ciente de que, para que um segredo esteja disponível através de variáveis env, ele primeiro deve ser montado por pelo menos um pod.
Faça referência ao segredo do Kubernetes recém-criado definindo uma variável de ambiente em seu pod, conforme mostrado no exemplo a seguir 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"
Métricas de acesso
O provedor do Azure Key Vault
As métricas são servidas via Prometheus a partir da porta 8898, mas essa porta não é exposta fora do pod por padrão.
Acesse as métricas através do localhost usando
kubectl port-forward
o .kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Métricas fornecidas pelo provedor do Azure Key Vault para o Driver CSI do Secrets Store
Métrico | Description | Etiquetas |
---|---|---|
keyvault_request | A distribuição de quanto tempo levou para chegar do cofre de chaves. | os_type=<runtime os> , provider=azure , object_name=<keyvault object name> , object_type=<keyvault object type> , error=<error if failed> |
grpc_request | A distribuição de quanto tempo levou para as solicitações gRPC. | os_type=<runtime os> , provider=azure , grpc_method=<rpc full method> , grpc_code=<grpc status code> , grpc_message=<grpc status message> |
O Driver CSI da Loja de Segredos
As métricas são servidas a partir da porta 8095, mas essa porta não é exposta fora do pod por padrão.
Acesse as métricas através do localhost usando
kubectl port-forward
o .kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Métricas fornecidas pelo driver CSI da Loja de Segredos
Métrico | Description | Etiquetas |
---|---|---|
total_node_publish | O número total de solicitações de montagem de volume bem-sucedidas. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | O número total de solicitações de desmontagem de volume bem-sucedidas. | os_type=<runtime os> |
total_node_publish_error | O número total de erros com solicitações de montagem de volume. | os_type=<runtime os> , provider=<provider name> , error_type=<error code> |
total_node_unpublish_error | O número total de erros com solicitações de desmontagem de volume. | os_type=<runtime os> |
total_sync_k8s_secret | O número total de segredos do Kubernetes sincronizados. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | A distribuição de quanto tempo levou para sincronizar o segredo do Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | O número total de rotações é reconciliado. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | O número total de rotações é reconciliado com erros. | os_type=<runtime os> , rotated=<true or false> , error_type=<error code> |
total_rotation_reconcile_error | A distribuição de quanto tempo levou para girar o conteúdo de armazenamento de segredos para pods. | os_type=<runtime os> |
Migre do código aberto para o driver CSI da Loja de Segredos gerenciado pelo AKS
Desinstale o driver CSI do Secrets Store de código aberto usando o comando a seguir
helm delete
.helm delete <release name>
Nota
Se você instalou o driver e o provedor usando YAMLs de implantação, poderá excluir os componentes usando o comando a seguir
kubectl delete
.# 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
Atualize seu cluster AKS existente com o recurso usando o
az aks enable-addons
comando.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Resolução de Problemas
Para obter as etapas de solução de problemas, consulte Solucionar problemas do provedor do Azure Key Vault para driver CSI do repositório de segredos.
Próximos passos
Para saber mais sobre o provedor do Azure Key Vault for Secrets Store CSI Driver, consulte os seguintes recursos:
Azure Kubernetes Service