IBM Cloud Docs
Atualizando o Istio

Atualizando o Istio

Não use istioctl para atualizar a versão do Istio que é instalada pelo complemento gerenciado. Quando atualizado, o complemento gerenciado do Istio também inclui uma atualização da versão do Istio.

Atualização para uma versão secundária do complemento Istio

O IBM Cloud mantém todos os seus componentes do Istio atualizados ao lançar automaticamente atualizações de patch para a versão mais recente do Istio que é suportada por IBM Cloud Kubernetes Service. As versões compatíveis são testadas por IBM Cloud e aprovadas para uso em IBM Cloud Kubernetes Service.

Antes de Iniciar:

Tenha em mente o seguinte ao atualizar versões secundárias:

  • Só é possível atualizar manualmente uma versão de cada vez do complemento Istio. Para atualizar o complemento Istio em duas ou mais versões, você pode repetir o processo de atualização manual ou pode desinstalar o complemento e instalar a versão mais recente.

  • Não é possível reverter o complemento do Istio gerenciado para uma versão anterior. Para reverter para uma versão secundária anterior, você deve desinstalar o complemento e, em seguida, instalar a versão anterior.

  • Ao atualizar os componentes de controle do Istio no namespace istio-system para a versão secundária mais recente, é possível experimentar mudanças disruptivas. Revise as mudanças a seguir que ocorrem durante uma atualização da versão secundária.

    • À medida que as atualizações são apresentadas para os pods do plano de controle, os pods são recriados. O plano de controle do Istio não estará totalmente disponível até que a atualização seja concluída.
    • O plano de dados do Istio continua funcionando durante a atualização. No entanto, algum tráfego para apps na malha de serviço pode ser interrompido por um curto período de tempo.
    • O endereço IP externo do balanceador de carga istio-ingressgateway não muda durante ou após a atualização.

Para atualizar a versão secundária do complemento Istio:

  1. Revise a versão atual de seu complemento do Istio.

    kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}'
    
  2. Revise as versões disponíveis do complemento Istio.

    ibmcloud ks addon-versions
    
  3. Analise as alterações que estão em cada versão no registro de alterações do complemento do Istio.

  4. Se estiver fazendo upgrade da versão 1.11 para a versão 1.12 e os componentes do Istio tiverem sido fornecidos na versão 1.10 ou anterior:

    1. Execute o comando para obter os detalhes das configurações de webhook de mutação.

      kubectl get mutatingwebhookconfigurations
      

      Exemplo de saída

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   5          32m
      
    2. Na saída, localize o istio-sidecar-injector e revise a coluna WEBHOOKS. Se houver cinco ou mais webhooks, execute o comando a seguir para excluir os webhooks adicionais.

      kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operators
      

      Exemplo de saída

      mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted
      
    3. Verifique se os webhooks adicionais foram excluídos. Obtenha os detalhes das configurações de webhook de mutação e verifique se há quatro webhooks istio-sidecar-injector.

      kubectl get mutatingwebhookconfigurations
      

      Exemplo de saída

      NAME                     WEBHOOKS   AGE
      istio-sidecar-injector   4          60s
      
    4. Execute o comando para obter os detalhes da configuração de webhook de validação.

      kubectl get validatingwebhookconfigurations
      

      Exemplo de saída

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          66s
      istiod-istio-system            1          31m
      
    5. Revise a saída. Se o webhook istiod-istio-system for listado, execute o comando a seguir para excluí-o.

      kubectl delete ValidatingWebhookConfiguration istiod-istio-system
      

      Exemplo de saída

      validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted
      
    6. Verifique se o webhook istiod-istio-system não está mais listado.

      kubectl get validatingwebhookconfigurations
      

      Exemplo de saída

      NAME                           WEBHOOKS   AGE
      istio-validator-istio-system   2          2m
      
  5. Atualize o complemento do Istio.

    ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID>
    
  6. Antes de continuar, verifique se a atualização está concluída.

    O processo de atualização pode levar até 20 minutos para ser concluído.

    1. Assegure-se de que o Estado de funcionamento do complemento Istio seja normal e que o Status de funcionamento seja Addon Ready. Se o estado for updating, a atualização ainda não estará concluída.

      ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
      
    2. Assegure-se de que os pods do componente de plano de controle no namespace istio-system tenham um STATUS de Running.

      kubectl get pods -n istio-system
      
      NAME                                                     READY   STATUS    RESTARTS   AGE
      istio-system    istio-egressgateway-6d4667f999-gjh94     1/1     Running     0          61m
      istio-system    istio-egressgateway-6d4667f999-txh56     1/1     Running     0          61m
      istio-system    istio-ingressgateway-7bbf8d885-b9xgp     1/1     Running     0          61m
      istio-system    istio-ingressgateway-7bbf8d885-xhkv6     1/1     Running     0          61m
      istio-system    istiod-5b9b5bfbb7-jvcjz                  1/1     Running     0          60m
      istio-system    istiod-5b9b5bfbb7-khcht                  1/1     Running     0          60m
      
  7. Atualize o cliente istioctl e os sidecars.

Atualizando o cliente istioctl e os sidecars

Sempre que o complemento Istio gerenciado for atualizado, atualize o seu cliente istioctl e os sidecars de Istio para o seu app.

Por exemplo, a versão de correção do seu complemento pode ser atualizada automaticamente pelo IBM Cloud Kubernetes Service ou é possível atualizar a versão secundária do complemento. Em qualquer caso, atualize o seu cliente istioctl e os sidecars existentes do seu aplicativo para corresponder à versão do complemento do Istio.

  1. Obtenha a versão de seu cliente istioctl e os componentes do plano de controle de complemento do Istio.

    istioctl version --short=false
    

    Exemplo de saída

    client version: version.BuildInfo{Version:"1.11.2"}
    pilot version: version.BuildInfo{Version:1.23.5}
    pilot version: version.BuildInfo{Version:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5}
    data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5}
    ...
    
  2. Na saída, compare a client version (istioctl) com a versão dos componentes do plano de controle do Istio, como a pilot version. Se as versões de componente de plano de controle e do client version não corresponderem:

    1. Faça o download do cliente istioctl da mesma versão que os componentes do plano de controle.

      curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh -
      
    2. Navegue para o diretório do pacote Istio.

      cd istio-1.23.5
      
    3. Usuários do Linux e do macOS: inclua o cliente istioctl em sua variável de sistema PATH.

      export PATH=$PWD/bin:$PATH
      
  3. Na saída da etapa 1, compare a pilot version com a data plane version de cada pod de plano de dados.

    • Se a pilot version e a data plane version corresponderem, nenhuma atualização posterior será necessária.
    • Se o pilot version e o data plane version não corresponderem, reinicie as implementações para os pods de plano de dados que executam a versão antiga. O nome do pod e o espaço de nomes são listados em cada entrada como data plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}.
    kubectl rollout restart deployment <deployment> -n <namespace>
    

Atualização de uma versão sem suporte do complemento Istio

Atualize seus componentes do Istio para a versão mais recente do patch compatível com o site IBM Cloud Kubernetes Service.

Migração do complemento do Istio para o Istio comunitário

Você pode migrar para o Istio comunitário em vez de usar o complemento Istio gerenciado.

Antes de Iniciar

Etapa 1: Desativar o complemento Istio no console

Desative o add-on no console ou na CLI.

  1. No painel de cluster, clique no nome do cluster do qual você deseja remover o complemento do Istio.

  2. Navegue para a seção Complementos.

  3. Na placa Istio gerenciado, clique no ícone do menu Ação.

  4. Clique em ** Desinstalar **. O complemento Istio gerenciado está desativado nesse cluster.

  5. No cartão do Istio gerenciado, verifique se o complemento que você desinstalou não está mais listado.

Etapa 1: Desativar os complementos do Istio na CLI

Desative o complemento e verifique se nenhum complemento adicional do Istio permanece.

  1. Desative o complemento istio.
    ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f
    
  2. Verifique se todos os complementos do Istio gerenciados estão desativados neste cluster. Nenhum complemento do Istio é retornado na saída.
    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    
  3. Aguarde 10 minutos antes de prosseguir para a próxima etapa. Isso nos dá tempo para não gerenciar o operador istio.

Etapa 2: Diminuir a escala do operador Istio

Reduzir a implantação do operador Istio.

Execute o comando a seguir:

kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0

Etapa 3: Economia de recursos

Salve todos os recursos que você criou ou modificou no namespace istio-system e todos os recursos Kubernetes que foram gerados automaticamente pelas definições de recursos personalizados (CRDs).

  1. Salve o endereço managed-istio-custom ConfigMap para solucionar um problema ou para reinstalar o add-on posteriormente.

    kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml
    
  2. Salve todos os IstioOperator CRs (IOPs).

    • Liste os recursos do IOP:
      kubectl get iop -A
      
    • Para cada recurso IOP listado, remova o finalizador. Exemplo usando o managed-istio IOP:
      kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
      
    • Para cada recurso do IOP listado, salve cada um em um arquivo:
      kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
      
  3. Aguarde 10 minutos antes de prosseguir para a próxima etapa.

Etapa 4: Alterar o instalador dos IOPs

Exclua todos os recursos do operador do Istio (IOP), como para um gateway de entrada personalizado.

  1. Certifique-se de que sua ferramenta istioctl cli esteja na versão de patch necessária.

    istioctl version
    
  2. Para cada arquivo IOP que você salvou na etapa anterior, execute o comando upgrade.

    istioctl upgrade -f <filename>.yaml
    

Etapa 5: Removendo o operador Istio e os IOPs

Exclua a implantação do operador do Istio, a conta de serviço, a associação de função de cluster, a função de cluster e todos os IOPs.

  1. Execute os seguintes comandos para excluir a implementação do operador istio:

    kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true
    kubectl delete clusterrole addon-istio-operator --ignore-not-found=true
    
  2. Exclua os IOPs.

    • Liste os recursos do IOP:
      kubectl get iop -A
      
    • Para cada recurso IOP listado, exclua-o:
      kubectl delete IstioOperator <resource_name> -n <namespace>
      

Etapa 6: Removendo o ConfigMap

Como o ConfigMap foi salvo anteriormente, ele pode ser removido.

Remova o managed-istio-custom ConfigMap.

kubectl delete cm -n ibm-operators managed-istio-custom

A remoção do complemento está concluída e você pode continuar a usar e atualizar o Istio da comunidade conforme necessário.