Создание секретов 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