Выполнение операций API изнутри контейнера не является антипаттерном. Блокируйте запуск вашего процесса на C до тех пор, пока initContainer
не запустится и не обновит Secret
, содержащий токен. Не используйте ConfigMap
для секретов; для этих целей существует объект Secret
, и вы можете вставить Secret
в PodSpec
- как env vars, или как монтирование тома - так же, как вы извлекаете ConfigMap
(с небольшим изменением синтаксиса).
Единственная проблема, с которой я могу столкнуться - это то, что вы будете иметь дело с несколькими репликами, поэтому вы можете захотеть рандомизировать часть имени Secret
. Создайте его в initContainer
, передайте случайное имя в файловой системе, поскольку Pods
совместно использует файловую систему, затем используйте его в главном контейнере и удалите Secret
после настройки env var или mount. Secrets
и ConfigMaps
могут исчезнуть после запуска Pod
, не влияя на их присутствие внутри Pod
.
Возможно, вам также понадобится способ очистки учетных записей пользователей, так как вы ' по сути, создаем нового пользователя каждый раз, когда реплика запускается и у нее не будет возможности удалить ее. Для этого может быть CronJob
- перечислите учетные записи пользователей, соответствующие вашему соглашению об именах, затем перезапустите развертывание и удалите учетные записи в списке, который вы выбрали до перезапуска. Таким образом, вы не будете вытягивать ковер из активных реплик.