Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Creación de un secreto

Escenario

Un secreto es un tipo de recurso que contiene datos confidenciales, como la autenticación y la información clave. Su contenido está definido por el usuario. Después de crear secretos, puede usarlos como archivos o variables de entorno en una carga de trabajo contenedorizada.

Restricciones

Los secretos no se pueden usar en pods estáticos.

Procedimiento

  1. Inicie sesión en la consola de CCE y acceda a la consola del clúster.
  2. Elija ConfigMaps and Secrets en el panel de navegación, haga clic en la ficha Secrets y haga clic en Create Secret en la esquina superior derecha.
  3. Establezca los parámetros.

    Tabla 1 Parámetros para crear un secreto

    Parámetro

    Descripción

    Name

    Nombre del secreto que crea, que debe ser único.

    Namespace

    Espacio de nombres al que pertenece el secreto. Si no especifica este parámetro, el valor default se utiliza de forma predeterminada.

    Description

    Descripción de un secreto.

    Type

    Tipo del secreto que crea.

    • Opaque: secreto común.
    • kubernetes.io/dockerconfigjson: un secreto que almacena la información de autenticación necesaria para extraer imágenes de un repositorio privado.
    • kubernetes.io/tls: secreto de TLS de Kubernetes, que se utiliza para almacenar el certificado requerido por los servicios de balanceo de carga de capa 7.
    • IngressTLS: secreto de TLS proporcionado por CCE para almacenar el certificado requerido por los servicios de balanceo de carga de capa 7.
    • Otro: otro tipo de secreto, que se especifica manualmente.

    Secret Data

    Los datos de secretos de la carga de trabajo se pueden usar en contenedores.

    • Si Secret Type es Opaque, haga clic en . En el cuadro de diálogo que se muestra, introduzca un par clave-valor y seleccione Auto Base64 Encoding.
    • Si Secret Type es kubernetes.io/dockerconfigjson, introduzca la cuenta y la contraseña del repositorio de imágenes privadas.
    • Si Secret Type es kubernetes.io/tls o IngressTLS, suba el archivo de certificado y el archivo de clave privada.
      NOTA:
      • Un certificado es una credencial autofirmada o firmada por CA utilizada para la autenticación de identidad.
      • Una solicitud de certificado es una solicitud de firma con una clave privada.

    Secret Label

    Etiqueta del secreto. Ingrese un par clave-valor y haga clic en Add.

  4. Una vez completada la configuración, haga clic en OK.

    El nuevo secreto se muestra en la lista de claves.

Ejemplo de configuración del archivo de recursos secreto

En esta sección se describen ejemplos de configuración de archivos de descripción de recursos secretos.

  • Tipo de Opaque

    El archivo secret.yaml se define como se muestra a continuación. El campo data se rellena como un par clave-valor, y el campo value debe codificarse usando Base64. Para obtener más información sobre el método de codificación de Base64, consulte Codificación Base64.

    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
  • Tipo de kubernetes.io/dockerconfigjson

    El archivo secret.yaml se define como se muestra a continuación. El valor de .dockerconfigjson debe codificarse usando Base64. Para obtener más información, véase Codificación 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

    Para obtener el contenido .dockerconfigjson, realice los siguientes pasos:

    1. Obtenga la siguiente información de inicio de sesión del repositorio de imágenes.
      • Dirección del repositorio de imágenes: La sección usa address como ejemplo. Sustitúyalo por la dirección real.
      • Nombre de usuario: La sección usa username como ejemplo. Sustitúyalo con el nombre de usuario real.
      • Contraseña: La sección usa password como ejemplo. Reemplácelo con la contraseña real.
    2. Utilice Base64 para codificar el par clave-valor username:password y rellenar el contenido codificado en 3.
      echo -n "username:password" | base64

      Salida del comando:

      dXNlcm5hbWU6cGFzc3dvcmQ=
    3. Utilice Base64 para codificar el siguiente contenido de JSON:
      echo -n '{"auths":{"address":{"username":"username","password":"password","auth":"dXNlcm5hbWU6cGFzc3dvcmQ="}}}' | base64

      Salida del comando:

      eyJhdXRocyI6eyJhZGRyZXNzIjp7InVzZXJuYW1lIjoidXNlcm5hbWUiLCJwYXNzd29yZCI6InBhc3N3b3JkIiwiYXV0aCI6ImRYTmxjbTVoYldVNmNHRnpjM2R2Y21RPSJ9fX0=

      El contenido codificado es el contenido .dockerconfigjson.

  • Tipo de kubernetes.io/tls
    El valor de tls.crt y tls.key debe codificarse mediante Base64. Para obtener más información, véase Codificación 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
  • Tipo IngressTLS
    El valor de tls.crt y tls.key debe codificarse mediante Base64. Para obtener más información, véase Codificación 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

Creación de un secreto con kubectl

  1. De acuerdo con Conexión a un clúster con kubectl, configure el comando kubectl para conectar un ECS al clúster.
  2. Cree y edite el archivo cce-secret.yaml codificado en Base64.

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

    vi cce-secret.yaml

    El siguiente archivo YAML utiliza el tipo Opaque como ejemplo. Para obtener más información sobre otros tipos, consulte Ejemplo de configuración del archivo de recursos secreto.

    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.

  3. Cree un secreto.

    kubectl create -f cce-secret.yaml

    Puede consultar el secreto después de la creación.

    kubectl get secret -n default

Operaciones relacionadas

Después de crear un secreto, puede actualizarlo o eliminarlo como se describe en Tabla 2.

La lista secreta contiene recursos secretos del sistema que solo se pueden consultar. Los recursos secretos del sistema no se pueden actualizar ni eliminar.

Tabla 2 Operaciones relacionadas

Operación

Descripción

Edición de un archivo YAML

Haga clic en Edit YAML en la fila donde reside el secreto de destino para editar su archivo YAML.

Actualización de un secreto

  1. Seleccione el nombre del secreto que desea actualizar y haga clic en Update.
  2. Modifique los datos secretos. Para obtener más información, consulte Tabla 1.
  3. Haga clic en OK.

Eliminación de un secreto

Seleccione el secreto que desea eliminar y haga clic en Delete.

Siga las instrucciones para eliminar el secreto.

Eliminación de secretos por lotes

  1. Seleccione los secretos que desea eliminar.
  2. Haga clic en Delete encima de la lista secreta.
  3. Siga las instrucciones para eliminar los secretos.

Codificación Base64

Para codificar una cadena a Base64, ejecute el comando echo -n content to be encoded | base64. A continuación se presenta un ejemplo:

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