Gestione esterna dei campi


Quando Config Connector crea una risorsa su Google Cloud, i campi non specificati nella specifica assumono i valori dell'API, a meno che non siano illeggibili (ad esempio, non sono disponibili utilizzando una richiesta HTTP GET).

In questo caso, il campo è considerato "gestito esternamente", poiché Kubernetes non è la fonte attendibile per questo valore.

Comportamento con l'applicazione lato server

Se la funzionalità di applicazione lato server è attivata per la risorsa, i valori dei campi gestiti esternamente nell'oggetto vengono aggiornati continuamente in modo da corrispondere alla risorsa Google Clouddi base.

Se nella specifica della configurazione applicata è presente un valore per un campo, il campo non è gestito esternamente.

Se il campo viene rimosso, significa che è gestito esternamente.

Comportamento senza applicazione lato server

Se l'applicazione lato server non è abilitata, i campi non specificati nella specifica della risorsa vengono compilati con il valore letto dall' Google Cloud API e Config Connector applica questi valori inizialmente compilati.

Ad esempio, se l'utente applica una configurazione della risorsa senza impostare un valore per bar nella specifica:

spec:
    foo: "foo"

Se il valore del campo bar è baz nell' Google Cloud API, la risorsa in api-server viene compilata con questo valore:

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

Se la risorsa Google Cloud viene modificata direttamente in modo che bar ora siabaz-2, l'API Google Cloud viene corretta in base al valore inizialmente inserito nella specifica della risorsa: baz:

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

Comportamento per i campi dell'elenco nella specifica della risorsa

A causa di una limitazione tecnica in Config Connector, i campi dell'elenco nella configurazione della risorsa non possono essere gestiti esternamente per impostazione predefinita. Ciò significa che Config Connector acquisisce sempre la proprietà dei campi di elenco nella specifica della risorsa, anche se il campo non è specificato nella configurazione della risorsa originale.

Al momento dell'applicazione di una specifica della risorsa, Config Connector legge il valore dei campi dell'elenco dall'API e tratta questo valore iniziale come fonte attendibile e stato desiderato. Google Cloud Se il valore in questo campo dell'elenco viene modificato al di fuori di Config Connector, Config Connector tenta di ripristinarlo, il che potrebbe non essere desiderato.

Per aggirare questa limitazione e consentire la gestione esterna dei campi dell'elenco, utilizza l'annotazione cnrm.cloud.google.com/state-into-spec. Questa annotazione non è supportata per tutte le risorse. Per verificare se la tua risorsa supporta l'annotazione, consulta la corrispondente pagina di riferimento della risorsa.

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

Se imposti il valore di state-into-spec su absent, Config Connector ignora i campi dell'elenco se non sono specificati nella configurazione della risorsa. In questo modo, i campi dell'elenco nella risorsa possono essere gestiti esternamente.

Limitazioni

I campi gestiti da Config Connector e aggiornati automaticamente da servizi esterni possono attivare aggiornamenti infiniti nell'API sottostante. Questo può accadere se l'API sottostante ha campi di scalabilità automatica o aggiornamento automatico. Assicurati che questi campi vengano trattati come gestiti esternamente attivando l'applicazione lato server per la risorsa e lasciando il campo fuori dal file di configurazione al momento dell'applicazione.