Nesta página, descrevemos como fazer upgrade para o Anthos Service Mesh.
Os administradores da plataforma podem fazer upgrade para o Anthos Service Mesh. O upgrade para o Anthos Service Mesh é baseado em revisão ou canário, em que as versões nova e anterior do plano de controle estão sendo executadas enquanto você testa a nova versão com uma pequena porcentagem das cargas de trabalho. Essa abordagem é mais segura do que um upgrade no local, em que a nova versão do plano de controle substitui a versão anterior.
A reimplantação dos componentes do plano de controle do Anthos Service Mesh leva cerca de 5 a 10 minutos para ser concluída. Também é necessário injetar novos proxies sidecar em todas as cargas de trabalho para que eles sejam atualizados com a versão atual do Anthos Service Mesh. O tempo necessário para atualizar os proxies sidecar pode ser de cerca de 100 pods por minuto, mas isso depende de muitos fatores, como o número de pods, o número de nós, as configurações de escalonamento da implantação, os orçamentos de interrupção de pod e de outras definições de configuração.
Pré-requisitos
Antes de fazer upgrade, verifique se você atende às seguintes condições:
- Você tem um cluster de usuário de destino gerenciado pelo cluster de administrador.
- O cluster de usuário de destino tem uma instalação atual do Anthos Service Mesh com upgrades disponíveis.
Ver a instalação atual
Confirme se o Anthos Service Mesh está instalado no cluster.
Console
No console do centro de gerenciamento, acesse o menu do Service Mesh para ver a lista de clusters com o Anthos Service Mesh instalado.
API
É possível encontrar os seguintes recursos personalizados em um cluster de administrador que descreve a instalação atual do Anthos Service Mesh:
Um objeto
ServiceMeshBinding
que vincula um objetoServiceMeshFeatureSpec
ao ID do cluster de usuário. Execute o comando a seguir para encontrar o objeto. Como esse comando pode retornar vários objetos, é preciso encontrar o objeto com o ID do cluster de destino na especificação.KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center
Veja um exemplo do conteúdo do objeto:
apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
Um objeto
ServiceMeshFeatureSpec
que define as especificações da instalação do Anthos Service Mesh. O namespace e o nome dela são referenciados no campoconfig.configRef
, no objetoServiceMeshBinding
descrito no exemplo anterior. Execute o seguinte comando para visualizar o objeto.KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshfeaturespec PREVIOUS_SERVICE_MESH_SPEC -n anthos-management-center -o yaml
Veja um exemplo do conteúdo do objeto:
apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshFeatureSpec metadata: name:PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center spec: version: 1.7.3-asm.6
Instalar uma versão mais recente do Anthos Service Mesh
É possível atualizar para uma versão mais recente do Anthos Service Mesh usando o console do centro de gerenciamento ou a API.
Console
- No console do centro de gerenciamento, acesse o menu Painel.
- Clique na guia Upgrades para ver todos os upgrades disponíveis.
- Clique em Ver upgrades no cluster que você quer fazer upgrade.
- Na lista "Upgrades disponíveis", encontre a versão de destino do Anthos Service Mesh que você quer fazer upgrade e clique em Fazer upgrade para abrir a página de upgrade do Anthos Service Mesh.
- Confirme as informações da versão de destino, como a versão, a descrição e um link para as notas da versão e clique em Continuar.
- Na caixa de diálogo pop-up, clique em Fazer upgrade para começar a instalar a versão de destino do Anthos Service Mesh no cluster de destino.
- A página Service Mesh é aberta e é possível ver que a versão de destino está sendo instalada.
API
Execute as etapas a seguir usando comandos kubectl
no cluster de administrador
para instalar uma versão mais recente do Anthos Service Mesh:
Crie um novo objeto
ServiceMeshFeatureSpec
para a nova versão. Veja uma amostra de objeto para a versão1.8.3-asm.2
:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshFeatureSpec metadata: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center spec: version: 1.8.3-asm.2
Atualize o objeto
ServiceMeshBinding
atual para inserir uma nova entrada para vincular o novoServiceMeshFeatureSpec
ao cluster:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: PREVIOUS_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID - configRef: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
A versão mais recente do Anthos Service Mesh é instalada no cluster de administrador. É possível verificar se a instalação está pronta usando o seguinte comando:
KUBECONFIG=ADMIN_KUBECONFIG kubectl get servicemeshbinding -n anthos-management-center -o jsonpath="{range .items[*].status.bindingItemStatuses[*]}{'\n'}{['clusterID', 'configRef', 'conditions']}" | grep NEW_SERVICE_MESH_SPEC | grep TARGET_CLUSTER_ID
Substitua
TARGET_CLUSTER_ID
eNEW_SERVICE_MESH_SPEC
pelos valores configurados no objetoServiceMeshBinding
.Veja um exemplo da saída:
target-user-cluster-1 {"name":"new-spec-q64x7","namespace":"anthos-management-center"} [{"lastTransitionTime":"2021-05-27T18:06:27Z","message":"","observedGeneration":1,"reason":"Healthy","status":"True","type":"Ready"}]
O
status: true
da condiçãoReady
indica que a instalação foi concluída.
A versão anterior do Anthos Service Mesh não é removida automaticamente. É necessário migrar manualmente as cargas de trabalho para a nova versão do Anthos Service Mesh e desinstalar a versão anterior.
Migre suas cargas de trabalho
Execute as etapas a seguir no cluster de usuário para migrar suas cargas de trabalho:
Receba o rótulo de revisão da versão anterior e da nova versão do Anthos Service Mesh. Para encontrar esses valores:
Console
- No console do centro de gerenciamento, acesse o menu da Malha de serviço.
- Na lista de clusters, localize o rótulo de revisão na coluna "Revisão" do cluster.
API
Execute este comando:
KUBECONFIG=USER_KUBECONFIG kubectl get pod -n istio-system -l app=istiod -L istio.io/rev
Veja um exemplo da saída:
NAME READY STATUS RESTARTS AGE REV istiod-asm-173-6-756d989c58-p84b9 1/1 Running 0 13h asm-173-6 istiod-asm-173-6-756d989c58-t6vh8 1/1 Running 0 13h asm-173-6 istiod-asm-183-2-76f64c6bc7-2qnxq 1/1 Running 0 17h asm-183-2 istiod-asm-183-2-76f64c6bc7-8nrpz 1/1 Running 0 17h asm-183-2
Na saída, o rótulo de revisão está na coluna REV. Neste exemplo, o valor é
asm-183-2
. Esse rótulo é usado posteriormente para acionar a injeção de sidecar na nova versão do Anthos Service Mesh.Adicionar o rótulo de revisão a um namespace: No comando a seguir, altere
REVISION
para o valor que corresponda ao rótulo de revisão da nova versão do Anthos Service Mesh.KUBECONFIG=USER_KUBECONFIG kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite
Reinicie as cargas de trabalho para acionar a nova injeção, por exemplo, para reiniciar todas as implantações em um namespace:
KUBECONFIG=USER_KUBECONFIG kubectl rollout restart deployment -n NAMESPACE
Verifique se os pods estão configurados para apontar para a nova versão de
istiod
.KUBECONFIG=USER_KUBECONFIG kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
Teste o aplicativo para verificar se as cargas de trabalho estão funcionando corretamente.
Se você tiver cargas de trabalho em outros namespaces, repita as etapas de 2 a 5 para rotular o namespace e reiniciar as cargas de trabalho.
Excluir a versão anterior do Anthos Service Mesh
Se o aplicativo estiver funcionando conforme o esperado, desinstale a versão anterior do Anthos Service Mesh usando o centro de gerenciamento ou a API.
Console
- No console do centro de gerenciamento, acesse o menu da Malha de serviço.
- Na coluna Versões, clique no link da versão anterior do Anthos Service Mesh.
- Na página Editar malha de serviço, clique em Remover malha de serviço.
- Antes da exclusão, uma caixa de diálogo pop-up mostra o resultado de uma verificação de confiança.
A caixa de diálogo lista todos os namespaces e pods que ainda dependem da
versão anterior do Anthos Service Mesh verificando o rótulo
istio.io/rev
em namespaces e pods. Se a verificação encontrar alguma dessas dependências, não será possível continuar até migrar esses pods ou namespaces. - Se a verificação de confiança for aprovada, clique em Remover para começar a desinstalar o Anthos Service Mesh no cluster de destino.
Depois de enviar a solicitação de exclusão, a página do Service Mesh é aberta e a versão anterior do Anthos Service Mesh não fica mais visível. A desinstalação dos recursos anteriores do Anthos Service Mesh pode levar vários minutos para ser concluída.
API
Antes de excluir a versão anterior do Anthos Service Mesh, verifique se não há pods ou namespaces que dependam dessa versão do Anthos Service Mesh.
Execute o seguinte comando para verificar as dependências de namespace.
KUBECONFIG=USER_KUBECONFIG kubectl get namespace -l istio.io/rev=PREVIOUS_REVISION
Substitua
PREVIOUS_REVISION
pelo rótulo de revisão da versão anterior do Anthos Service Mesh.Execute o comando a seguir para verificar as dependências do pod.
KUBECONFIG=USER_KUBECONFIG kubectl get pod -l istio.io/rev=PREVIOUS_REVISION --field-selector metadata.namespace!=istio-system --all-namespaces
Caso as consultas retornem resultados vazios, avance para a próxima etapa. Caso contrário, migre a carga de trabalho primeiro antes de continuar.
Atualize o objeto
ServiceMeshBinding
no cluster de administrador para desvincular a especificação de atributos anterior do cluster de destino. Veja um exemplo do objetoServiceMeshBinding
após remover a entradaPREVIOUS_SERVICE_MESH_SPEC
:apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1 kind: ServiceMeshBinding metadata: name: service-mesh-binding-sample namespace: anthos-management-center spec: configs: - configRef: name: NEW_SERVICE_MESH_SPEC namespace: anthos-management-center placement: clusterIDs: - TARGET_CLUSTER_ID
A remoção da versão anterior do Anthos Service Mesh será iniciada assim que o
ServiceMeshBinding
for atualizado. A implantação pode levar alguns minutos para ser concluída. Execute o comando a seguir para verificar se a versão anterior foi removida.KUBECONFIG=USER_KUBECONFIG kubectl get deployment -n istio-system -l istio.io/rev=PREVIOUS_REVISION
Esse comando retornará um resultado vazio se a desinstalação estiver concluída.