Neste guia, explicamos como fazer upgrade do Anthos Service Mesh da versão 1.6.4+ para a versão 1.7.8 no GKE no VMware. Para fazer upgrade do Anthos Service Mesh 1.4.5 ou mais recente, primeiro é necessário fazer o upgrade para o Anthos Service Mesh 1.5. Não há compatibilidade para fazer upgrade direto do Anthos Service Mesh 1.4 para 1.6.
Recomendamos um upgrade duplo do plano de controle, também conhecido como upgrade canário. Nele, as versões nova e anterior do plano de controle são 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. O upgrade do istio-ingressgateway é feito no local, portanto, você precisa planejar uma interrupção no cluster.A reimplantação dos componentes do plano de controle do Anthos Service Mesh leva cerca de 5 a 10 minutos para ser concluída. Além disso, é 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 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 dos pods e outras definições de configuração. Uma estimativa aproximada do tempo necessário para atualizar os proxies sidecar é de 100 pods por minuto.
Como se preparar para o upgrade
Se você personalizou a instalação anterior, precisará das mesmas personalizações
ao migrar ou fazer upgrade para o Anthos Service Mesh. Se você tiver personalizado a instalação ao adicionar
a sinalização --set values
para istioctl install
, recomendamos que você adicione essas
configurações a um arquivo YALM IstioOperator
, embora você possa continuar usando a
sinalização --set_values
. Para personalizar a instalação, especifique a sinalização -f
com
um arquivo YAML ao executar o comando istioctl install
.
Como configurar o ambiente
Você precisa das seguintes ferramentas na máquina onde quer instalar o Anthos Service Mesh. Observe que só é possível instalar o Anthos Service malha em um cluster de usuários, não em um cluster de administrador.
- Ferramenta de linha de comando
curl
- A Google Cloud CLI.
Depois de instalar a Google Cloud CLI:
Faça a autenticação com a Google Cloud CLI:
gcloud auth login
Atualize os componentes:
gcloud components update
Instale
kubectl
:gcloud components install kubectl
Instale a versão necessária de
kpt
:curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2 chmod +x kpt_0_39_2 alias kpt="$(readlink -f kpt_0_39_2)"
Alterne o contexto para seu cluster de usuário:
kubectl config use-context CLUSTER_NAME
Conceda permissões de administrador de cluster à sua conta de usuário (seu endereço de e-mail de login do Google Cloud). Você precisa dessas permissões para criar as regras necessárias de controle de acesso baseado em papéis (RBAC, na sigla em inglês) para o Anthos Service Mesh:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=USER_ACCOUNT
Como fazer o download do arquivo de instalação
-
Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho
atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz
-
Faça o download do arquivo de assinatura e use
openssl
para verificar a assinatura:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
A saída esperada é
Verified OK
. -
Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.7.8-asm.10-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.7.8-asm.10
, que contém:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
usada para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
-
Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho
atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz
-
Faça o download do arquivo de assinatura e use
openssl
para verificar a assinatura:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
A saída esperada é
Verified OK
. -
Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.7.8-asm.10-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.7.8-asm.10
, que contém:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
usada para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
-
Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho
atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip
-
Faça o download do arquivo de assinatura e use
openssl
para verificar a assinatura:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
A saída esperada é
Verified OK
. -
Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.7.8-asm.10-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual chamado
istio-1.7.8-asm.10
, que contém:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
usada para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
-
Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
Para facilitar, adicione as ferramentas ao diretório
/bin
/bin do seu PATH.export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
Como fazer upgrade do Anthos Service Mesh
Para instalar uma nova versão do Anthos Service Mesh, recomendamos seguir o processo
de upgrade do plano de controle duplo,
chamado de "upgrade canário" na documentação do Istio. Com um upgrade do plano
de controle duplo, você instala uma nova versão do plano de controle junto com o plano
atual. Ao instalar a nova versão, inclua uma
etiqueta revision
que identifique a versão do novo plano de controle. Cada
revisão é uma implementação completa do plano de controle do Anthos Service Mesh com implantação e
serviço próprios.
Em seguida, você migra para a nova versão definindo a mesma etiqueta revision
em suas
cargas de trabalho para apontar para o novo plano de controle e realizando uma reinicialização gradual para
reinjetar os proxies com a nova versão do Anthos Service Mesh. Com essa abordagem,
é possível monitorar o efeito do upgrade em uma pequena porcentagem das
cargas de trabalho. Depois de testar o aplicativo, é possível migrar todo o tráfego para a
nova versão. Essa abordagem é muito mais segura do que fazer um upgrade no local em que um
novo plano de controle substitui a versão anterior do plano de controle.
Como atualizar o plano de controle
Execute o seguinte comando para implantar o novo plano de controle. Se você quiser
ativar um
recurso opcional compatível,
inclua -f
e o nome de arquivo YAML na linha de comando a seguir. Para mais informações,
consulte
Como ativar recursos opcionais.
istioctl install \ --set profile=asm-multicloud \ --set revision=asm-178-10
O argumento --set revision
adiciona um rótulo istio.io/rev
a istiod
. Depois de executar o comando, você tem duas implantações e dois serviços de plano de controle sendo executados lado a lado:
kubectl get pods -n istio-system
Exemplo de saída:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-c56675fcd-86zdn 1/1 Running 0 2m9s istio-ingressgateway-c56675fcd-vn4nv 1/1 Running 0 2m21s istiod-asm-178-10-6d5cfd4b89-xztlr 1/1 Running 0 3m44s istiod-fb7f746f4-wcntn 1/1 Running 0 50m promsd-579f9f9bf4-m65nc 2/2 Running 1 50m
Como reimplantar cargas de trabalho
A instalação da nova revisão não afeta os proxies sidecar atuais. Para
fazer upgrade, configure-os para que direcionem para o novo plano de controle. Isso
é controlado durante a injeção do sidecar com base no rótulo de namespace
istio.io/rev
.
Atualize as cargas de trabalho que serão injetadas com a nova versão do Anthos Service Mesh:
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-178-10 --overwrite
O rótulo
istio-injection
precisa ser removido porque tem precedência sobre o rótuloistio.io/rev
.Reinicie os pods para acionar a nova injeção:
kubectl rollout restart deployment -n NAMESPACE
Verifique se os pods estão configurados de modo que apontem para o plano de controle
istiod-asm-178-10
:kubectl get pods -n NAMESPACE -l istio.io/rev=asm-178-10
Teste o aplicativo para verificar se as cargas de trabalho estão funcionando corretamente.
Se você tiver cargas de trabalho em outros namespaces, repita os passos anteriores para cada namespace.
Se o aplicativo funcionar como esperado, pule para Concluir o upgrade. Caso contrário, execute os passos a seguir para voltar à versão anterior.
Atualize as cargas de trabalho a serem injetadas com a versão anterior do plano de controle:
kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
Reinicie os pods para acionar a reinjeção para que os proxies tenham a versão anterior:
kubectl rollout restart deployment -n NAMESPACE
Reverta os componentes do plano de controle:
Reverter para a versão 1.6 anterior
Reimplante a versão anterior do
istio-ingressgateway
:kubectl -n istio-system rollout undo deploy istio-ingressgateway
Remova o novo plano de controle:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-178-10 -n istio-system --ignore-not-found=true
Reverter para a versão 1.5
Mude para o diretório em que você fez o download do arquivo de instalação do Anthos Service Mesh 1.5.
Reinstale a versão anterior do Anthos Service Mesh. No comando a seguir, se você tiver ativado recursos opcionais, inclua as sinalizações
--set values
ou-f
aplicáveis com o nome do arquivo YAML.bin/istioctl install \ --set profile=asm-multicloud \
Conclua o upgrade
Se o aplicativo estiver funcionando corretamente, remova o plano de controle antigo para concluir o upgrade:
kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true