Estrategia de conciliación
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 con 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 deGoogle Cloud puede variar según el tipo de recurso. Por ejemplo, un solo PubSubTopic
tarda unos segundos en crearse.Los recursos Google Cloudno 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 después de un período de fluctuación con un promedio basado en el intervalo predeterminado preconfigurado. Puedes encontrar el intervalo predeterminado en "Config Connector Default Average Reconcile Interval In Seconds" en la página de referencia de cada recurso. Para ver vínculos a cada recurso, consulta la Descripción general de los recursos. Cuando hay un error en la conciliación, Config Connector vuelve a intentarlo con una retirada exponencial en la que la retirada máxima es de dos minutos. Puedes ver cualquier error en los eventos de un recurso determinado.
Cómo configurar el intervalo de conciliación
A partir de Config Connector 1.102, puedes configurar el intervalo de reconciliación promedio para los recursos que administra Config Connector con la anotación cnrm.cloud.google.com/reconcile-interval-in-seconds
. El valor de la anotación anula el valor predeterminado de "Intervalo de reconciliación promedio predeterminado de Config Connector en segundos" de la página de referencia de recursos.
El valor de la anotación debe ser un número entero no negativo que represente el tiempo en segundos. Si el valor se establece en 0, Config Connector dejará de iniciar reconciliaciones para el recurso una vez que alcance el estado UpToDate.
Por ejemplo, si deseas que Config Connector concilie un recurso con menos frecuencia para evitar problemas con la Google Cloud cuota de la API subyacente, puedes establecer el valor del intervalo de conciliación promedio en 1 hora.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Si deseas que Config Connector concilie un recurso con mayor frecuencia para corregir las desviaciones antes, puedes establecer la anotación con un valor pequeño.
Puedes anotar todos los recursos de un tipo en particular que compartan el mismo Group Version Kind (GVK) con la siguiente secuencia de comandos:
#!/bin/bash
KIND=RESOURCE_KIND
NAMESPACE=RESOURCE_NAMESPACE
ANNOTATION_KEY="cnrm.cloud.google.com/reconcile-interval-in-seconds"
ANNOTATION_VALUE=RECONCILE_INTERVAL
kubectl annotate --overwrite --all ${KIND} ${ANNOTATION_KEY}=${ANNOTATION_VALUE} -n ${NAMESPACE}
echo "Annotation added to all ${KIND} RESOURCE"
Reemplaza lo siguiente:
RESOURCE_KIND
: Es el tipo de recurso que deseas anotar.RESOURCE_NAMESPACE
: Es el espacio de nombres que contiene los recursos que deseas anotar.RECONCILE_INTERVAL
: Es el intervalo de conciliación en segundos.
Puedes establecer el intervalo de reconciliación en 0 para inhabilitar la corrección de desviación de un recurso, pero no se inhabilita la activación del recurso. Si realizas cambios en el recurso Spec
, se volverá a conciliar el recurso.
Establecer el intervalo de conciliación en 0 es irreversible. Esto significa que volver a cambiar el valor a un número distinto de cero no hace que Config Connector vuelva a conciliar el recurso.
Si quieres revertir el intervalo de conciliación de 0, tienes las siguientes opciones:
- Modifica la especificación del recurso con el valor del intervalo de reconciliación para habilitar nuevas reconciliaciones.
- Abandona el recurso estableciendo la anotación
cnrm.cloud.google.com/deletion-policy: "abandon"
y vuelve a crear el recurso con un valor de intervalo de conciliación distinto de 0.
Los campos mutables, pero ilegibles, se activan solo sobre el cambio
Algunas APIs exponen campos que no son legibles, pero son mutables (por ejemplo, la contraseña de un usuario de SQL). Debido a la imposibilidad de ver si estos campos se modificaron, los campos mutables pero no legibles se actualizan solo cuando se modifica 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 emite un evento de Kubernetes "UpdatedFailed" para el recurso en lugar de ejecutar esta recreación. Luego, debes 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]