Administrar secretos del clúster

En este tema se explica cómo configurar y administrar secretos utilizados por los clústeres de carga de trabajo en Tanzu Kubernetes Grid, entre los que se incluyen:

  • Credenciales que los clústeres utilizan para acceder a los recursos y las API de la infraestructura de nube.
  • Certificados de entidad de certificación (CA) que los clústeres utilizan para acceder a registros de contenedores privados.
  • Credenciales que los clústeres utilizan para acceder a registros de contenedores privados autenticados.

Actualizar credenciales de clúster de carga de trabajo (vSphere)

Para actualizar las credenciales que utiliza un único clúster de carga de trabajo para acceder a vSphere, utilice el comando tanzu cluster credentials update:

  1. Ejecute tanzu login para iniciar sesión en el supervisor que creó el clúster de carga de trabajo que va a actualizar.

  2. Ejecutar tanzu cluster credentials update CLUSTER_NAME

    Puede transferir valores a las siguientes opciones de comando o permitir que la CLI le solicite:

    • --namespace: El espacio de nombres del clúster para el que está actualizando las credenciales como default.
    • --vsphere-user: Nombre de la cuenta de vSphere.
    • --vsphere-password: Contraseña de la cuenta de vSphere.

Confiar en certificados de CA personalizados en clústeres nuevos

Puede agregar certificados de CA personalizados en nodos del clúster de Tanzu Kubernetes mediante un archivo de superposición ytt para permitir que los nodos del clúster extraigan imágenes de un registro de contenedor que utilice certificados autofirmados.

El código superpuesto que aparece a continuación agrega certificados de CA personalizados a todos los nodos de un nuevo clúster para que containerd y otras herramientas confían en el certificado. El código funciona en todos los proveedores de infraestructura de nube para clústeres basados en plantillas de imagen de máquina virtual de Ubuntu o Photon.

Para las superposiciones que personalizan clústeres y crean un nuevo plan de clúster, consulte las superposicionesytt en el tema Configurar planes y clústeres de Tanzu Kubernetes.

  1. Elija si desea aplicar la CA personalizada a todos los clústeres nuevos, solo los creados en una infraestructura de nube o los creados con una versión específica del proveedor de API del clúster, como Proveedor de API del clúster vSphere v0.7.4.

  2. En el directorio local ~/.config/tanzu/tkg/providers/ busque el directorio ytt que abarca el ámbito seleccionado. Por ejemplo, /ytt/03_customizations/ se aplica a todos los clústeres y /infrastructure-vsphere/ytt/ se aplica a todos los clústeres de vSphere.

  3. En el directorio ytt elegido, cree un nuevo archivo .yaml o amplíe un archivo de superposición existente con el siguiente código:

    #@ load("@ytt:overlay", "overlay")
    #@ load("@ytt:data", "data")
    
    #! This ytt overlay adds additional custom CA certificates on TKG cluster nodes, so containerd and other tools trust these CA certificates.
    #! It works when using Photon or Ubuntu as the TKG node template on all TKG infrastructure providers.
    
    #! Trust your custom CA certificates on all Control Plane nodes.
    #@overlay/match by=overlay.subset({"kind":"KubeadmControlPlane"})
    ---
    spec:
      kubeadmConfigSpec:
        #@overlay/match missing_ok=True
        files:
          #@overlay/append
          - content: #@ data.read("tkg-custom-ca.pem")
            owner: root:root
            permissions: "0644"
            path: /etc/ssl/certs/tkg-custom-ca.pem
        #@overlay/match missing_ok=True
        preKubeadmCommands:
          #! For Photon OS
          #@overlay/append
          - '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
          #! For Ubuntu
          #@overlay/append
          - '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem /usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'
    
    #! Trust your custom CA certificates on all worker nodes.
    #@overlay/match by=overlay.subset({"kind":"KubeadmConfigTemplate"}), expects="1+"
    ---
    spec:
      template:
        spec:
          #@overlay/match missing_ok=True
          files:
            #@overlay/append
            - content: #@ data.read("tkg-custom-ca.pem")
              owner: root:root
              permissions: "0644"
              path: /etc/ssl/certs/tkg-custom-ca.pem
          #@overlay/match missing_ok=True
          preKubeadmCommands:
            #! For Photon OS
            #@overlay/append
            - '! which rehash_ca_certificates.sh 2>/dev/null || rehash_ca_certificates.sh'
            #! For Ubuntu
            #@overlay/append
            - '! which update-ca-certificates 2>/dev/null || (mv /etc/ssl/certs/tkg-custom-ca.pem /usr/local/share/ca-certificates/tkg-custom-ca.crt && update-ca-certificates)'
    
  4. En el mismo directorio ytt, agregue la entidad de certificación a un archivo tkg-custom-ca.pem nuevo o existente.

Configurar la autenticación en un registro de contenedores privado

Puede agregar secretos de autenticación para permitir que un clúster acceda a un registro de contenedor privado, lo que requiere autenticación del usuario para extraer imágenes. También puede ver, actualizar o eliminar los secretos de autenticación que configuró para los registros privados a los que accede un clúster.

Agregar un secreto de autenticación para un registro de contenedor privado

En la CLI de Tanzu puede agregar secretos de autenticación para acceder a un registro de contenedores privado desde un clúster. Después de agregar el secreto de registro a los espacios de nombres del clúster, puede extraer todos los repositorios de paquetes, los paquetes y las imágenes de contenedor que están alojados en el registro privado. Posteriormente, puede agregar el repositorio de paquetes y los recursos de paquetes al clúster.

Antes de realizar este procedimiento obtenga el nombre de usuario y la contraseña del registro de contenedores privado.

Para agregar un secreto de autenticación a un registro privado, ejecute el siguiente comando:

tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password PASSWORD

Donde:

  • SECRET-NAME es el nombre del secreto de autenticación del registro que desea agregar.
  • NAMESPACE es el espacio de nombres de Tanzu Kubernetes Grid al que pertenece el registro.
  • USERNAME es el nombre de usuario para acceder al registro. Ponga el nombre de usuario entre comillas simples si contiene caracteres especiales.
  • PASSWORD es la contraseña para acceder al registro. Ponga la contraseña entre comillas simples si contiene caracteres especiales. También puede especificar la contraseña en los siguientes formatos:

    • Reemplace la cadena --password PASSWORD en el comando por --password-env-var ENV-VAR para especificar la contraseña a través de la variable de entorno que ya configuró. El formato del comando es el siguiente:

      tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password-env-var ENV-VAR

    • Reemplace la cadena --password PASSWORD en el comando por la cadena --password-stdin para especificar la contraseña a través de la entrada estándar e introduzca la contraseña cuando se le solicite. El formato del comando es el siguiente:

      tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password-stdin

    • Reemplace la cadena --password PASSWORD en el comando por la cadena --password-file PASSWORD-FILE para especificar la contraseña a través de un archivo de contraseñas. El formato del comando es el siguiente:

      tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password-file PASSWORD-FILE

De forma opcional, para que el secreto de registro esté disponible en todos los espacios de nombres de un clúster, utilice la opción --export-to-all-namespaces como se muestra en el siguiente formato:

tanzu secret registry add SECRET-NAME -n NAMESPACE --server REGISTRY-URL --username USERNAME --password PASSWORD --export-to-all-namespaces

A continuación se muestra un ejemplo de resultados de este comando:

tanzu secret registry add tanzu-net -n test-ns --server registry.pivotal.io --username test-user --password-file pass-file --export-to-all-namespaces
Warning: By choosing --export-to-all-namespaces, given secret contents will be available to ALL users in ALL namespaces. Please ensure that included registry credentials allow only read-only access to the registry with minimal necessary scope.
/ Adding registry secret 'test-secret'...
  Added registry secret 'test-secret' into namespace 'test-ns'

Ver los secretos de autenticación del registro en un clúster

Puede ver los secretos de autenticación del registro en el espacio de nombres predeterminado o en todos los espacios de nombres de un clúster. Puede ver los secretos en forma de una tabla o un archivo JSON o YAML.

Para ver los secretos de autenticación del registro en un espacio de nombres específico de un clúster, ejecute lo siguiente:

tanzu secret registry list -n NAMESPACE

Donde NAMESPACE es el espacio de nombres de Tanzu Kubernetes Grid al que pertenece el registro.

A continuación se muestra un ejemplo de este comando:

tanzu secret registry list -n test-ns
/ Retrieving registry secrets...
  NAME         REGISTRY                 EXPORTED           AGE
  pkg-dev-reg  registry.pivotal.io      to all namespaces  15d

Para ver la lista de secretos de autenticación del registro en todos los espacios de nombres de un clúster, ejecute lo siguiente:

tanzu secret registry list -A

A continuación se muestra un ejemplo de este comando:

tanzu secret registry list -A
\ Retrieving registry secrets...
 NAME                          REGISTRY             EXPORTED           AGE  NAMESPACE
 pkg-dev-reg                   registry.pivotal.io  to all namespaces  15d  test-ns
 tanzu-standard-fetch-0        registry.pivotal.io  not exported       15d  tanzu-package-repo-global
 private-repo-fetch-0          registry.pivotal.io  not exported       15d  test-ns
 antrea-fetch-0                registry.pivotal.io  not exported       15d  tkg-system
 metrics-server-fetch-0        registry.pivotal.io  not exported       15d  tkg-system
 tanzu-addons-manager-fetch-0  registry.pivotal.io  not exported       15d  tkg-system
 tanzu-core-fetch-0            registry.pivotal.io  not exported       15d  tkg-system

Para ver la lista de secretos de autenticación del registro en formato de archivo JSON, ejecute el siguiente comando:

tanzu secret registry list -n kapp-controller-packaging-global -o json

A continuación se muestra un ejemplo de este comando:

tanzu secret registry list -n kapp-controller-packaging-global -o json
[
 {
   "age": "15d",
   "exported": "to all namespaces",
   "name": "pkg-dev-reg",
   "registry": "us-east4-docker.pkg.dev"
 }
]

Para ver la lista de secretos de autenticación del registro en formato de archivo YAML, ejecute lo siguiente:

tanzu secret registry list -n kapp-controller-packaging-global -o yaml

A continuación se muestra un ejemplo de este comando:

 tanzu secret registry list -n kapp-controller-packaging-global -o yaml
 - age: 15d
   exported: to all namespaces
   name: pkg-dev-reg
   registry: us-east4-docker.pkg.dev

Para ver la lista de secretos de autenticación del registro en formato de tabla, ejecute lo siguiente:

tanzu secret registry list -n kapp-controller-packaging-global -o table

A continuación se muestra un ejemplo de este comando:

tanzu secret registry list -n kapp-controller-packaging-global -o table
/ Retrieving registry secrets...
  NAME         REGISTRY                 EXPORTED           AGE
  pkg-dev-reg  us-east4-docker.pkg.dev  to all namespaces  15d

Actualizar un secreto de autenticación del registro

Puede actualizar las credenciales en un secreto y hacer que un secreto esté disponible en todos los espacios de nombres o ponerlo a disposición solo en un espacio de nombres del clúster.

Para actualizar el secreto en el espacio de nombres en el que se creó, ejecute el siguiente comando:

tanzu secret registry update SECRET-NAME --username USERNAME -n NAMESPACE --password PASSWORD

Donde:

  • SECRET-NAME es el nombre del secreto del registro que desea actualizar.
  • NAMESPACE es el espacio de nombres de Tanzu Kubernetes Grid donde se actualiza el secreto de autenticación del registro.
  • USERNAME es el nuevo nombre de usuario para acceder al registro (si desea actualizar el nombre de usuario).
  • PASSWORD es la nueva contraseña del registro (si desea actualizar la contraseña).

Nota: Puede actualizar el nombre de usuario o la contraseña o ambos.

A continuación se muestra un ejemplo de este comando:

tanzu secret registry update test-secret --username test-user -n test-ns --password-env-var PASSENV
\ Updating registry secret 'test-secret'...
 Updated registry secret 'test-secret' in namespace 'test-ns'

Para actualizar el secreto de autenticación del registro y ponerlo a disposición en otros espacios de nombres del clúster, ejecute el siguiente comando:

tanzu secret registry update SECRET-NAME --username USERNAME -n NAMESPACE --password PASSWORD --export-to-all-namespaces=true

Donde:

  • SECRET-NAME es el nombre del secreto del registro que desea actualizar.
  • NAMESPACE es el espacio de nombres de Tanzu Kubernetes Grid donde se actualiza el secreto de autenticación del registro.
  • USERNAME es el nombre de usuario para acceder al registro. Introduzca un nuevo nombre de usuario si desea actualizar el nombre de usuario.
  • PASSWORD es la contraseña del registro. Introduzca una nueva contraseña si desea actualizar la contraseña.

A continuación se muestra un ejemplo de este comando:

tanzu secret registry update test-secret--username test-user -n test-ns --password-env-var PASSENV --export-to-all-namespaces=true
Warning: By specifying --export-to-all-namespaces as true, given secret contents will be available to ALL users in ALL namespaces. Please ensure that included registry credentials allow only read-only access to the registry with minimal necessary scope.
Are you sure you want to proceed? [y/N]: y

\ Updating registry secret 'test-secret'...
  Updated registry secret 'test-secret' in namespace 'test-ns'
  Exported registry secret 'test-secret' to all namespaces

Para que un secreto de autenticación del registro no esté disponible en otros espacios de nombres del clúster, ejecute el siguiente comando:

tanzu secret registry update SECRET-NAME --username USERNAME -n NAMESPACE --password PASSWORD --export-to-all-namespaces=false

Donde:

  • SECRET-NAME es el nombre del secreto del registro que desea actualizar.
  • NAMESPACE es el espacio de nombres de Tanzu Kubernetes Grid donde se actualiza el secreto de autenticación del registro.
  • USERNAME es el nombre de usuario para acceder al registro.
  • PASSWORD es la contraseña del registro.

A continuación se muestra un ejemplo de este comando:

tanzu secret registry update test-secret --username test-user -n test-ns --password-env-var PASSENV --export-to-all-namespaces=false
Warning: By specifying --export-to-all-namespaces as false, the secret contents will get unexported from ALL namespaces in which it was previously available to.
Are you sure you want to proceed? [y/N]: y

\ Updating registry secret 'test-secret'...
  Updated registry secret 'test-secret' in namespace 'test-ns'
  Unexported registry secret 'test-secret' from all namespaces

Eliminar un secreto de autenticación del registro

Con la CLI de Tanzu, puede eliminar un secreto de autenticación del registro en un clúster. Para eliminar un secreto de autenticación del registro en un espacio de nombres específico, ejecute el siguiente comando:

tanzu secret registry delete SECRET-NAME -n NAMESPACE

Donde:

  • SECRET-NAME es el nombre del secreto del registro que desea eliminar.
  • (Opcional) NAMESPACE es el espacio de nombres de Tanzu Kubernetes Grid del que desea eliminar el secreto de autenticación del registro. Si no especifica un espacio de nombres, el secreto de autenticación se elimina del espacio de nombres predeterminado. Si el secreto se exportó a otros espacios de nombres del clúster, también se elimina.

A continuación se muestra un ejemplo de este comando:

tanzu secret registry delete test-secret -n test-ns
Deleting registry secret 'test-secret' from namespace 'test-ns'. Are you sure? [y/N]: y
\ Deleting registry secret 'test-secret'...
 Deleted registry secret 'test-secret' from namespace 'test-ns'
check-circle-line exclamation-circle-line close-line
Scroll to top icon