секретсекрет — это ресурс Kubernetes, используемый для хранения чувствительной информации, такой как учетные данные аутентификации и ключи, необходимые рабочим нагрузкам. Содержание секрета определяется пользователями. После создания секрета контейнеризованные рабочие нагрузки могут безопасно использовать его через монтирование томов или внедрение переменных окружения.
Секреты отделяют чувствительные данные от образов контейнеров, предотвращая их раскрытие в виде открытого текста внутри образов или файлов конфигурации. Это значительно снижает риск утечки данных и повышает безопасность и переносимость рабочих нагрузок.
Секреты нельзя использовать в static pods.
Параметр | Описание |
|---|---|
Имя | Имя создаваемого секрета, которое должно быть уникальным. |
Пространство имён | Пространство имён, к которому относится секрет. Если не указать этот параметр, используется значение default по умолчанию. |
Описание | Описание секрета. |
Тип секрета | Тип создаваемого секрета.
|
Данные | Секретные данные рабочей нагрузки могут использоваться в контейнерах.
|
Управление тегами (необязательно) | Метки секрета. Нажмите Добавить метку и введите пары ключ‑значение. Ключ и значение должны содержать от 1 до 63 символов, начинаться и завершаться буквой или цифрой. Допустимы только буквы, цифры, дефисы (-), подчеркивания (_) и точки (.) . |
Новый секрет отображается в списке ключей.
# echo -n "content-to-be-encoded" | base64******
vi cce-secret.yaml
Следующий YAML‑файл использует тип Opaque в качестве примера. Подробнее о других типах смотрите Secret Resource File Configuration Example.
apiVersion: v1kind: Secretmetadata:name: mysecrettype: Opaquedata:<your_key>: <your_value><your_key>: <your_value> # Введите пару ключ‑значение. Значение должно быть закодировано с помощью Base64.
kubectl create -f cce-secret.yaml
Вы можете запросить секрет после создания.
kubectl get secret -n default
В этом разделе описаны примеры конфигураций файлов описания ресурсов секрета.
Файл secret.yaml определён как показано ниже. Поле data заполняется парой ключ‑значение, а value поле должно быть закодировано с помощью Base64. Подробнее см. Base64 Encoding.
apiVersion: v1kind: Secretmetadata:name: mysecret #Secret namenamespace: default #Namespace. The default value is defaultdefault.data:<your_key>: <your_value><your_key>: <your_value> # Введите пару ключ‑значение. Значение должно быть закодировано с помощью Base64.type: Opaquetype: Opaque
Файл secret.yaml определён как показано ниже. Значение .dockerconfigjson должно быть закодировано с помощью Base64. Подробнее см. Base64 Encoding.
apiVersion: v1kind: Secretmetadata:name: mysecret #Secret namenamespace: default #Namespace. The default value is defaultdefault.data:.dockerconfigjson: eyJh.dockerconfigjson: eyJh********** # Содержимое, закодированное с помощью Base64.type: kubernetes.io/dockerconfigjsontype: kubernetes.io/dockerconfigjson
Чтобы получить .dockerconfigjson содержимое, выполните следующие шаги:
echo -n "username:password" | base64
Вывод команды:
dXNlcm5hbWU6cGFzc3dvcmQ=
echo -n '{"auths":{"addressaddress":{"username":"usernameusername","password":"passwordpassword","auth":"dXNlcm5hbWU6cGFzc3dvcmQ=dXNlcm5hbWU6cGFzc3dvcmQ="}}}' | base64
Вывод команды:
eyJhdXRocyI6eyJhZGRyZXNzIjp7InVzZXJuYW1lIjoidXNlcm5hbWUiLCJwYXNzd29yZCI6InBhc3N3b3JkIiwiYXV0aCI6ImRYTmxjbTVoYldVNmNHRnpjM2R2Y21RPSJ9fX0=
Закодированное содержимое — это .dockerconfigjson содержимое.
Значение tls.crt и tls.key должны быть закодированы с помощью Base64. Подробнее см.Base64 Encoding.
kind: SecretapiVersion: v1metadata:name: mysecret #Secret namenamespace: default #Namespace. The default value is defaultdefault.data:tls.crt: LS0tLS1CRU*****FURS0tLS0tLS0tLS1CRU*****FURS0tLS0t # Содержимое сертификата, которое должно быть закодировано с помощью Base64.tls.key: LS0tLS1CRU*****VZLS0tLS0=LS0tLS1CRU*****VZLS0tLS0= # Содержимое закрытого ключа, которое должно быть закодировано с помощью Base64.type: kubernetes.io/tlstype: kubernetes.io/tls
Значение tls.crt и tls.key должны быть закодированы с помощью Base64. Подробнее см.Base64 Encoding.
kind: SecretapiVersion: v1metadata:name: mysecret #Secret namenamespace: default #Namespace. The default value is defaultdefault.data:tls.crt: LS0tLS1CRU*****FURS0tLS0tLS0tLS1CRU*****FURS0tLS0t # Содержимое сертификата, которое должно быть закодировано с помощью Base64.tls.key: LS0tLS1CRU*****VZLS0tLS0=LS0tLS1CRU*****VZLS0tLS0= # Содержимое закрытого ключа, которое должно быть закодировано с помощью Base64.type: IngressTLStype: IngressTLS
Чтобы выполнить кодирование Base64 строки, выполните следующую команду:
echo -n "Content to be encoded" | base64
После создания секрета вы можете обновить или удалить его, как описано в Таблица 2.
Список секретов содержит системные секретные ресурсы, которые можно только просматривать. Системные секретные ресурсы нельзя обновлять или удалять.
Операция | Описание |
|---|---|
Редактирование YAML‑файла секрета | Нажмите Edit YAML в строке, где находится целевой секрет, чтобы отредактировать его YAML‑файл. |
Обновление секрета |
|
Удаление секрета | Выберите удаляемый секрет и выберите Больше > Удалить. Следуйте подсказкам, чтобы удалить секрет. |
Удаление секретов пакетно |
|