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 es la fuente de verdad para este valor.
Comportamiento con la aplicación del servidor
Si la aplicación del servidor está habilitada para el recurso, los valores de los campos administrados de forma externa en el objeto se actualizan de forma continua para que coincidan con el recurso subyacente de Google Cloud.
Si hay un valor presente para un campo en la especificación de la configuración aplicada, el campo no se administra de forma externa.
Si se quita el campo, se administrará de forma externa.
Comportamiento sin la 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.
Por ejemplo, si el usuario aplica una configuración de recursos sin establecer un valor para bar
en la especificación, sucede lo siguiente:
spec:
foo: "foo"
Si el valor del campo bar
es baz
en la API de Google Cloud , el recurso en api-server se propaga a ese valor:
# object in the api-server
spec:
foo: "foo"
bar: "baz" # populated by first reconciliation
Si el recurso Google Cloud se modifica directamente de modo que bar
ahora seabaz-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 la especificación de recursos
Debido a una limitación técnica en Config Connector, los campos de lista en la configuración de recursos no se pueden administrar de forma externa de forma predeterminada. Esto significa que Config Connector siempre toma la propiedad de los campos de lista en la especificación del recurso, incluso cuando el campo no se especifica en la configuración original del recurso.
En el momento en que se aplica una especificación de recurso, Config Connector lee el valor de los campos de lista de la API de Google Cloud y trata este valor inicial como fuente de información y estado deseado. Si el valor de ese campo de lista se modifica fuera de Config Connector, este intentará revertirlo, lo que podría no ser deseable.
Para evitar esta limitación y permitir que los campos de lista se administren de forma externa, usa la anotación cnrm.cloud.google.com/state-into-spec
. Esta anotación no es compatible con todos los recursos. Para ver si tu recurso admite la anotación, consulta la página de referencia de recursos correspondiente.
metadata:
annotations:
cnrm.cloud.google.com/state-into-spec: absent
Si configuras el valor de state-into-spec
como absent
, Config Connector ignorará los campos de lista si no se especifican en la configuración de tu recurso. Esto hace que los campos de lista del recurso se administren de forma externa.
Advertencias
Los campos que administra Config Connector y que actualizan automáticamente los servicios externos pueden activar actualizaciones interminables en la API subyacente. Esto puede ocurrir si la API subyacente tiene campos de actualización automática o ajuste de escala automático. Asegúrate de que estos campos se traten como administrados de forma externa. Para ello, habilita la aplicación del servidor para el recurso y deja el campo fuera de tu archivo de configuración cuando lo apliques.