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 los certificados del plano de control vencerán cinco años después de la fecha en que se creó el clúster. Los certificados del plano de control se rotan de forma automática durante la actualización del clúster, pero las AC no lo hacen de forma automática. Esto significa que se debe realizar una rotación de AC al menos una vez cada cinco años, además de las actualizaciones de versión normales.
Limitaciones
La rotación de certificados de CA está limitada a los certificados de etcd, clúster y proxy principal mencionados antes.
La rotación del certificado de la AC se limita a los certificados que emite 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. Realiza la primera mitad de la rotación y se detiene en un punto de pausa.
Inicia la rotación:
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
Si se interrumpe el comando, vuelve a ejecutarlo para reanudarlo.
Actualiza el archivo kubeconfig
Cuando el comando anterior se pause, actualiza el archivo kubeconfig del clúster de administrador. Esto coloca un nuevo certificado de cliente y un nuevo certificado de CA en el archivo kubeconfig. El certificado de cliente anterior se quita del archivo kubeconfig y el certificado de CA 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
Si se interrumpe el comando, vuelve a ejecutarlo para reanudarlo.
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
Distribuye el archivo kubeconfig nuevo
Distribuye el nuevo archivo kubeconfig del clúster de administrador a todos los usuarios del clúster.