Estratégia de conciliação
Com a configuração declarativa, define o estado pretendido do sistema. O sistema funciona então constantemente para permanecer o mais próximo possível deste estado. Consulte o artigo Gestão declarativa de objetos do Kubernetes através de ficheiros de configuração para mais informações.
Com o Config Connector, pode criar e atualizar recursos em qualquer ordem, independentemente das relações de dependência. O GKE move a configuração declarada para a consistência final com o estado desejado.
Por exemplo, se criar um PubSubSubscription
antes do PubSubTopic
correspondente, o Config Connector aguarda até que o tópico seja criado antes de criar a subscrição associada.
A duração da inconsistência da instalação do Config Connector depende do número e dos tipos de recursos que gere. Normalmente, as alterações a um cluster do GKE são executadas em segundos. No entanto, o tempo necessário para criar
Google Cloud recursos pode variar consoante o tipo de recurso. Por exemplo, a criação de um único recurso PubSubTopic
demora segundos. Google CloudOs recursos não atingem a consistência até serem criados. Por exemplo, quando cria um SQLInstance
e um SQLDatabase
, o sistema é inconsistente durante alguns minutos enquanto a base de dados é criada.
O GKE e o Config Connector reconciliam cada recurso com cada atualização ou após um período de instabilidade com uma média baseada no intervalo predefinido pré-configurado. Pode encontrar o intervalo predefinido em "Config Connector Default Average Reconcile Interval In Seconds" na página de referência de cada recurso. Para ver links para cada recurso, consulte a Vista geral dos recursos. Quando existe um erro na conciliação, o Config Connector tenta novamente com retirada exponencial, em que a retirada máxima é de dois minutos. Pode ver quaisquer erros nos Eventos de um determinado recurso.
Configurar o intervalo de conciliação
A partir do Config Connector 1.102, pode configurar o intervalo de reconciliação médio para recursos geridos pelo Config Connector com a anotação cnrm.cloud.google.com/reconcile-interval-in-seconds
. O valor da anotação substitui o valor predefinido de "Config Connector Default Average
Reconcile Interval In Seconds" na página de referência de recursos.
O valor da anotação deve ser um número inteiro não negativo que representa o tempo em segundos. Se o valor for definido como 0, o Config Connector deixa de iniciar reconciliações para o recurso assim que atinge o estado UpToDate.
Por exemplo, se quiser que o Config Connector reconcilie um recurso com menos frequência para evitar atingir os Google Cloud problemas de quota da API subjacente, pode definir o valor do intervalo de reconciliação médio como 1 hora.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Se quiser que o Config Connector reconcilie um recurso com mais frequência para corrigir desvios mais cedo, pode definir a anotação com um valor pequeno.
Pode anotar todos os recursos de um tipo específico que partilham o mesmo Group Version Kind (GVK) com o seguinte script:
#!/bin/bash
KIND=RESOURCE_KIND
NAMESPACE=RESOURCE_NAMESPACE
ANNOTATION_KEY="cnrm.cloud.google.com/reconcile-interval-in-seconds"
ANNOTATION_VALUE=RECONCILE_INTERVAL
kubectl annotate --overwrite --all ${KIND} ${ANNOTATION_KEY}=${ANNOTATION_VALUE} -n ${NAMESPACE}
echo "Annotation added to all ${KIND} RESOURCE"
Substitua o seguinte:
RESOURCE_KIND
: o tipo de recurso que quer anotar.RESOURCE_NAMESPACE
: o espaço de nomes que contém os recursos que quer anotar.RECONCILE_INTERVAL
: o intervalo de conciliação em segundos.
Pode definir o intervalo de conciliação como 0 para desativar a correção de desvio para um recurso, mas não desativa a ativação do recurso. Se fizer alterações ao recurso Spec
, o recurso é reconciliado novamente.
A definição do intervalo de conciliação como 0 é irreversível. Isto significa que alterar o valor novamente para um número diferente de zero não faz com que o Config Connector reconcilie o recurso novamente.
Se quiser reverter o intervalo de conciliação de 0, tem as seguintes opções:
- Modifique a especificação do recurso com o valor do intervalo de conciliação para ativar novas conciliações.
- Abandone o recurso definindo a anotação
cnrm.cloud.google.com/deletion-policy: "abandon"
e recrie o recurso com um valor de intervalo de conciliação diferente de 0.
Os campos mutáveis, mas ilegíveis, são acionados apenas na alteração
Algumas APIs expõem campos que não são legíveis, mas são mutáveis (por exemplo, a palavra-passe de um utilizador SQL). Devido à impossibilidade de ver se estes campos foram modificados, os campos mutáveis, mas ilegíveis, só são atualizados quando o recurso personalizado é modificado.
Os recursos não são recriados quando modifica campos imutáveis
Alguns campos num recurso são imutáveis e não podem ser reconciliados sem eliminar e, em seguida, recriar o recurso de destino.
Nestas situações, o Config Connector emite um evento do Kubernetes "UpdatedFailed" para o recurso em vez de realizar esta recriação. Em seguida, tem de eliminar e recriar o recurso.
Exemplo de evento:
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]