Gerenciar campos externamente
Quando o Config Connector cria um recurso em 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 estão disponíveis com uma solicitação HTTP GET).
Nesse caso, o campo é considerado "gerenciado externamente", já que o Kubernetes não é a fonte confiável desse valor.
Comportamento com a aplicação no lado do servidor
Se a aplicação do lado do servidor estiver ativada para o recurso, os valores dos campos gerenciados externamente no objeto serão atualizados continuamente para corresponder ao recurso Google Cloudsubjacente.
Se um valor estiver presente em um campo na especificação na configuração aplicada, ele não será gerenciado externamente.
Se o campo for removido, ele será gerenciado externamente.
Comportamento sem a aplicação no lado do servidor
Se a aplicação no lado do servidor não estiver ativada, os campos não especificados na especificação do recurso serão preenchidos com o valor lido na API Google Cloud , e o Config Connector vai aplicar esses valores inicialmente preenchidos.
Por exemplo: se o usuário aplicar uma configuração de recurso 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 no api-server será preenchido com esse valor:
# object in the api-server
spec:
foo: "foo"
bar: "baz" # populated by first reconciliation
Se o recurso Google Cloud for modificado diretamente de modo que bar
agora seja
baz-2
, a API Google Cloud será corrigida para o valor que foi
inicialmente preenchido 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 lista 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 gerenciados externamente por padrão. Isso significa que o Config Connector sempre assume a propriedade dos campos de lista na especificação do recurso, mesmo quando o campo não é especificado na configuração do recurso original.
No momento em que uma especificação de recurso é aplicada, o Config Connector lê o valor dos campos de lista da API Google Cloud e trata esse valor inicial como a fonte da verdade e o estado desejado. Se o valor no campo de lista for modificado fora do Config Connector, ele tentará mudar de volta, o que pode não ser o desejado.
Para ignorar essa limitação e permitir que os campos de lista sejam gerenciados externamente,
use a anotação cnrm.cloud.google.com/state-into-spec
. Essa
anotação não é compatível com todos os recursos. Para saber se o
recurso é compatível com a anotação, verifique 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 eles não forem especificados na configuração do recurso. Isso deixa
os campos de lista no recurso para serem gerenciados externamente.
Advertências
Os campos que são gerenciados pelo Config Connector e atualizados automaticamente por serviços externos podem acionar uma atualização infinita na API subjacente. Isso pode acontecer se essa API tiver campos de escalonamento automático ou de atualização automática. Tenha certeza que esses campos sejam tratados como gerenciados externamente. Para isso, ative a aplicação no lado do servidor para o recurso e deixe o campo fora do arquivo de configuração ao aplicar.