Estratégia de reconciliação

O Config Connector tem consistência posterior

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 para criar recursos do Google Cloud pode variar de acordo com o tipo de recurso. Por exemplo, um único PubSubTopic leva alguns segundos para ser criado. Os recursos do Google Cloud não atingem a consistência até que sejam criados. Por exemplo, ao criar um SQLInstance e um SQLDatabase, o sistema fica 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. É possível visualizar quaisquer 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 são mutáveis (por exemplo, a senha de um usuário do SQL). Devido à impossibilidade de ver se esses campos foram modificados, os campos mutáveis (mas ilegíveis) serão atualizados somente quando o recurso personalizado for modificado.

Os recursos não serã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 emitirá para o recurso um evento "UpdatedFailed" do Kubernetes, em vez de fazer essa recriação. Em seguida, o usuário precisa excluir e recriar 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]