Настройка Secrets
Содержание
Понимание SecretsХарактеристики использованияПоддерживаемые типыСпособы использованияСоздание Secret типа OpaqueСоздание Secret для контейнерного реестраСоздание Secret типа Basic AuthСоздание Secret типа SSH-AuthСоздание Secret типа TLSСоздание Secret через веб-консольКак использовать Secret в PodВ виде переменных окруженияВ виде монтируемых файлов (томов)Последующие действияОперацииПонимание Secrets
В Kubernetes (k8s) Secret — это базовый объект, предназначенный для хранения и управления конфиденциальной информацией, такой как пароли, OAuth-токены, SSH-ключи, TLS-сертификаты и API-ключи. Его основная задача — предотвратить прямое включение чувствительных данных в определения Pod или образы контейнеров, что повышает безопасность и портативность.
Secrets похожи на ConfigMaps, но предназначены специально для конфиденциальных данных. Обычно они хранятся в base64-кодировке и могут использоваться подами различными способами, включая монтирование в виде томов или предоставление в виде переменных окружения.
Характеристики использования
-
Повышенная безопасность: По сравнению с конфигурационными картами в открытом виде (Kubernetes ConfigMap), Secrets обеспечивают лучшую защиту, храня чувствительные данные в Base64-кодировке. Этот механизм в сочетании с возможностями Kubernetes по контролю доступа значительно снижает риск утечки данных.
-
Гибкость и управление: Использование Secrets предоставляет более безопасный и гибкий подход, чем жесткое кодирование конфиденциальной информации непосредственно в файлах определения Pod или образах контейнеров. Такое разделение упрощает управление и изменение чувствительных данных без необходимости менять код приложения или образы контейнеров.
Поддерживаемые типы
Kubernetes поддерживает различные типы Secrets, каждый из которых предназначен для конкретных случаев использования. Обычно платформа поддерживает следующие типы:
-
Opaque: универсальный тип Secret для хранения произвольных пар ключ-значение с конфиденциальными данными, такими как пароли или API-ключи.
-
TLS: специально предназначен для хранения сертификатов и приватных ключей TLS (Transport Layer Security), часто используемых для HTTPS-соединений и безопасного ingress.
-
SSH Key: используется для хранения приватных SSH-ключей, часто для безопасного доступа к Git-репозиториям или другим сервисам с поддержкой SSH.
-
SSH Authentication (kubernetes.io/ssh-auth): хранит информацию для аутентификации при передаче данных по протоколу SSH.
-
Username/Password (kubernetes.io/basic-auth): используется для хранения учетных данных базовой аутентификации (имя пользователя и пароль).
-
Image Pull Secret: хранит JSON-строку аутентификации, необходимую для загрузки образов контейнеров из приватных репозиториев образов.
Способы использования
Secrets могут использоваться приложениями внутри подов различными способами:
-
В виде переменных окружения: конфиденциальные данные из Secret могут быть внедрены непосредственно в переменные окружения контейнера.
-
В виде монтируемых файлов (томов): Secrets могут монтироваться как файлы в том пода, позволяя приложениям читать конфиденциальные данные из указанного пути.
Примечание: Экземпляры Pod в рабочих нагрузках могут ссылаться только на Secrets в пределах одного и того же namespace. Для расширенного использования и конфигураций YAML обратитесь к официальной документации Kubernetes.
Создание Secret типа Opaque
YAML
Вы можете декодировать их так:
Создание Secret для контейнерного реестра
YAML
K8s автоматически преобразует ваше имя пользователя, пароль, email и информацию о сервере в стандартный формат для входа:
Этот JSON затем кодируется в base64 и используется в поле data Secret.
Используйте его в Pod:
Создание Secret типа Basic Auth
Создание Secret типа SSH-Auth
Сценарий использования: хранение приватных SSH-ключей (например, для доступа к Git).
Создание Secret типа TLS
Сценарий использования: TLS-сертификаты (используются Ingress, вебхуками и др.)
YAML
Создание Secret через веб-консоль
-
Перейдите в Container Platform.
-
В левой навигационной панели выберите Configuration > Secrets.
-
Нажмите Create Secret.
-
Настройте параметры.
Примечание: В форме ввода конфиденциальные данные, такие как имя пользователя и пароль, автоматически кодируются в формат Base64 перед сохранением в Secret. Преобразованные данные можно просмотреть в YAML-виде.
-
Нажмите Create.
Как использовать Secret в Pod
В виде переменных окружения
Из секрета с именем my-secret берется значение по ключу username и присваивается переменной окружения DB_USERNAME.
В виде монтируемых файлов (томов)
Последующие действия
При создании рабочих нагрузок для нативных приложений в том же namespace можно ссылаться на уже созданные Secrets.
Операции
Вы можете нажать (⋮) справа на странице списка или выбрать Actions в правом верхнем углу страницы деталей, чтобы при необходимости обновить или удалить Secret.