Estrategia de conciliación

Config Connector es con coherencia eventual

Con la configuración declarativa, defines el estado deseado del sistema. El sistema funciona de forma constante para permanecer lo más cerca posible de este estado. Consulta Declarative management of Kubernetes objects using configuration files (Administración declarativa de objetos de Kubernetes mediante archivos de configuración) para obtener más información.

Con Config Connector, puedes crear y actualizar recursos en cualquier orden, independientemente de las relaciones de dependencia. GKE mueve la configuración declarada hacia la coherencia eventual con el estado deseado.

Por ejemplo, si creas un PubSubSubscription antes del PubSubTopic correspondiente, Config Connector espera hasta que se crea el tema antes de crear la suscripción asociada.

La duración de la instalación de Config Connector depende de la cantidad y los tipos de recursos que administra. Por lo general, los cambios en un clúster de GKE se ejecutan en segundos. Sin embargo, el tiempo para crear recursos de Google Cloud puede variar según el tipo de recurso. Por ejemplo, un solo PubSubTopic tarda unos segundos en crearse. Los recursos de Google Cloud no alcanzan la coherencia hasta que se crean. Por ejemplo, cuando creas una SQLInstance y una SQLDatabase, el sistema es incoherente durante un período de minutos mientras se crea la base de datos.

GKE y Config Connector concilian cada recurso con cada actualización o cada 10 minutos. Cuando hay un error en la conciliación, el Config Connector vuelve a intentarlo cada 30 segundos con una retirada exponencial. Puedes ver cualquier error en los eventos de un recurso dado.

Los campos mutables, pero ilegibles, se activan solo sobre el cambio

Algunas API exponen campos que no son legibles, pero son mutables (p.ej., la contraseña de un usuario de SQL). Debido a la imposibilidad de ver si estos campos se modificaron, los campos mutables pero no ilegibles se actualizarán solo cuando se modifique el recurso personalizado.

No se volverán a crear los recursos cuando se modifiquen campos inmutables

Algunos campos de un recurso son inmutables y no se pueden conciliar sin eliminar, y, luego, vuelven a crear el recurso de destino.

En estas situaciones, Config Connector emitirá un evento de Kubernetes “UpdatedFailed” para el recurso, en lugar de realizar esta recreación de nuevo. Luego, el usuario debe borrar y volver a crear el recurso.

Ejemplo de evento:

Warning  UpdateFailed  37m (x643 over 15d)    computeinstance-controller  Update call failed: the desired mutation for the following field(s) is invalid: [bootDisk.0.InitializeParams.0.Image networkInterface.0.NetworkIp]