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:
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
:
Ejecute tanzu login
para iniciar sesión en el supervisor que creó el clúster de carga de trabajo que va a actualizar.
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.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.
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.
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.
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)'
En el mismo directorio ytt
, agregue la entidad de certificación a un archivo tkg-custom-ca.pem
nuevo o existente.
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.
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'
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
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
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.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'