Создание секретов Kubernetes из Azure Keyvault

Я пытаюсь создать секреты Kubernetes, получая секретные данные из хранилища ключей Azure.

Я знаю, что существует драйвер csi хранилища секретов , но этот плагин позволяет мне читать секреты из KeyVault и делать их доступными только для монтирования томов, но не для секретов Kubernetes.

Проблема в том, что я использую некоторый пользовательский ресурс Kubernetes, который принимает имя секрета k8s в поле, а затем извлекает данные из секретов k8s внутри себя.

Итак, мне нужно уметь создать секрет Kubernetes на основе данных, полученных из Azure Keyvault. Это возможно?

2 ответа

вы можете использовать оператор Azure Key Vault для Kubernetes.

там есть кусок под названиемAzure Key Vault Controllerкоторый может помочь вам сделать это именно.

Я работаю с открытой сменой Azure Redhat (ARO). Требуется подключение к хранилищу ключей Azure. Я применил следующий процесс для его настройки.

Нам нужно загрузить openshift cli для Windows. Ссылка1. Теперь извлеките zip-файл и переместите oc.exc в него.C:\Program Files\oc\oc.excДобавьте этот путь в переменную среды.

Теперь откройте командную строку и выполните следующую команду

      oc login https://api.<your ARO server>.aroapp.io:6443 -u kubeadmin

oc new-project k8s-secrets-store-csi

oc adm policy add-scc-to-user privileged \
  system:serviceaccount:k8s-secrets-store-csi:secrets-store-csi-driver

helm repo add secrets-store-csi-driver \
  https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts

helm repo update

helm install -n k8s-secrets-store-csi csi-secrets-store \
  secrets-store-csi-driver/secrets-store-csi-driver \
  --version v1.0.1 \
  --set "linux.providersDir=/var/run/secrets-store-csi-providers"

kubectl --namespace=k8s-secrets-store-csi get pods -l "app=secrets-store-csi-driver"

helm repo add csi-secrets-store-provider-azure \
  https://azure.github.io/secrets-store-csi-driver-provider-azure/charts

helm repo update

helm install -n k8s-secrets-store-csi azure-csi-provider \
  csi-secrets-store-provider-azure/csi-secrets-store-provider-azure \
  --set linux.privileged=true --set secrets-store-csi-driver.install=false \
  --set "linux.providersDir=/var/run/secrets-store-csi-providers" \
  --version=v1.0.1

oc adm policy add-scc-to-user privileged \
  system:serviceaccount:k8s-secrets-store-csi:csi-secrets-store-provider-azure

oc new-project my-application

Теперь создайте субъект-службу и предоставьте доступ к хранилищу ключей.

      kubectl create secret generic secrets-store-creds \
  -n my-application \
  --from-literal clientid=${SERVICE_PRINCIPAL_CLIENT_ID} \
  --from-literal clientsecret=${SERVICE_PRINCIPAL_CLIENT_SECRET}
kubectl -n my-application label secret \
  secrets-store-creds secrets-store.csi.k8s.io/used=true
Другие вопросы по тегам