Создать секрет извлечения изображения из другого секрета или скопировать секрет из другого пространства имен

У меня есть проблема, которую я не могу решить должным образом. У меня есть Ku Кластер bernetes, работающий на GCP и настраиваемой диаграмме HELM helm / foo. У меня есть несколько экземпляров диаграммы, работающей с разными именами, и мне нужно изменить ее, чтобы каждая из них работала в своем собственном пространстве имен. Не очень сложно, так как это просто параметр для руля:

helm install --name bar --namespace bar helm/foo

Внутри диаграммы есть несколько вещей, в том числе развертывание с предоставленным imagePullSecret:

imagePullSecret: scrt

Это прекрасно работает при развертывании в пространстве имен по умолчанию, или, скорее, в том же пространстве имен, что и секрет находится в.Но терпит неудачу, когда предоставляется пространство имен, поскольку «bar» пространства имен не имеет доступа к «scrt», который находится в пространстве имен по умолчанию.

Чтобы решить эту проблему, выполните следующие действия: https://stackoverflow.com/questions/46297949/kubernetes-sharing-secret-across-namespaces где секрет копируется между пространствами имен. Это прекрасное решение, если у вас есть скрипт, запускающий все шоу, но для меня это невозможно, поскольку Terraform развернул N экземпляров диаграммы / теста.

Итак, мой вопрос: как я могу создать новый imagePullSecret из существующего, используя только helm / yaml? Я мог бы упаковать файл json в диаграмму, но хотел бы избежать секретов за пределами K8.

Спасибо!

1
задан 1 March 2019 в 12:37
1 ответ

Краткий ответ: не следует.

Вам следует изучить Декларативное управление объектами Kubernetes с помощью файлов конфигурации , что может помочь вам понять, как использовать Kubernetes.

Объекты Kubernetes можно создавать, обновлять и удалять, сохраняя несколько файлов конфигурации объектов в каталоге и используя kubectl apply для рекурсивного создания и обновления этих объектов по мере необходимости. Этот метод сохраняет записи, сделанные в живые объекты, без объединения изменений обратно в файлы конфигурации объекта.

Обычно это невозможно, потому что, как вы указывали из Kubernetes - совместное использование секрета в пространствах имен , секрет привязан к пространству имен, и на него можно ссылаться только из этого пространства имен.

Для этого может быть обходной путь , но я не думаю Вам было бы интересно. Обходной путь должен создать контейнер с правами администратора и использовать его для выполнения команды:

kubectl get secret test-secret --namespace=default --export -o yaml | kubectl apply --namespace=prod -f 

Конечно, вам нужно будет создать специальный RBAC , для каждое пространство имен для запуска этого привилегированного модуля.

Я настоятельно не рекомендую, но это можно сделать и таким способом.

1
ответ дан 3 December 2019 в 23:07

Теги

Похожие вопросы