Estratégia de reconciliação

Com a configuração declarativa, você define o estado pretendido do sistema. O sistema trabalha constantemente para permanecer o mais próximo possível desse estado. Para mais informações, consulte Gerenciamento declarativo de objetos do Kubernetes usando arquivos de configuração.

Com o Config Connector, crie e atualize recursos em qualquer ordem, independentemente dos relacionamentos de dependência. O GKE move sua configuração declarada em direção à consistência posterior com o estado pretendido.

Por exemplo, se você criar um PubSubSubscription antes do PubSubTopic correspondente, o Config Connector aguardará até que o tópico seja criado antes de criar a assinatura associada.

A duração da instalação do Config Connector continua inconsistente e depende do número e dos tipos de recursos que ele gerencia. As alterações em um cluster do GKE geralmente são executadas em segundos. No entanto, o tempo de criação de recursos do Google Cloud pode variar de acordo com o tipo de recurso. Por exemplo, uma única PubSubTopic leva segundos para criar. Os recursos do Google Cloud não alcançam a consistência até que sejam criados. Por exemplo, ao criar um SQLInstance e um SQLDatabase, o sistema é inconsistente por um período de minutos enquanto o banco de dados é criado.

O GKE e o Config Connector reconciliam cada recurso a cada atualização ou após um período de instabilidade com uma média de 10 minutos. Quando há um erro na reconciliação, o Config Connector tenta novamente com espera exponencial em que a espera máxima é de dois minutos. Você pode ver os erros nos Eventos de um determinado recurso.

Campos mutáveis (mas ilegíveis) são acionados somente quando há alterações

Algumas APIs expõem campos que não são legíveis, mas mutáveis (por exemplo, a senha de um usuário SQL). Devido à impossibilidade de ver se esses campos foram modificados, os campos mutáveis, mas ilegíveis, são atualizados apenas quando o recurso personalizado é modificado.

Os recursos não são recriados ao modificar campos imutáveis

Alguns campos em um recurso são imutáveis e não podem ser reconciliadas sem serem excluídos e recriados em seguida.

Nessas situações, o Config Connector emite um evento "UpdatedFailed" para o recurso em vez de executar essa recriação. Em seguida, exclua e recrie o recurso.

Evento de exemplo:

Warning  UpdateFailed  37m (x643 over 15d)    computeinstance-controller  Update call failed: the desired mutation for the following field(s) is invalid: [bootDisk.0.InitializeParams.0.Image networkInterface.0.NetworkIp]