Секретам нет места в службе хостинга контроля версий, такой как GitHub.
Что касается OpenShift, он включает в себя Secrets , конфигурационную карту кодированного 64, в которую можно вводить конфиденциальную информацию.
Но это долговременное хранилище конфиденциальной информации (для внедрения в секреты OpenShift) должно храниться в надлежащем хранилище.
Как, например, Хашикорп Хранилище , как описано в статье " Управление секретами в OpenShift - интеграция с хранилищем "
В остальном описывается это решение, но даже если вы не используете этот конкретный хостостается общая идея (внешнее хранилище типа хранилища):
![https://i2.wp.com/blog.openshift.com/wp-content/uploads/vault-1.png?w=1486&ssl=1](https://i.stack.imgur.com/zqRkt.png)
- Инициативный контейнер (запускается до запуска основного контейнера модуля) запрашивает обернутый токен от контроллера хранилища по зашифрованному соединению.
Обернутые учетные данные позволяют передавать учетные данные без каких-либоПосредникам необходимо на самом деле просмотреть учетные данные. - Контроллер хранилища получает информацию о модуле с сервера API Kubernetes.
- Если модуль существует и содержит аннотацию vaultproject.io/policies, хранилищеКонтроллер вызывает Vault и генерирует уникальный завернутый токен с доступом к политикам Vault, упомянутым в аннотации.Этот шаг требует доверия к автору пакета, чтобы он использовал правильные политики.Сгенерированный токен имеет настраиваемый TTL.
- Контроллер Vault «перезванивает» контейнер Init с использованием IP-адреса модуля, полученного из API Kubernetes через зашифрованное соединение, и доставляет его только что созданный упакованный токен.Обратите внимание, что Vault Controller не доверяет модулю, он только доверяет главному API.
- Контейнер Init разворачивает токен, чтобы получить токен Vault, который разрешит доступ к учетным данным.
- Токен Vault записывается в известное место на томе, совместно используемом двумя контейнерами (emptyDir), и выходы Init Container.
- Основной контейнер считывает токен из файла токена.Теперь основной контейнер может использовать токен для извлечения всех секретов, разрешенных политиками, которые рассматривались при создании токена.
- При необходимости главный контейнер обновляет токен, чтобы предотвратить его истечение.