Шаблонизация ресурсов Secret в Kubernetes
Рендеринг объектов Secret без раскрытия значений
«Шаблонизация ресурсов Secret в Kubernetes» — бесплатный урок Helm Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Helm Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Helm Academy содержит 4 уроков всего.
Чарты могут создавать секреты
Иногда Ваш чарт должен сам создавать объект секрета Kubernetes. При аккуратном подходе можно сформировать его шаблон, не раскрывая значение.
Структура манифеста секрета
Секрет Kubernetes — это всего лишь манифест с разделом данных. Каждое значение в разделе data должно быть текстом, закодированным в Base64.
apiVersion: v1
kind: Secret
metadata:
name: db-credentialsКодируйте данные с помощью b64enc
В разделе data кодируйте каждое значение. Вспомогательная функция Sprig b64enc преобразует строку с открытым текстом в формат Base64, ожидаемый Kubernetes.
data:
password: {{ .Values.password | b64enc }}Используйте stringData вместо кодирования
Отдавайте предпочтение stringData, если хотите не кодировать значения вручную с помощью b64enc. Kubernetes сам закодирует их на стороне сервера.
stringData:
password: {{ .Values.password | quote }}Кодирование всё ещё не защищает секрет
Помните: значение, отображённое в манифесте, лишь закодировано. Любой, кто может его прочитать, мгновенно расшифрует кодировку.
Не выводите это в NOTES
Частая утечка — вывести значение в NOTES.txt. Вместо этого выведите инструкцию по его получению, чтобы открытый текст никогда не попадал в вывод команды.
Повторно используйте существующий секрет
Ещё лучше позволить пользователям указать созданный отдельно existingSecret, чтобы Ваш чарт вообще не получал само значение.
{{- if not .Values.existingSecret }}
kind: Secret
{{- end }}Требуйте обязательное значение с помощью require
Если секрет действительно обязателен, функция required прекращает создание шаблона и выводит понятное сообщение, когда значение отсутствует.
password: {{ required "password is required" .Values.password | b64enc }}Монтируйте, а не встраивайте
Пусть поды читают секрет через secretKeyRef или подключённый том, а не получают буквальное значение непосредственно в переменной окружения контейнера.
valueFrom:
secretKeyRef:
name: db-credentials
key: passwordДобавьте аннотацию для ротации
Чтобы перезапускать поды при изменении секрета, добавьте аннотацию с контрольной суммой в развёртывание, чтобы новое значение запускало перезапуск.
checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}Сочетайте стратегии
Самые надёжные чарты сочетают разные подходы: предпочитают существующие или внешние секреты, кодируют только при необходимости и никогда не выводят значение.
Быстрая проверка
Как позволить Kubernetes самому выполнить кодирование в Base64?
Итоги
Вы научились безопасно создавать шаблон секрета: кодировать данные с помощью b64enc или stringData, предпочитать существующие секреты и никогда не выводить значение. 🎉
Часто задаваемые вопросы
Урок «Шаблонизация ресурсов Secret в Kubernetes» бесплатный?
Да — полный текст урока «Шаблонизация ресурсов Secret в Kubernetes» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Helm Academy, подпишись на CoddyKit PRO. Курс Helm Academy содержит 4 уроков всего.
Чему я научусь в уроке «Шаблонизация ресурсов Secret в Kubernetes»?
Рендеринг объектов Secret без раскрытия значений Ты практикуешь Helm Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Helm Academy?
Предыдущий опыт не требуется. Helm Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Шаблонизация ресурсов Secret в Kubernetes»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Helm Academy?
Да. Каждый урок Helm Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Почему секретам не место в values.yaml
- Шифрование значений с помощью helm-secrets и SOPS
- Получение секретов из внешних операторов секретов
- Шаблонизация ресурсов Secret в Kubernetes