Google Distributed Cloud usa certificados y claves privadas para autenticar la comunicación entre los componentes del sistema de Kubernetes en un clúster de administrador. Cuando creas un clúster de administrador, se crean nuevos certificados de autoridad certificadora (CA) y estos certificados raíz se usan a fin de emitir certificados de hoja adicionales para componentes del sistema de Kubernetes.
Esta guía solo se aplica a la rotación de los certificados de CA del clúster de administrador. Para los clústeres de usuario, consulta Rota certificados de CA del clúster de usuario.
El sistema de Kubernetes usa tres certificados de CA en un clúster de administrador:
El certificado de CA de etcd protege la comunicación del servidor de la API de Kubernetes a las réplicas de etcd y también la comunicación entre réplicas de etcd. Este certificado está autofirmado.
El certificado de CA del clúster protege la comunicación entre el servidor de la API de Kubernetes y todos los clientes internos de la API de Kubernetes, por ejemplo, kubelet, el administrador del controlador y el programador. Este certificado está autofirmado.
El Certificado de CA de proxy principal protege la comunicación con las APIs agregadas. Este certificado está autofirmado.
Puedes usar gkectl
para activar una rotación de certificado. Durante una rotación, gkectl
reemplaza los certificados de CA del sistema principal del clúster de administrador por los certificados recién generados. Luego, distribuye los nuevos certificados de CA, certificados de hoja y claves privadas a los componentes del sistema del clúster de administrador. La rotación ocurre de manera incremental, de modo que los componentes del sistema puedan seguir comunicándose durante la rotación. Sin embargo, ten en cuenta que las cargas de trabajo y los nodos se reinician durante la rotación.
Sin rotación, los certificados de la AC y del plano de control vencerán cinco años a partir de la fecha en que se creó el clúster. Los certificados del plano de control se rotan automáticamente durante una actualización de clúster, pero las AC no se rotan automáticamente. Esto significa que la rotación de una AC debe realizarse al menos una vez cada cinco años, además de las actualizaciones regulares de las versiones.
Limitaciones
Ten en cuenta la siguiente limitación con los clústeres avanzados:
- Versión 1.31: La rotación de AC no es compatible con los clústeres avanzados.
- Versión 1.32 y versiones posteriores: La rotación de AC es compatible con los clústeres avanzados, pero existen algunas diferencias menores que se indican en este documento cuando corresponda.
La rotación de certificados de CA está limitada a los certificados de etcd, clúster y proxy principal mencionados antes.
La rotación de certificados de AC se limita a los certificados emitidos automáticamente por Google Distributed Cloud. No actualiza los certificados que emite un administrador de forma manual, incluso si las CA del sistema firman esos certificados.
La rotación de certificados de CA reinicia varias veces el servidor de la API de Kubernetes, otros procesos del plano de control y cada nodo en el clúster de administrador. Cada etapa de una rotación avanza de manera similar a una actualización de clúster. Si bien el clúster de administrador y los clústeres de usuario administrados por el clúster de administrador permanecen operativos durante una rotación de certificados, debes esperar que las cargas de trabajo en el clúster de administrador se reinicien y se reprogramen. También debes esperar períodos de inactividad breves para el plano de control del clúster de administrador y el plano de control del clúster de usuario.
Debes actualizar el archivo kubeconfig del clúster de administrador durante una rotación de certificados y, una vez más, después de que se complete la rotación. Esto se debe a que se revoca el certificado de clúster anterior y las credenciales en el archivo kubeconfig ya no funcionarán.
Una vez iniciada, no se puede revertir una rotación de certificados de CA.
Una rotación de certificados de CA puede tardar un tiempo considerable en completarse, según el tamaño del clúster.
Si se interrumpe, el proceso de rotación de certificados se puede reanudar volviendo a ejecutar el mismo comando. Sin embargo, debes asegurarte de que solo haya un comando de rotación en ejecución a la vez.
Inicia la rotación
Para iniciar la rotación de certificados, ejecuta el siguiente comando:
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Reemplaza lo siguiente:
ADMIN_CLUSTER_CONFIG: la ruta de acceso del archivo de configuración de tu clúster de administrador
ADMIN_CLUSTER_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administrador
El comportamiento del comando difiere según si el clúster avanzado está habilitado:
No habilitada
El comando gkectl update credentials certificate-authorities rotate
inicia y realiza la primera mitad de la rotación. Luego, el comando se pausa para permitir que ejecutes el siguiente comando y actualices el archivo kubeconfig.
Actualiza el archivo kubeconfig
Cuando se pause el comando gkectl update credentials certificate-authorities rotate
, actualiza el archivo kubeconfig del clúster de administrador. Esto coloca un nuevo certificado de cliente y un nuevo certificado de AC en el archivo kubeconfig. El certificado de cliente anterior se quita del archivo kubeconfig y el certificado de AC anterior permanece en el archivo kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Continúa la rotación
Ejecuta el siguiente comando para realizar la segunda mitad del procedimiento. El comando no continuará hasta que gkectl
verifique que el archivo kubeconfig actualizado está en el directorio actual.
gkectl update credentials certificate-authorities rotate \ --admin-cluster \ --complete \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Cuando se completa la rotación, se informa la versión actual de CA.
Vuelve a actualizar el archivo kubeconfig
Una vez que se complete la segunda mitad de la rotación, vuelve a actualizar el archivo kubeconfig. Esto quita el certificado de CA anterior del archivo kubeconfig.
gkectl update credentials certificate-authorities update-kubeconfig \ --admin-cluster \ --config ADMIN_CLUSTER_CONFIG \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Habilitado
Si el clúster avanzado está habilitado, el comando gkectl update credentials
certificate-authorities rotate
es síncrono. El comando muestra mensajes de estado en la estación de trabajo del administrador a medida que avanza la rotación de la AC.
Después de que la AC se rota correctamente, el comando se cierra y se genera automáticamente un archivo kubeconfig nuevo. El archivo kubeconfig que especificaste en el comando se reemplaza por uno nuevo. El resultado del comando es similar al siguiente:
Beginning CA rotation with generated CA ... Successfully rotated CA for admin cluster. The kubeconfig file "/home/ubuntu/kubeconfig" has been updated. Done rotating certificate-authorities
Distribuye el archivo kubeconfig nuevo
Distribuye el nuevo archivo kubeconfig del clúster de administrador a todos los usuarios del clúster.