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

Создание Secret

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

Сценарий

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

Secrets отделяют конфиденциальные данные от образов контейнеров, предотвращая их раскрытие в виде открытого текста в образах или файлах конфигурации. Это значительно снижает риск утечки данных и повышает безопасность и переносимость рабочих нагрузок.

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

Secrets нельзя использовать в static pods.

Создание Secret с помощью консоли

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

    Table 1 Параметры создания secret

    Параметр

    Описание

    Имя

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

    Namespace

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

    Description

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

    Secret Type

    Тип секрета, который вы создаёте.

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

    Data

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

    • Если Secret Type установлен в Opaque, нажмите Add. В окне, которое выдвигается справа, введите пару ключ‑значение и выберите Auto Base64 Encoding.

      Key: введите от 1 до 63 символов. Допустимы только цифры, буквы, точки (.), дефисы (-) и подчёркивания (_). Ключ не может начинаться с двух точек (..).

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

    Tag Management (Необязательно)

    Метки секрета. Нажмите Add Label и введите пары ключ‑значение. Ключ и значение должны содержать от 1 до 63 символов, начинающихся и заканчивающихся буквой или цифрой. Разрешены только буквы, цифры, дефисы (-), подчеркивания (_) и точки (.).

  4. Нажмите OK.

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

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

  1. Используйте kubectl для доступа к кластеру. Подробнее см. Accessing a Cluster Using kubectl.
  2. Закодируйте значение секрета с помощью Base64.

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

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

    vi cce-secret.yaml

    Следующий файл YAML использует тип Opaque в качестве примера. Подробнее о других типах см. Secret Resource File Configuration Example.

    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

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

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

  • Opaque тип

    Файл secret.yaml определён как показано ниже. Поле data заполняется парой ключ‑значение, а поле value должно быть закодировано с использованием 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 тип

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

    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. Получите следующую информацию для входа в репозиторий образов:
      • Адрес репозитория образов: В разделе используется address в качестве примера. Замените его реальным адресом.
      • Имя пользователя: В разделе используется username в качестве примера. Замените его реальным именем пользователя.
      • Пароль: В разделе используется password в качестве примера. Замените его реальным паролем.
    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 Encoding.

    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 Encoding.

    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

Base64 Encoding

Для выполнения Base64‑кодирования строки выполните следующую команду:

echo -n "Content to be encoded" | base64

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

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

Note

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

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

Операция

Описание

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

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

Обновление secret

  1. Выберите имя secret, который нужно обновить, и нажмите Update.
  2. Измените информацию, обратившись к Table 1.
  3. Нажмите OK.

Удаление secret

Выберите secret, который нужно удалить, и выберите More > Delete.

Следуйте подсказкам, чтобы удалить secret.

Пакетное удаление secret

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