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

Создание Secret

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

Сценарий

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

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

Ограничения

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

Создание Secret через консоль

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

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

    Параметр

    Описание

    Имя

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

    Namespace

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

    Description

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

    Secret Type

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

    • Opaque: обычный секрет.
    • kubernetes.io/dockerconfigjson: секрет, который хранит информацию аутентификации, необходимую для загрузки образов из частного репозитория.
    • kubernetes.io/tls: TLS‑секрет Kubernetes, который используется для хранения сертификата, требуемого сервисами балансировки нагрузки уровня 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 (Optional)

    Метки секрета. Нажмите 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

Пример конфигурации Secret Resource File.

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

  • 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

      Command output:

      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

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

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

Note

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

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

Операция

Описание

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

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

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

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

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

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

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

Пакетное удаление секретов

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