Поставщик Azure Key Vault для драйвера CSI хранилища секретов для конфигурации Служба Azure Kubernetes (AKS) и параметров устранения неполадок
Выполните действия, описанные в разделе "Использование поставщика Azure Key Vault для драйвера CSI хранилища секретов" в кластере AKS и предоставление удостоверения для доступа к поставщику Azure Key Vault для драйвера CSI хранилища секретов в AKS. После выполнения этих действий можно применить дополнительные конфигурации или выполнить устранение неполадок.
Варианты конфигурации
Включение и отключение автоматической смены
Примечание.
Если включен поставщик Azure Key Vault для драйвера CSI хранилища секретов, он обновляет подключение pod и секрет Kubernetes, определенный в secretObjects
поле SecretProviderClass
. Это делается путем периодического опроса изменений в зависимости от заданного интервала опроса поворота. Интервал опроса поворота по умолчанию составляет две минуты.
Примечание.
Когда секрет обновляется во внешнем хранилище секретов после первоначального развертывания pod, секрет Kubernetes и подключение pod периодически обновляются в зависимости от того, как приложение использует секретные данные.
Подключите секрет Kubernetes в качестве тома: используйте функции автоматического поворота и синхронизации секретов K8s драйвера CSI хранилища секретов. Приложение должно отслеживать изменения из подключенного тома Секрета Kubernetes. Когда драйвер CSI обновляет секрет Kubernetes, соответствующее содержимое тома автоматически обновляется.
Приложение считывает данные из файловой системы контейнера: используйте функцию поворота драйвера CSI хранилища секретов. Приложение должно отслеживать изменение файла из тома, подключенного драйвером CSI.
Использование секрета Kubernetes для переменной среды: перезапустите pod, чтобы получить последний секрет в качестве переменной среды. Используйте инструмент, например Средство перезагрузки, чтобы отслеживать изменения в синхронизированном секрете Kubernetes и выполнять последовательное обновление модулей pod.
Включение автоматической смены в новом кластере AKS
Включите автоматическую смену секретов в новом кластере с помощью
az aks create
команды и включите надстройкуenable-secret-rotation
.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Включение автоматической смены в существующем кластере AKS
Обновите существующий кластер, чтобы включить автоматическую смену секретов с помощью
az aks addon update
команды иenable-secret-rotation
параметра.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Указание пользовательского интервала поворота
Укажите настраиваемый интервал поворота с помощью
az aks addon update
команды с параметромrotation-poll-interval
.az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Отключение автоматического поворота
Чтобы отключить автоматическую смену, сначала необходимо отключить надстройку. Затем можно повторно включить надстройку без enable-secret-rotation
параметра.
Отключите надстройку поставщика секретов с помощью
az aks addon disable
команды.az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Повторно включите надстройку поставщика секретов без
enable-secret-rotation
параметра с помощьюaz aks addon enable
команды.az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Если вы уже используете SecretProviderClass
надстройку, вы можете обновить надстройку, не отключив ее сначала с помощью az aks addon enable
без указания enable-secret-rotation
параметра.
Синхронизация подключенного содержимого с секретом Kubernetes
Примечание.
Примеры YAML в этом разделе являются неполными. Их необходимо изменить для поддержки выбранного метода доступа к удостоверению хранилища ключей. Дополнительные сведения см. в статье "Предоставление удостоверения для доступа к поставщику Azure Key Vault для драйвера CSI хранилища секретов".
Возможно, потребуется создать секрет Kubernetes для зеркального отображения содержимого подключенных секретов. Синхронизация секретов после запуска модуля pod для их подключения. При удалении модулей pod, использующих секреты, также удаляется секрет Kubernetes.
Синхронизируйте подключенное содержимое с секретом Kubernetes с помощью
secretObjects
поля при созданииSecretProviderClass
нужного состояния секрета Kubernetes, как показано в следующем примере 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)
Примечание.
Убедитесь,
objectName
что вsecretObjects
поле совпадает имя файла подключенного содержимого. Если вместо этого вы используетеobjectAlias
, это значение должно соответствовать псевдониму объекта.
Установка переменной среды для ссылки на секреты Kubernetes
Примечание.
В примере YAML демонстрируется доступ к секрету с помощью переменных env и volume/volumeMount. Он приведен только для демонстрации. Обычное приложение будет использовать один метод или другой. Однако помните, что для того, чтобы секрет был доступен через переменные env, он сначала должен быть подключен по крайней мере одним модулем pod.
Наведите ссылку на созданный секрет Kubernetes, задав переменную среды в модуле pod, как показано в следующем примере 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"
Доступ к метрикам
Поставщик Azure Key Vault
Метрики обслуживаются через Prometheus через порт 8898, но по умолчанию этот порт недоступен за пределами модуля pod.
Доступ к метрикам через localhost с помощью
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Метрики, предоставляемые поставщиком Azure Key Vault для драйвера CSI хранилища секретов
Метрическая | Description | Теги |
---|---|---|
keyvault_request | Распределение времени, необходимого для получения из хранилища ключей. | os_type=<runtime os> , , provider=azure object_name=<keyvault object name> , object_type=<keyvault object type> error=<error if failed> |
grpc_request | Распределение времени, сколько времени потребовалось для запросов gRPC. | os_type=<runtime os> , , provider=azure grpc_method=<rpc full method> , grpc_code=<grpc status code> grpc_message=<grpc status message> |
Драйвер CSI хранилища секретов
Метрики обслуживаются из порта 8095, но этот порт не предоставляется за пределами pod по умолчанию.
Доступ к метрикам через localhost с помощью
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Метрики, предоставляемые драйвером CSI хранилища секретов
Метрическая | Description | Теги |
---|---|---|
total_node_publish | Общее количество успешных запросов на подключение томов. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Общее количество успешных запросов на отключение тома. | os_type=<runtime os> |
total_node_publish_error | Общее количество ошибок с запросами на подключение томов. | os_type=<runtime os> , , provider=<provider name> error_type=<error code> |
total_node_unpublish_error | Общее количество ошибок с запросами на отключение тома. | os_type=<runtime os> |
total_sync_k8s_secret | Общее количество синхронизированных секретов Kubernetes. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Распределение времени синхронизации секрета Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | Общее число примирений поворота. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Общее количество поворотов примиряется с ошибками. | os_type=<runtime os> , , rotated=<true or false> error_type=<error code> |
total_rotation_reconcile_error | Распределение времени, необходимого для смены содержимого хранилища секретов для модулей pod. | os_type=<runtime os> |
Миграция из открытого кода в драйвер CSI хранилища секретов, управляемого AKS
Удалите драйвер CSI хранилища секретов с открытым исходным кодом, выполнив следующую
helm delete
команду.helm delete <release name>
Примечание.
Если вы установили драйвер и поставщик с помощью YAMLs развертывания, можно удалить компоненты с помощью следующей
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
Обновите существующий кластер AKS с помощью функции с помощью
az aks enable-addons
команды.az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Устранение неполадок
Инструкции по устранению неполадок см. в разделе "Устранение неполадок с поставщиком Хранилища ключей Azure" для драйвера CSI хранилища секретов.
Следующие шаги
Дополнительные сведения о поставщике Azure Key Vault для драйвера CSI хранилища секретов см. в следующих ресурсах:
Azure Kubernetes Service