Vista geral das restrições
As restrições do Apigee Hybrid são um mecanismo que alerta os clientes para um potencial problema antes que este possa afetar uma instância do Hybrid. Por outras palavras, as restrições híbridas impedem um comando se este colocar em risco a estabilidade de uma instância híbrida. Quer se trate de uma configuração incorreta ou de um recurso insuficiente, as proteções híbridas impedem quaisquer modificações a uma instância híbrida até que o risco do problema seja removido. Isto evita que o cliente gaste tempo em problemas que, normalmente, demorariam horas ou dias a resolver.
Usar proteções com o Apigee hybrid
Para usar as restrições híbridas, execute os mesmos comandos de instalação do Helm híbrido ou de atualização do Helm híbrido documentados nas instruções de instalação híbrida. Não são necessários comandos adicionais para executar as proteções.
Quando emite um comando Helm para o Apigee hybrid, ocorrem duas situações antes de o comando Helm aplicar a configuração à sua instância híbrida:
- O Helm cria um pod de restrições temporário com a configuração aplicada. Se o pod de restrições for iniciado até um estado normal, o pod testa a sua instância híbrida em relação à configuração aplicada. Se os testes forem aprovados, o pod Guardrails é terminado e a sua configuração é aplicada à instância híbrida do Apigee.
- Se o teste falhar, o pod Guardails é deixado num estado não saudável para permitir o diagnóstico do pod. O comando helm apresenta uma mensagem de erro a comunicar que o pod Guardrails falhou.
O exemplo seguinte mostra a utilização de restrições para testar a conetividade de rede de uma instância híbrida para o plano de controlo do Apigee como parte da instalação do componente apigee-datastore
. Pode usar a mesma sequência para todos os componentes do Apigee Hybrid:
Instale o componente apigee-datastore através do seguinte comando:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
Se existir um erro imediato, o comando Helm também apresenta uma mensagem de erro a indicar que as verificações das restrições falharam, como no exemplo seguinte:
helm upgrade datastore apigee-datastore/ \
--install \
--namespace apigee \
-f my-overrides.yaml
. . .
Error: UPGRADE FAILED: pre-upgrade hooks failed: 1 error occurred:
* pod apigee-hybrid-helm-guardrail-datastore failed
Para ver que verificação falhou e porquê, verifique os registos do pod de restrições, como no exemplo seguinte:
kubectl logs -n apigee apigee-hybrid-helm-guardrail-datastore
{"level":"INFO","timestamp":"2024-02-01T20:28:55.934Z","msg":"logging enabled","log-level":"INFO"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"","checkpoint":"upgrade","component":"apigee-datastore"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"initiating pre-install checks"}
{"level":"INFO","timestamp":"2024-02-01T20:28:55.935Z","msg":"check validation starting...","check":"controlplane_connectivity"}
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}
Neste exemplo, a mensagem de falha do teste real é esta parte:
{"level":"ERROR","timestamp":"2024-02-01T20:28:55.961Z","msg":"connectivity test failed","check":"controlplane_connectivity","host":"https://apigee.googleapis.com","error":"Get \"https://apigee.googleapis.com\": dial tcp: lookup apigee.googleapis.com on 10.92.0.10:53: no such host"}
O pod Guardrails é aprovisionado automaticamente quando executa o comando helm. Se o teste de conetividade do plano de controlo do Apigee for aprovado, o pod de restrições é terminado no final da execução.
Verifique rapidamente o estado dos pods após emitir o comando helm install
. O seguinte resultado de exemplo mostra os pods do limite de segurança num estado normal, o que significa que o teste de conetividade do plano de controlo foi aprovado:
kubectl get pods -n apigee -w
NAME READY STATUS RESTARTS AGE
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 1s
apigee-hybrid-helm-guardrail-datastore 0/1 ContainerCreating 0 1s
apigee-hybrid-helm-guardrail-datastore 0/1 Completed 0 2s
apigee-hybrid-helm-guardrail-datastore 0/1 Completed 0 3s
apigee-hybrid-helm-guardrail-datastore 0/1 Terminating 0 3s
apigee-hybrid-helm-guardrail-datastore 0/1 Terminating 0 3s
Se o teste de conetividade do plano de controlo do Apigee falhar, o pod Guardrails permanece no estado de erro, semelhante ao seguinte exemplo de saída:
kubectl get pods -n apigee -w
NAME READY STATUS RESTARTS AGE
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Pending 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 ContainerCreating 0 0s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 4s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 5s
apigee-hybrid-helm-guardrail-datastore 0/1 Error 0 6s
Desativar temporariamente as restrições
Se precisar de desativar as verificações das restrições, adicione a flag --no-hooks
ao comando Helm. O exemplo seguinte mostra a flag --no-hooks
num comando Helm:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f overrides.yaml \ --no-hooks
Verificações de restrições
A tabela seguinte apresenta detalhes de algumas das verificações de restrições enviadas como parte da versão 1.14 do Apigee hybrid.Nome | Posto de controlo | Descrição |
---|---|---|
cassandra_backup_enabled |
upgrade |
Introduzido na versão: 1.14.0
Gravidade: Uma verificação que requer a ativação da cópia de segurança antes da atualização. São necessárias cópias de segurança antes da atualização para suportar o restauro para a versão anterior, se necessário. Consulte o artigo Cópia de segurança e recuperação do Cassandra para ver detalhes sobre as opções de cópia de segurança disponíveis. |
cassandra_recent_backup_csi |
upgrade |
Introduzido na versão: 1.14.0
Gravidade: Uma verificação que requer a presença da cópia de segurança nas últimas 24 horas antes da atualização se a cópia de segurança da CSI estiver ativada. Isto minimiza a potencial perda de dados se for necessário fazer uma restauração para a versão anterior. Consulte o artigo Cópia de segurança de CSI para ver detalhes sobre a cópia de segurança e o restauro de CSI. |
Configurar proteções no ficheiro de substituições
A partir da versão 1.12 do Apigee hybrid, as restrições são configuradas por predefinição em cada gráfico. Pode substituir o URL da imagem, a etiqueta e a política de obtenção de imagens no ficheiro overrides
.
Por exemplo, o URL da imagem, a etiqueta e a política de obtenção de restrições abaixo seriam adicionados ao seu ficheiro de substituições:
# Apigee Ingressgateway ingressGateway: image: pullPolicy: Always ## NOTE: The Guardrails config is below. The ingressgateway config above is for position reference only and is NOT required for Guardrails config. # Apigee Guardrails guardrails: image: url: "gcr.io/ng-hybrid/guardrails/apigee-watcher" tag: "1.14.2" pullPolicy: Always
Usar tolerâncias do Kubernetes com as proteções
Também pode adicionar tolerâncias às restrições no seu ficheiro overrides
. Se não forem definidas tolerâncias na configuração overrides
das restrições, as restrições usam as tolerâncias definidas globalmente.
Por exemplo, para incluir tolerâncias especificamente na secção Guardrails do seu ficheiro overrides
, adicionaria algo semelhante à seguinte estrofe:
# Apigee Guardrails guardrails: image: url: "gcr.io/ng-hybrid/guardrails/apigee-watcher" tag: "1.14.2" pullPolicy: Always tolerations: - key: "say" operator: "Equal" value: "taunt" effect: "NoSchedule"