O Apigee Hybrid suporta dois tipos de atualizações. A primeira é uma atualização no local, em que aplica uma alteração de configuração e o Hybrid inicia uma atualização progressiva do Kubernetes. No Kubernetes, as atualizações contínuas permitem que as atualizações de implementações ocorram sem tempo de inatividade, atualizando incrementalmente as instâncias de pods com novas.
O Apigee Hybrid também suporta uma atualização no estilo canário ou A/B. Numa atualização A/B, a nova revisão é implementada. No entanto, no início, uma pequena percentagem do tráfego é direcionada para esta. Ao longo do tempo, esta percentagem aumenta até que todo o tráfego seja direcionado para a revisão.
Atualizações no local
Para acionar uma atualização no local, basta modificar as definições pretendidas no ficheiro de substituições e aplicá-lo ao cluster. Por exemplo, suponhamos que quer alterar a memória runtime
atual de 1 Gi para 5 Gi:
Aqui está a configuração inicial:
... runtime: replicaCountMin: 2 replicaCountMax: 20 resources: requests: cpu: 1000m memory: 1Gi ...
Na nova configuração, a memória é alterada para 5 Gi:
... runtime: replicaCountMin: 2 replicaCountMax: 20 resources: requests: cpu: 1000m memory: 5Gi ...
Quando aplica a alteração, os pods atualizados são iniciados e substituem os pods existentes. Devido à funcionalidade de atualização contínua do Kubernetes, os clientes não sofrem qualquer tempo de inatividade.
Como fazer uma atualização A/B
Para fazer uma atualização AB, use a etiqueta revision
no ficheiro de substituições.
Por exemplo, suponhamos que quer alterar a memória runtime
atual de 1 Gi para 5 Gi:
Na configuração atual, revision
está definido como blue
:
... revision: blue ... runtime: replicaCountMin: 2 replicaCountMax: 20 resources: requests: cpu: 1000m memory: 1Gi ...
Na nova configuração, se alterar revision
para green
, indica que quer fazer uma atualização contínua quando a alteração for aplicada. O valor que define para revision
não é importante. Pode usar qualquer string que quiser, desde que a altere do valor anterior para outra coisa.
... revision: green ... runtime: replicaCountMin: 2 replicaCountMax: 20 resources: requests: cpu: 1000m memory: 5Gi ...
Quando aplica a alteração, uma pequena percentagem do tráfego é direcionada para a nova revisão. Ao longo do tempo, mais tráfego é direcionado para a nova revisão até atingir 100%. Nessa altura, a revisão antiga é eliminada.
Para acionar uma implementação de teste A/B, adicione a etiqueta revision
, se não estiver presente, ou altere o valor da etiqueta revision
, se já estiver presente. Não tem de fazer outras alterações ao ficheiro de substituições para acionar uma implementação de testes A/B.
A tabela seguinte mostra a agenda de uma implementação gradual de testes A/B:
Fase | Percentagem do tráfego | Tempo de espera |
---|---|---|
1 | 5% | 60 segundos |
2 | 20% | 10 segundos |
3 | 100% | 10 segundos |
Na versão atual, as percentagens e os tempos de espera não são configuráveis.