Administra campos de forma externa


Cuando Config Connector crea un recurso en Google Cloud, los campos que no se especifican en la especificación toman valores de la API, a menos que no sean legibles (por ejemplo, no están disponibles mediante una solicitud HTTP GET).

En este caso, el campo se considera “administrado externamente”, ya que Kubernetes no la fuente de información para este valor.

Comportamiento con aplicación del servidor

Si aplicación del servidor esté habilitado para el recurso, los valores de los campos administrados de forma externa en el el objeto se actualiza de forma continua para que coincida con Google Cloud de datos recurso.

Si hay un valor presente para un campo en la especificación en la configuración aplicada, el no se administra de forma externa.

Si se quita el campo, se administra de forma externa.

Comportamiento sin aplicación del servidor

Si la aplicación del servidor no está habilitada, los campos que no se incluyen en la especificación del recurso se propagan con el valor leído de la API de Google Cloud, y Config Connector aplica esos valores propagados inicialmente.

A modo de ejemplo, si el usuario aplica una configuración de recursos sin establecer una valor para bar en la especificación:

spec:
    foo: "foo"

Si el valor del campo bar es baz en la API de Google Cloud, el recurso en la api-server se propaga a ese valor:

# object in the api-server
spec:
    foo: "foo"
    bar: "baz"  # populated by first reconciliation

Si el recurso de Google Cloud se modifica directamente de modo que bar ahora sea baz-2, la API de Google Cloud se corrige al valor que se propagó inicialmente en la especificación del recurso: baz:

# object in the api-server
spec:
    foo: "foo"
    bar: "baz"  # still the originally populated value, and overrides the Google Cloud value

Comportamiento de los campos de lista en las especificaciones del recurso

Debido a una limitación técnica en Config Connector, enumera los campos en tu recurso no se puede administrar externamente de forma predeterminada. Esto significa Config Connector siempre toma la propiedad de los campos de lista en la especificación de recursos. incluso cuando el campo no está especificado en la configuración de recursos original.

Cuando se aplica una especificación de recurso, Config Connector lee de los campos de lista de la API de Google Cloud y trata esta como fuente de verdad y estado deseado. Si el valor de ese campo de lista es se modifica fuera de Config Connector, Config Connector intenta cambiarlo atrás, lo cual podría no ser deseado.

Para omitir esta limitación y permitir que los campos de lista se administren externamente, usa la anotación cnrm.cloud.google.com/state-into-spec. Esta no es compatible con todos los recursos. Para ver si tu recurso admita la anotación, verifica el correspondiente página de referencia de recursos.

metadata:
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent

Cuando se establece el valor de state-into-spec como absent, Config Connector ignora de lista si no se especifican en la configuración de tu recurso. Esto deja mostrar campos en el recurso que se administrará externamente.

Advertencias

Campos que Config Connector administra y que actualiza automáticamente los servicios externos pueden desencadenar una actualización infinita en la API subyacente. Esto puede suceder si la API subyacente tiene campos de ajuste de escala automático o de actualización automática. Asegúrate de que estos campos se tratan como administrados de forma externa habilitando la solicitud del servidor para el recurso y dejando el campo fuera de tu archivo de configuración cuando lo apliques.