0Pricing
Helm Academy · Урок

Шаблонизация ресурсов 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 — локальная установка не требуется.

Все уроки этого курса

  1. Почему секретам не место в values.yaml
  2. Шифрование значений с помощью helm-secrets и SOPS
  3. Получение секретов из внешних операторов секретов
  4. Шаблонизация ресурсов Secret в Kubernetes
← Назад к Helm Academy