Облачная платформаAdvanced

Создание секрета

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Сценарий

Секрет — это тип ресурса, который хранит конфиденциальные данные, такие как аутентификация и ключевая информация. Его содержимое определяется пользователем. После создания секретов их можно использовать в виде файлов или переменных окружения в контейнеризированной рабочей нагрузке.

Примечания и ограничения

Секреты нельзя использовать в static pods.

Процедура

  1. Войдите в консоль CCE и щелкните название кластера, чтобы открыть консоль кластера.
  2. Выберите ConfigMaps и Secrets в навигационной панели щелкните Секреты вкладку, и щелкните Создать секрет в правом верхнем углу.
  3. Настройте параметры.

    Таблица 1 Параметры для создания секрета

    Параметр

    Описание

    Имя

    Имя секрета, который вы создаёте, должно быть уникальным.

    Пространство имён

    Пространство имён, к которому принадлежит секрет. Если вы не укажете этот параметр, значение default используется по умолчанию.

    Описание

    Описание секрета.

    Тип

    Тип создаваемого секрета.

    • Opaque: общий секрет.
    • kubernetes.io/dockerconfigjson: секрет, который хранит информацию об аутентификации, необходимую для загрузки образов из приватного репозитория.
    • kubernetes.io/tls: Kubernetes TLS secret, который используется для хранения сертификата, необходимого для служб балансировки нагрузки уровня‑7. Для получения подробностей о примерах kubernetes.io/tls секрет и его описание, см. TLS секреты.
    • IngressTLS: TLS secret, предоставляемый CCE для хранения сертификата, необходимого для служб балансировки нагрузки уровня‑7.
    • Прочее: другой тип секрета, задаваемый вручную.

    Секретные данные

    Данные секрета рабочей нагрузки могут использоваться в контейнерах.

    • Если Тип секрета является Непрозрачный, нажмите . В отображаемом диалоговом окне введите пару ключ‑значение и выберите Авто Base64 кодирование.
    • Если Тип секрета равен kubernetes.io/dockerconfigjson, введите учетную запись и пароль для входа в приватный репозиторий образов.
    • Если Тип секрета равен kubernetes.io/tls или IngressTLS, загрузите файл сертификата и файл закрытого ключа.
      ПРИМЕЧАНИЕ:
      • Сертификат — это самоподписанный или подписанный УЦ учетный документ, используемый для аутентификации личности.
      • Запрос сертификата — это запрос подписи с использованием закрытого ключа.

    Метка секрета

    Метка секрета. Введите пару ключ‑значение и нажмите Подтвердить.

  4. Нажмите OK.

    Новый секрет отображается в списке ключей.

Пример конфигурации файла ресурса секрета

В этом разделе описаны примеры конфигураций файлов описания ресурса секрета.

  • Opaque тип

    The secret.yaml файл определен как показано ниже. The данные поле заполняется как пара ключ-значение, и значение поле должно быть закодировано с использованием Base64. Подробнее о методе кодирования Base64 см. Base64 Encoding.

    apiVersion: v1
    kind: Secret
    metadata:
    name: mysecret #Secret name
    namespace: default #Namespace. The default value is default.
    data:
    <your_key>: <your_value> # Enter a key-value pair. The value must be encoded using Base64.
    type: Opaque
  • kubernetes.io/dockerconfigjson тип

    The secret.yaml файл определён как показано ниже. Значение .dockerconfigjson должен быть закодирован с использованием Base64. За подробностями см Кодирование Base64.

    apiVersion: v1
    kind: Secret
    metadata:
    name: mysecret #Secret name
    namespace: default #Namespace. The default value is default.
    data:
    .dockerconfigjson: eyJh***** # Content encoded using Base64.
    type: kubernetes.io/dockerconfigjson

    Чтобы получить .dockerconfigjson содержимое, выполните следующие шаги:

    1. Получите следующую информацию для входа в репозиторий образов.
      • Адрес репозитория образов: В разделе используется адрес в качестве примера. Замените его фактическим адресом.
      • Имя пользователя: В разделе используется имя пользователя в качестве примера. Замените его фактическим именем пользователя.
      • Пароль: В разделе используется пароль в качестве примера. Замените его фактическим паролем.
    2. Используйте Base64 для кодирования пары ключ-значение username:password и заполните закодированное содержимое в 3.
      echo -n "username:password" | base64

      Вывод команды:

      dXNlcm5hbWU6cGFzc3dvcmQ=
    3. Используйте Base64 для кодирования следующего JSON‑содержимого:
      echo -n '{"auths":{"address":{"username":"username","password":"password","auth":"dXNlcm5hbWU6cGFzc3dvcmQ="}}}' | base64

      Вывод команды:

      eyJhdXRocyI6eyJhZGRyZXNzIjp7InVzZXJuYW1lIjoidXNlcm5hbWUiLCJwYXNzd29yZCI6InBhc3N3b3JkIiwiYXV0aCI6ImRYTmxjbTVoYldVNmNHRnpjM2R2Y21RPSJ9fX0=

      Закодированное содержимое — .dockerconfigjson содержимое.

  • kubernetes.io/tls тип

    Значение tls.crt и tls.key должны быть закодированы с помощью Base64. Подробности смотрите Кодирование Base64.

    kind: Secret
    apiVersion: v1
    metadata:
    name: mysecret #Secret name
    namespace: default #Namespace. The default value is default.
    data:
    tls.crt: LS0tLS1CRU*****FURS0tLS0t # Certificate content, which must be encoded using Base64.
    tls.key: LS0tLS1CRU*****VZLS0tLS0= # Private key content, which must be encoded using Base64.
    type: kubernetes.io/tls

  • IngressTLS тип

    Значение tls.crt и tls.key должно быть закодировано с использованием Base64. Для получения подробной информации см Кодирование Base64.

    kind: Secret
    apiVersion: v1
    metadata:
    name: mysecret #Secret name
    namespace: default #Namespace. The default value is default.
    data:
    tls.crt: LS0tLS1CRU*****FURS0tLS0t # Certificate content, which must be encoded using Base64.
    tls.key: LS0tLS1CRU*****VZLS0tLS0= # Private key content, which must be encoded using Base64.
    type: IngressTLS

Создание секрета с помощью kubectl

  1. Используйте kubectl для доступа к кластеру. Для получения подробной информации см Доступ к кластеру с помощью kubectl.
  2. Закодируйте значение секрета с использованием Base64.

    # echo -n "content-to-be-encoded" | base64
    ******

  3. Создайте файл с именем cce-secret.yaml и отредактируйте его.

    vi cce-secret.yaml

    Ниже приведён YAML‑файл, использующий тип Opaque в качестве примера. Для получения подробной информации о других типах см Пример конфигурации файла ресурса Secret.

    apiVersion: v1
    kind: Secret
    metadata:
    name: mysecret
    type: Opaque
    data:
    <your_key>: <your_value> # Enter a key-value pair. The value must be encoded using Base64.

  4. Создайте секрет.

    kubectl create -f cce-secret.yaml

    Вы можете выполнить запрос секрета после создания.

    kubectl get secret -n default

Связанные операции

После создания секрета вы можете обновить или удалить его, как описано в Таблица 2.

Note

Список секретов содержит системные ресурсы секретов, которые можно только запрашивать. Системные ресурсы секретов нельзя обновлять или удалять.

Таблица 2 Связанные операции

Операция

Описание

Редактирование YAML файла

Нажмите Редактировать YAML в строке, где находится целевой секрет, чтобы отредактировать его YAML‑файл.

Обновление секрета

  1. Выберите имя секрета, который нужно обновить, и нажмите Обновить.
  2. Изменить данные секрета. Для получения дополнительной информации смотрите Таблица 1.
  3. Нажмите OK.

Удаление секрета

Выберите секрет, который хотите удалить, и нажмите Удалить.

Следуйте инструкциям, чтобы удалить секрет.

Удаление секретов пакетно

  1. Выберите секреты для удаления.
  2. Нажмите Удалить над списком секретов.
  3. Следуйте инструкциям, чтобы удалить секреты.

Base64-кодирование

Чтобы выполнить Base64‑кодирование строки, запустите echo -n содержимое для кодирования | base64 команда. Ниже приведён пример:

root@ubuntu:~# echo -n "content to be encoded" | base64
******