Faça a gestão dos campos externamente


Quando o Config Connector cria um recurso no Google Cloud, os campos não especificados na especificação assumem valores da API, a menos que não sejam legíveis (por exemplo, não estejam disponíveis através de um pedido HTTP GET).

Neste caso, o campo é considerado "gerido externamente", uma vez que o Kubernetes não é a fonte de verdade para este valor.

Comportamento com a aplicação do lado do servidor

Se a opção aplicação no lado do servidor estiver ativada para o recurso, os valores dos campos geridos externamente no objeto são atualizados continuamente para corresponderem ao recurso Google Cloudsubjacente.

Se estiver presente um valor para um campo na especificação na configuração aplicada, o campo não é gerido externamente.

Se o campo for removido, o campo é gerido externamente.

Comportamento sem aplicação do lado do servidor

Se a aplicação do lado do servidor não estiver ativada, os campos não especificados na especificação do recurso são preenchidos com o valor lido na Google Cloud API e o Config Connector aplica esses valores preenchidos inicialmente.

Por exemplo, se o utilizador aplicar uma configuração de recursos sem definir um valor para bar na especificação:

spec:
    foo: "foo"

Se o valor do campo bar for baz na API Google Cloud , o recurso na API api-server é preenchido com esse valor:

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

Se o Google Cloud recurso for modificado diretamente de modo que bar seja agora baz-2, a API Google Cloud é corrigida para o valor que foi preenchido inicialmente na especificação do recurso: baz:

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

Comportamento dos campos de listas na especificação de recursos

Devido a uma limitação técnica no Config Connector, os campos de lista na configuração do recurso não podem ser geridos externamente por predefinição. Isto significa que o Config Connector assume sempre a propriedade dos campos de lista na especificação de recursos, mesmo quando o campo não é especificado na configuração de recursos original.

No momento em que uma especificação de recursos é aplicada, o Config Connector lê o valor dos campos de lista da API Google Cloud e trata este valor inicial como fonte de verdade e estado desejado. Se o valor nesse campo da lista for modificado fora do Config Connector, o Config Connector tenta alterá-lo novamente, o que pode não ser desejável.

Para ignorar esta limitação e permitir que os campos da lista sejam geridos externamente, use a anotação cnrm.cloud.google.com/state-into-spec. Esta anotação não é suportada para todos os recursos. Para ver se o seu recurso suporta a anotação, consulte a página de referência do recurso correspondente.

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

Ao definir o valor de state-into-spec como absent, o Config Connector ignora os campos de lista se não forem especificados na configuração do recurso. Isto deixa os campos da lista no recurso para serem geridos externamente.

Advertências

Os campos que são geridos pelo Config Connector e atualizados automaticamente por serviços externos podem acionar atualizações infinitas na API subjacente. Isto pode acontecer se a API subjacente tiver campos de dimensionamento automático ou atualização automática. Certifique-se de que estes campos são tratados como geridos externamente ativando a aplicação do lado do servidor para o recurso e excluindo o campo do ficheiro de configuração quando o aplicar.