|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
Kubeconfigs
Recurso Kubeconfig
Kubeconfig es un recurso de Rancher kubeconfigs.ext.cattle.io que permite generar v1.Config archivos kubeconfig para interactuar con Rancher y clústeres gestionados por Rancher.
kubectl api-resources --api-group=ext.cattle.io
Para obtener una descripción de los campos y la estructura del recurso Kubeconfig, ejecuta:
kubectl explain kubeconfigs.ext.cattle.io
Creando un Kubeconfig
Desde Rancher v2.13, status.bearerToken contiene un token Bearer completamente formado y listo para usar que se puede utilizar para autenticar en la API de Rancher.
Solo un usuario de Rancher válido y activo puede crear un Kubeconfig. Por ejemplo, intentar crear un Kubeconfig utilizando una system:admin cuenta de servicio lleva a un error:
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
EOF
Error from server (Forbidden): error when creating "STDIN": kubeconfigs.ext.cattle.io is forbidden: user system:admin is not a Rancher user
|
El contenido de kubeconfig se genera y se devuelve en el campo |
Se puede crear un kubeconfig para más de un clúster a la vez especificando una lista de nombres de clúster en el campo spec.clusters. Puedes buscar nombres de clúster listando recursos clusters.management.cattle.io.
kubectl get clusters.management.cattle.io -o=jsonpath="{.items[*]['metadata.name', 'spec.displayName']}{'\n'}"
local local
c-m-p66cdvlj downstream1
Los campos metadata.name y metadata.generateName se ignoran, y el nombre del nuevo Kubeconfig se genera automáticamente utilizando el prefijo kubeconfig-.
Puedes usar el campo spec.currentContext para establecer el nombre del clúster, y se utiliza para establecer el contexto actual en el kubeconfig. Si no estableces el campo spec.currentContext, entonces se utiliza el primer clúster en la lista spec.clusters como el contexto actual. Para clústeres habilitados para ACE que no tienen un FQDN establecido, se utiliza el primer nodo del plano de control como el contexto actual.
Para clústeres habilitados para ACE, si se establece el FQDN, entonces se utiliza como una entrada de clúster en el kubeconfig; de lo contrario, se crean entradas para todos los nodos del plano de control.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj, c-m-fcd3g5h]
description: My Kubeconfig
currentContext: c-m-p66cdvlj
EOF
Si "*" se especifica como el primer elemento en el campo spec.clusters, el kubeconfig se crea para todos los clústeres a los que el usuario tiene acceso, si los hay.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: ["*"]
description: My Kubeconfig
EOF
Si spec.ttl no se especifica, los tokens del Kubeconfig se crean con el tiempo de expiración definido en la configuración kubeconfig-default-token-ttl-minutes, que es de 30 días por defecto. Si se especifica spec.ttl, debe ser mayor que 0 y menor o igual al valor de la configuración kubeconfig-default-token-ttl-minutes expresado en segundos.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj] # Downstream cluster
ttl: 7200 # 2 hours
EOF
Listando Kubeconfigs
Listar Kubeconfigs generados previamente puede ser útil para limpiar tokens de respaldo si el Kubeconfig ya no es necesario (por ejemplo, si fue emitido temporalmente). Los administradores pueden listar todos los Kubeconfigs, mientras que los usuarios regulares solo pueden ver los suyos.
kubectl get kubeconfig
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
kubeconfig-7zvzp 30d 1/1 Complete 12d
kubeconfig-jznml 30d 1/1 Complete 12d
Usa -o wide para obtener más detalles:
kubectl get kubeconfig -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
kubeconfig-7zvzp 30d 1/1 Complete 12d u-w7drc *
kubeconfig-jznml 30d 1/1 Complete 12d u-w7drc *
Viendo un Kubeconfig
Los administradores pueden obtener cualquier Kubeconfig, mientras que los usuarios regulares solo pueden obtener el suyo.
kubectl get kubeconfig kubeconfig-zp786
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
Usa -o wide para obtener más detalles:
kubectl get kubeconfig kubeconfig-zp786 -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
Eliminando un Kubeconfig
Los administradores pueden eliminar cualquier Kubeconfig, mientras que los usuarios regulares solo pueden eliminar el suyo. Cuando se elimina un Kubeconfig, los tokens de kubeconfig también se eliminan.
kubectl delete kubeconfig kubeconfig-zp786
kubeconfig.ext.cattle.io "kubeconfig-zp786" deleted
Para eliminar un Kubeconfig usando precondiciones:
cat <<EOF | k delete --raw /apis/ext.cattle.io/v1/kubeconfigs/kubeconfig-zp786 -f -
{
"apiVersion": "v1",
"kind": "DeleteOptions",
"preconditions": {
"uid": "52183e05-d382-47d2-b4b9-d0735823ce90",
"resourceVersion": "31331505"
}
}
EOF
Eliminando una colección de Kubeconfigs
Los administradores pueden eliminar cualquier Kubeconfig, mientras que los usuarios regulares solo pueden eliminar el suyo.
Para eliminar todos los Kubeconfigs:
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs
Para eliminar una colección de Kubeconfigs por etiqueta:
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs?labelSelector=foo%3Dbar
Actualizando un Kubeconfig
Solo se pueden actualizar el metadata, por ejemplo, añadiendo una etiqueta o una anotación, y el campo spec.description. Todos los demás campos spec son inmutables.
Para editar un Kubeconfig:
kubectl edit kubeconfig kubeconfig-zp786
Para aplicar un parche a un Kubeconfig y actualizar su descripción:
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"spec":{"description":"Updated description"}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-fdcpl -o jsonpath='{.spec.description}'
Updated description
Para aplicar un parche a un Kubeconfig y añadir una etiqueta:
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"metadata":{"labels":{"foo":"bar"}}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-zp786 -o jsonpath='{.metadata.labels.foo}'
bar