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-systempara 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-ingressgatewaynão muda durante ou após a atualização.
Para atualizar a versão secundária do complemento Istio:
-
Revise a versão atual de seu complemento do Istio.
kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}' -
Revise as versões disponíveis do complemento Istio.
ibmcloud ks addon-versions -
Analise as alterações que estão em cada versão no registro de alterações do complemento do Istio.
-
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:
-
Execute o comando para obter os detalhes das configurações de webhook de mutação.
kubectl get mutatingwebhookconfigurationsExemplo de saída
NAME WEBHOOKS AGE istio-sidecar-injector 5 32m -
Na saída, localize o
istio-sidecar-injectore 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-operatorsExemplo de saída
mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted -
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 mutatingwebhookconfigurationsExemplo de saída
NAME WEBHOOKS AGE istio-sidecar-injector 4 60s -
Execute o comando para obter os detalhes da configuração de webhook de validação.
kubectl get validatingwebhookconfigurationsExemplo de saída
NAME WEBHOOKS AGE istio-validator-istio-system 2 66s istiod-istio-system 1 31m -
Revise a saída. Se o webhook
istiod-istio-systemfor listado, execute o comando a seguir para excluí-o.kubectl delete ValidatingWebhookConfiguration istiod-istio-systemExemplo de saída
validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted -
Verifique se o webhook
istiod-istio-systemnão está mais listado.kubectl get validatingwebhookconfigurationsExemplo de saída
NAME WEBHOOKS AGE istio-validator-istio-system 2 2m
-
-
Atualize o complemento do Istio.
ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID> -
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.
-
Assegure-se de que o Estado de funcionamento do complemento Istio seja
normale que o Status de funcionamento sejaAddon Ready. Se o estado forupdating, a atualização ainda não estará concluída.ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> -
Assegure-se de que os pods do componente de plano de controle no namespace
istio-systemtenham um STATUS deRunning.kubectl get pods -n istio-systemNAME 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
-
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.
-
Obtenha a versão de seu cliente
istioctle os componentes do plano de controle de complemento do Istio.istioctl version --short=falseExemplo 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} ... -
Na saída, compare a
client version(istioctl) com a versão dos componentes do plano de controle do Istio, como apilot version. Se as versões de componente de plano de controle e doclient versionnão corresponderem:-
Faça o download do cliente
istioctlda mesma versão que os componentes do plano de controle.curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh - -
Navegue para o diretório do pacote Istio.
cd istio-1.23.5 -
Usuários do Linux e do macOS: inclua o cliente
istioctlem sua variável de sistemaPATH.export PATH=$PWD/bin:$PATH
-
-
Na saída da etapa 1, compare a
pilot versioncom adata plane versionde cada pod de plano de dados.- Se a
pilot versione adata plane versioncorresponderem, nenhuma atualização posterior será necessária. - Se o
pilot versione odata plane versionnã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 comodata plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}.
kubectl rollout restart deployment <deployment> -n <namespace> - Se a
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
- Se você estiver usando uma versão anterior a 1.21, atualize o complemento Istio para a versão 1.21 ou posterior. Essa atualização é importante porque, com essa versão, a desativação do complemento não remove os recursos personalizados, como ocorre nas versões anteriores.
- Se você não precisar mais do Istio, poderá desinstalar o complemento sem instalar o Istio da comunidade em vez de concluir essas etapas.
Etapa 1: Desativar o complemento Istio no console
Desative o add-on no console ou na CLI.
-
No painel de cluster, clique no nome do cluster do qual você deseja remover o complemento do Istio.
-
Navegue para a seção Complementos.
-
Na placa Istio gerenciado, clique no ícone do menu Ação.
-
Clique em ** Desinstalar **. O complemento Istio gerenciado está desativado nesse cluster.
-
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.
- Desative o complemento
istio.ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f - 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> - 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).
-
Salve o endereço
managed-istio-customConfigMap para solucionar um problema ou para reinstalar o add-on posteriormente.kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
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-istioIOP: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
- Liste os recursos do IOP:
-
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.
-
Certifique-se de que sua ferramenta
istioctlcli esteja na versão de patch necessária.istioctl version -
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.
-
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 -
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>
- Liste os recursos do IOP:
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.