Como fazer upgrade do Anthos Service Mesh no local

Neste guia, explicamos como fazer upgrade do Anthos Service Mesh da versão 1.5.4+ or 1.6.4+ para a versão 1.6.14 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

Nesta seção, descrevemos os passos que você segue para se preparar para fazer upgrade do Anthos Service Mesh.

  1. Analise os Recursos compatíveis e este guia para conhecer os recursos e o processo de upgrade.

  2. Se você ativou recursos opcionais quando instalou a versão anterior do Anthos Service Mesh, precisa ativar os mesmos recursos ao fazer upgrade. Para ativar recursos opcionais, adicione sinalizações --set values ou especifique a sinalização -f com um arquivo YAML ao executar o comando istioctl install.

  3. Se você estiver fazendo upgrade do Anthos Service Mesh 1.5, siga estes passos caso precise reverter:

    1. Crie um diretório chamado asm-1-5.

    2. Faça o download do arquivo de instalação 1.5 para o diretório asm-1-5.

    3. Extraia o conteúdo do arquivo para o diretório asm-1-5.

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.

Depois de instalar a Google Cloud CLI:

  1. Faça a autenticação com a Google Cloud CLI:

    gcloud auth login
    
  2. Atualize os componentes:

    gcloud components update
    
  3. Instale kubectl:

    gcloud components install kubectl
    
  4. 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)"
    
  5. Alterne o contexto para seu cluster de usuário:

    kubectl config use-context CLUSTER_NAME
  6. 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

    Linux

  1. 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.6.14-asm.2-linux-amd64.tar.gz
  2. 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.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    A saída esperada é Verified OK.

  3. 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.6.14-asm.2-linux-amd64.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual chamado istio-1.6.14-asm.2, 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ório bin.
    • Os perfis de configuração do Anthos Service Mesh estão no diretório manifests/profiles.

  4. macOS

  5. 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.6.14-asm.2-osx.tar.gz
  6. 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.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    A saída esperada é Verified OK.

  7. 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.6.14-asm.2-osx.tar.gz

    O comando cria um diretório de instalação no seu diretório de trabalho atual chamado istio-1.6.14-asm.2, 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ório bin.
    • Os perfis de configuração do Anthos Service Mesh estão no diretório manifests/profiles.

  8. Windows

  9. 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.6.14-asm.2-win.zip
  10. 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.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    A saída esperada é Verified OK.

  11. 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.6.14-asm.2-win.zip

    O comando cria um diretório de instalação no seu diretório de trabalho atual chamado istio-1.6.14-asm.2, 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ório bin.
    • Os perfis de configuração do Anthos Service Mesh estão no diretório manifests/profiles.

  12. Verifique se você está no diretório raiz da instalação do Anthos Service Mesh.
    cd istio-1.6.14-asm.2
  13. Para facilitar, adicione as ferramentas ao diretório /bin/bin do seu PATH.
    export PATH=$PWD/bin:$PATH

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-1614-2

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-1614-2-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.

  1. 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-1614-2 --overwrite

    O rótulo istio-injection precisa ser removido porque tem precedência sobre o rótulo istio.io/rev.

  2. Reinicie os pods para acionar a nova injeção:

    kubectl rollout restart deployment -n NAMESPACE
  3. Verifique se os pods estão configurados de modo que apontem para o plano de controle istiod-asm-1614-2:

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2

  4. Teste o aplicativo para verificar se as cargas de trabalho estão funcionando corretamente.

  5. Se você tiver cargas de trabalho em outros namespaces, repita os passos anteriores para cada namespace.

  6. Se o aplicativo funcionar como esperado, pule para Concluir o upgrade. Caso contrário, execute os passos a seguir para voltar à versão anterior.

    1. 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

    2. Reinicie os pods para acionar a reinjeção para que os proxies tenham a versão anterior:

       kubectl rollout restart deployment -n NAMESPACE

    3. Reverta os componentes do plano de controle:

      Reverter para a versão 1.6 anterior

      1. Reimplante a versão anterior do istio-ingressgateway:

        kubectl -n istio-system rollout undo deploy istio-ingressgateway
        
      2. Remova o novo plano de controle:

        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-1614-2 -n istio-system --ignore-not-found=true
        

      Reverter para a versão 1.5

      1. Mude para o diretório em que você fez o download do arquivo de instalação do Anthos Service Mesh 1.5.

      2. 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