Use os mesmos procedimentos para atualizações de versões secundárias (por exemplo, da versão 1.7 para a 1.8) e para atualizações de lançamentos de patches (por exemplo, da versão 1.8.0 para a 1.8.8).
Se estiver a atualizar a partir da versão 1.6 ou anterior do Apigee hybrid, tem de atualizar primeiro para a versão 1.7 antes de atualizar para a versão 1.8.8. Consulte as instruções para atualizar o Apigee Hybrid para a versão 1.7.
Se já estiver a usar o híbrido v1.8.0 e quiser migrar para o gateway de entrada do Apigee a partir do Anthos Service Mesh, consulte o artigo Migrar para o gateway de entrada do Apigee.
Apresentamos o gateway de entrada do Apigee
A partir da versão 1.8, o Apigee hybrid oferece uma nova funcionalidade para gerir o gateway de entrada para a sua instalação híbrida, o gateway de entrada do Apigee. O Anthos Service Mesh já não é um pré-requisito para a instalação híbrida. Com o gateway de entrada do Apigee, o Apigee deixa de fornecer a configuração de encaminhamento ao Anthos Service Mesh. Após a atualização, tem de migrar o tráfego para o novo gateway de entrada do Apigee antes de poder começar a usar a funcionalidade.
O Apigee usa um pequeno subconjunto de funcionalidades do Anthos Service Mesh para o gateway de entrada. A partir da versão híbrida 1.8, o Apigee Hybrid inclui um gateway de entrada que é instalado e atualizado como parte das atualizações do Apigee Hybrid. Por conseguinte, não precisa de desenvolver conhecimentos sobre o Anthos Service Mesh para instalar, atualizar e gerir o Apigee hybrid. Os problemas relacionados com as versões do gateway de entrada e a compatibilidade com as versões do Apigee hybrid são processados automaticamente.
Seguem-se dois cenários de migração:
- Migração multicluster ou multirregião (recomendada):
Antes de mudar para um novo Ingress para o Apigee, desvie todo o tráfego para outro cluster ou região do cluster que está a migrar. Isto dá-lhe tempo para testar se o novo gateway de entrada do Apigee está a funcionar como esperado. Em seguida, transfira o tráfego novamente para o cluster atualizado.
- Atualização no local (não recomendado em ambientes de produção):
Durante a atualização, o Apigee apresenta o novo gateway de entrada com um endereço IP especificado por si. Em seguida, pode testar se o novo gateway de entrada do Apigee está a funcionar como esperado e, depois, transferir o tráfego para a nova entrada. Pode haver indisponibilidade durante esta atualização.
Quando atualizar o Apigee hybrid para a versão 1.8, tem de configurar o gateway de entrada do Apigee no ficheiro de substituições. Após a atualização, controla o tipo de gateway de entrada que os seus clusters vão usar direcionando os registos A ou CNAME no seu registador para o endereço IP do gateway de entrada do Apigee ou do Anthos Service Mesh.
Atualização para a versão 1.8.8: vista geral
Os procedimentos para atualizar o Apigee hybrid estão organizados nas seguintes secções:
- Prepare-se para a atualização.
- Instale a versão 1.8.8 do tempo de execução híbrido.
- Para o gateway de entrada, escolha uma das seguintes opções:
- (Recomendado) Use o novo gateway de entrada do Apigee e siga os passos descritos no artigo Mude o tráfego da malha de serviços do Anthos para o gateway de entrada do Apigee.
- Continuar a usar o Anthos Service Mesh para o gateway de entrada.
Pré-requisito
Estas instruções de atualização pressupõem que tem a versão 1.7.x do Apigee hybrid ou uma versão de patch anterior da versão 1.8.x instalada e quer atualizá-la para a versão 1.8.8. Se estiver a fazer a atualização a partir de uma versão anterior, consulte as instruções para atualizar o Apigee hybrid para a versão 1.7.
Se preferir continuar a usar o Anthos Service Mesh, tem de garantir que o Anthos Service Mesh é atualizado para uma versão suportada. Consulte a tabela Plataformas suportadas para ver as versões suportadas do Anthos Service Mesh.
Prepare-se para atualizar para a versão 1.8
Faça uma cópia de segurança da sua instalação híbrida (recomendado)
- Estas instruções usam a variável de ambiente APIGEECTL_HOME para o diretório no seu sistema de ficheiros onde instalou o
apigeectl
. Se necessário, altere o diretório para o diretórioapigeectl
e defina a variável com o seguinte comando:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- Faça uma cópia de segurança do diretório
$APIGEECTL_HOME/
da versão 1.7. Por exemplo:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.7-backup.tar.gz $APIGEECTL_HOME
- Faça uma cópia de segurança da sua base de dados Cassandra seguindo as instruções em Cópia de segurança e recuperação do Cassandra
Adicione a função Agente do Cloud Trace à conta de serviço do tempo de execução do Apigee. (Opcional)
Opcional: se planeia usar o Cloud Trace e ainda não tiver
executado este passo na sua instalação híbrida v1.7, certifique-se de que a sua conta
de serviço para os serviços de tempo de execução do Apigee tem a função Google Agente do Cloud Trace.
(roles/cloudtrace.agent
).
Para ambientes de produção, trata-se normalmente da apigee-runtime
conta de serviço. Para
ambientes que não sejam de produção, trata-se normalmente da apigee-non-prod
conta de serviço.
Pode adicionar a função na IU Cloud Console > IAM & Admin > Contas de serviço ou com os seguintes comandos:
- Obtenha o endereço de email da sua conta de serviço com o seguinte comando:
Produção
gcloud iam service-accounts list --filter "apigee-runtime"
Se corresponder ao padrão
apigee-runtime@$ORG_NAME.iam.gserviceaccount.com
, pode usar esse padrão no passo seguinte.Não produção
gcloud iam service-accounts list --filter "apigee-non-prod"
Se corresponder ao padrão
apigee-non-prod@$ORG_NAME.iam.gserviceaccount.com
, pode usar esse padrão no passo seguinte. - Atribua a função Agente do Cloud Trace à conta de serviço:
Produção
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Não produção
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Exemplo
gcloud projects add-iam-policy-binding hybrid-example-project \ --member="serviceAccount:apigee-runtime@hybrid-example-project.iam.gserviceaccount.com" \ --role="roles/cloudtrace.agent"
Onde: $PROJECT_ID é o nome do projeto do Google Cloud onde o Apigee Hybrid está instalado.
Prepare-se para instalar o gateway de entrada do Apigee
Para instalar o gateway de entrada do Apigee como parte da atualização. Tem de adicionar a propriedade
ingressGateways
seguinte ao ficheiro de substituições.
Sintaxe
ingressGateways: - name: INGRESS_NAME replicaCountMin: REPLICAS_MIN replicaCountMax: REPLICAS_MAX resources: requests: cpu: CPU_COUNT_REQ memory: MEMORY_REQ limits: cpu: CPU_COUNT_LIMIT memory: MEMORY_LIMIT svcAnnotations: # optional. See Known issue 243599452. SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE svcLoadBalancerIP: SVC_LOAD_BALANCER_IP # optional
Exemplo
ingressGateways: - name: prod1 replicaCountMin: 2 replicaCountMax: 100 resources: requests: cpu: 1 memory: 1Gi limits: cpu: 2 memory: 2Gi
- INGRESS_NAME é o nome da implementação de entrada. Pode ser qualquer nome que cumpra
os seguintes requisitos:
- Ter um comprimento máximo de 17 carateres
- Contêm apenas carateres alfanuméricos minúsculos, "-" ou "."
- Começar com um caráter alfanumérico
- Terminar com um caráter alfanumérico
Consulte
ingressGateways[].name
na referência da propriedade de configuração - REPLICAS_MIN e REPLICAS_MAX são as quantidades mínimas e máximas de réplicas para o gateway de entrada do Apigee na sua instalação. Para mais informações e definições predefinidas, consulte
ingressGateways[].replicaCountMin
eingressGateways[].replicaCountMax
na referência da propriedade de configuração. - CPU_COUNT_REQ e MEMORY_REQ são o pedido de CPU e memória para cada réplica do gateway de entrada do Apigee na sua instalação.
Para mais informações e definições predefinidas, consulte
ingressGateways[].resources.requests.cpu
eingressGateways[].resources.requests.memory
na referência da propriedade de configuração. - CPU_COUNT_LIMIT e MEMORY_LIMIT Os limites máximos de CPU e memória para cada réplica do gateway de entrada do Apigee na sua instalação.
Para mais informações e definições predefinidas, consulte
ingressGateways[].resources.limits.cpu
eingressGateways[].resources.limits.memory
na referência da propriedade de configuração. - SVC_ANNOTATIONS_KEY e SVC_ANNOTATIONS_VALUE (opcional):
Este é um par de chave-valor que fornece anotações para o seu serviço de entrada predefinido. As anotações são usadas pela sua plataforma na nuvem para ajudar a configurar a instalação híbrida, por exemplo, definindo o tipo de balanceador de carga como interno ou externo. Por exemplo:
ingressGateways: svcAnnotations: networking.gke.io/load-balancer-type: "Internal"
As anotações variam de plataforma para plataforma. Consulte a documentação da plataforma para ver as anotações obrigatórias e sugeridas.
ConsulteingressGateways[].svcAnnotations
na referência da propriedade de configuração. - SVC_LOAD_BALANCER_IP (opcional) Permite-lhe atribuir um endereço IP estático ao seu
equilibrador de carga. Em plataformas que suportam a especificação do endereço IP do balanceador de carga, o balanceador de carga é criado com este endereço IP. Nas plataformas que não permitem especificar o endereço IP do balanceador de carga, esta propriedade é ignorada.
Se não tiver um endereço IP estático atribuído ao seu equilibrador de carga, exclua esta propriedade do ficheiro de substituições.
ConsulteingressGateways[].svcLoadBalancerIP
na referência da propriedade de configuração.
Faça alterações adicionais ao ficheiro de substituições para ativar ou desativar funcionalidades opcionais da versão 1.8
Adicione as seguintes propriedades ao seu ficheiro overrides.yaml
para ativar novas funcionalidades no formato híbrido v1.8. Estas funcionalidades são opcionais.
- A UDCA ao nível da organização está agora ativada por predefinição. A utilização de uma única implementação de UDCA para processar o tráfego de todos os ambientes
evita a subutilização de pods de UDCA e aumenta a disponibilidade de recursos de nós para outros componentes do Apigee.
A UDCA ao nível da organização usa uma única conta de serviço para todos os ambientes,
apigee-udca
.Se estiver a usar contas de serviço diferentes para a UDCA em ambientes diferentes, tenha em atenção que vai usar a conta de serviço especificada ao nível da organização no seu ficheiro de substituições com
udca:serviceAccountPath
, em vez das especificadas ao nível do ambiente comenvs:udca:serviceAccountPath
.O Apigee Hybrid v 1.8 suporta UDCA ao nível do ambiente. Para manter o UDCA por ambiente, defina
orgScopedUDCA: false
.Consulte
orgScopedUDCA
na referência de propriedades de configuração. - Ative
validateOrg
para exigir uma validação rigorosa de que a organização e o ambiente do Apigee estão ativos e funcionam com o projeto da Google Cloud Platform especificado no seu ficheirooverrides
.validateOrg: true
Consulte
validateOrg
na referência de propriedades de configuração.
Instale o tempo de execução híbrido 1.8.8
- Certifique-se de que está no diretório base híbrido (o diretório principal do diretório onde
se encontra o ficheiro executável
apigeectl
):cd $APIGEECTL_HOME/..
-
Transfira o pacote de lançamento para o seu sistema operativo através do seguinte comando. Certifique-se de que seleciona a sua plataforma na tabela seguinte:
Linux
Linux de 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_linux_64.tar.gz
Mac OS
Mac 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_mac_64.tar.gz
Windows
Windows de 64 bits:
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.8.8/apigeectl_windows_64.zip
- Mude o nome do diretório
apigeectl/
atual para um nome de diretório de cópia de segurança. Por exemplo:Linux
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/
Mac OS
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.7/
Windows
rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.7
-
Extraia o conteúdo do ficheiro gzip transferido para o diretório de base híbrido. O diretório base híbrido é o diretório onde se encontra o diretório
apigeectl-v1.7
com o nome alterado:Linux
tar xvzf filename.tar.gz -C ./
Mac OS
tar xvzf filename.tar.gz -C ./
Windows
tar xvzf filename.zip -C ./
-
Por predefinição, o conteúdo do TAR é expandido para um diretório com a versão e a plataforma no respetivo nome. Por exemplo:
./apigeectl_1.8.8-xxxxxxx_linux_64
. Mude o nome desse diretório paraapigeectl
através do seguinte comando:Linux
mv apigeectl_1.8.8-xxxxxxx_linux_64 apigeectl
Mac OS
mv apigeectl_1.8.8-xxxxxxx_mac_64 apigeectl
Windows
rename apigeectl_1.8.8-xxxxxxx_windows_64 apigeectl
-
Altere para o diretório
apigeectl
:cd ./apigeectl
Este diretório é o
apigeectl
diretório inicial. É onde se encontra o comando executávelapigeectl
. - Estas instruções usam a variável de ambiente
$APIGEECTL_HOME
para o diretório no seu sistema de ficheiros onde o utilitárioapigeectl
está instalado. Se necessário, altere o diretório para o diretórioapigeectl
e defina a variável com o seguinte comando:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- Valide a versão do
apigeectl
com o comandoversion
:./apigeectl version
Version: 1.8.8
- Mova-se para o diretório
hybrid-base-directory/hybrid-files
. O diretóriohybrid-files
é onde se encontram os ficheiros de configuração, como o ficheiro de substituições, os certificados e as contas de serviço. Por exemplo:cd $APIGEECTL_HOME/../hybrid-files
- Verifique se
kubectl
está definido para o contexto correto através do seguinte comando. O contexto atual deve ser definido para o cluster no qual está a atualizar o Apigee Hybrid.kubectl config get-contexts | grep \*
- No diretório
hybrid-files
:-
Atualize os seguintes links simbólicos para
$APIGEECTL_HOME
. Estes links permitem-lhe executar o comandoapigeectl
recém-instalado a partir do diretóriohybrid-files
:ln -nfs
$APIGEECTL_HOME
/tools toolsln -nfs
$APIGEECTL_HOME
/config configln -nfs
$APIGEECTL_HOME
/templates templatesln -nfs
$APIGEECTL_HOME
/plugins plugins -
Para verificar se os links simbólicos foram criados corretamente, execute o seguinte comando e certifique-se de que os caminhos dos links apontam para as localizações corretas:
ls -l | grep ^l
-
Atualize os seguintes links simbólicos para
- Faça uma inicialização de teste para verificar se existem erros:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
Onde OVERRIDES_FILE é o nome do ficheiro de substituições, por exemplo,
./overrides/overrides.yaml
. - Se não houver erros, inicialize a versão híbrida 1.8.8. Este comando
também instala e configura o gateway de entrada do Apigee:
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
- Verifique o estado de inicialização:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Se for bem-sucedido, o resultado indica:
All containers ready.
Como verificação adicional, também pode executar este comando para verificar o estado do ApigeeDataStore:
kubectl describe apigeeds -n apigee
No resultado, procure
State: running
. - Verifique se existem erros com uma execução de teste do comando
apply
através do sinalizador--dry-run
:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
- Se não houver erros, aplique as substituições. Selecione e siga as instruções para ambientes de produção ou
ambientes de não produção, consoante a sua instalação.
Produção
Para ambientes de produção, deve atualizar cada componente híbrido individualmente e verificar o estado do componente atualizado antes de avançar para o componente seguinte.
- Certifique-se de que está no diretório
hybrid-files
. - Aplique as substituições para atualizar o Cassandra:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
- Conclusão da verificação:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Avance para o passo seguinte apenas quando os pods estiverem prontos.
- Aplique as substituições para atualizar os componentes de telemetria e verifique a conclusão:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Apresente os componentes do Redis:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
- Aplique as substituições para atualizar os componentes ao nível da organização (MART, Watcher e Apigee Connect) e verifique a conclusão:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Aplique as substituições para atualizar os seus ambientes. Tem 2 opções:
- Ambiente por ambiente: aplique as substituições a um ambiente de cada vez e verifique a conclusão. Repita
este passo para cada ambiente:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Em que ENV_NAME é o nome do ambiente que está a atualizar.
- Todos os ambientes ao mesmo tempo: aplique as substituições a todos os ambientes de uma só vez e verifique a conclusão:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Ambiente por ambiente: aplique as substituições a um ambiente de cada vez e verifique a conclusão. Repita
este passo para cada ambiente:
- Aplique as substituições para atualizar os componentes
virtualhosts
e verifique a conclusão:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
Não prod
Na maioria dos ambientes de não produção, demonstração ou experimentais, pode aplicar as substituições a todos os componentes de uma só vez. Se o seu ambiente de não produção for grande e complexo ou imitar de perto um ambiente de produção, é recomendável usar as instruções para atualizar ambientes de produção.
- Certifique-se de que está no diretório
hybrid-files
. $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
- Verifique o estado:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- Certifique-se de que está no diretório
Atualize a versão do Kubernetes
Atualize a sua plataforma Kubernetes para as versões suportadas pelo Hybrid 1.8. Siga a documentação da sua plataforma se precisar de ajuda.
Mude o tráfego do Anthos Service Mesh para o gateway de entrada do Apigee
Para mudar o tráfego para o gateway de entrada do Apigee:
- Exponha a gateway de entrada do Apigee. Siga os procedimentos em Exponha o gateway de entrada do Apigee.
- Teste o novo gateway de entrada chamando um proxy. Idealmente, teste todos os proxies cruciais que tem atualmente implementados.
- Para mudar o tráfego, atualize os seus registos de DNS para direcionarem para o endereço IP do novo gateway de entrada do Apigee.
Consoante o seu fornecedor de DNS, pode conseguir mudar gradualmente o tráfego para o novo ponto final.
Dica: pode encontrar o endereço IP externo do gateway de entrada do Apigee com o seguinte comando: kubectl get svc -n apigee -l app=apigee-ingressgateway
O resultado deve ter um aspeto semelhante ao seguinte:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
- Certifique-se de que todo o tráfego de tempo de execução está a funcionar monitorizando os painéis de controlo. Só avance para o passo seguinte se tudo estiver a funcionar conforme esperado. Certifique-se de que não passa tráfego pelo gateway de entrada antigo (Anthos Service Mesh), uma vez que a atualização de DNS pode demorar a propagar-se devido ao armazenamento em cache de DNS.
- Para impedir que o Apigee forneça configuração ao Anthos Service Mesh, siga os passos em Pare de fornecer configuração ao ASM no guia de gestão do gateway de entrada do Apigee.
- Teste novamente e monitorize o tráfego de proxy da API.
- Siga as instruções na documentação do Anthos Service Mesh para desinstalar o Anthos Service Mesh do cluster.
Atualize o Anthos Service Mesh para a versão 1.15
Execute os procedimentos através da documentação do Anthos Service Mesh adequada à sua plataforma:
As instruções para instalar e configurar o Anthos Service Mesh são diferentes consoante a sua plataforma. As plataformas estão divididas nas seguintes categorias:
- GKE: clusters do Google Kubernetes Engine em execução no Google Cloud.
- Fora do Google Cloud: clusters do Anthos em execução em:
- Clusters do Anthos no VMware (GKE On-Prem)
- Anthos em bare metal
- Clusters do Anthos no AWS
- Amazon EKS
- Outras plataformas Kubernetes: clusters em conformidade criados e executados em:
- AKS
- EKS
- OpenShift
GKE
A sequência para atualizar para a versão 1.17.8 do Anthos Service Mesh para a sua instalação híbrida é a seguinte:
- Prepare-se para a atualização.
- Instale a nova versão do Anthos Service Mesh.
- Elimine as implementações, os serviços e os webhooks da versão anterior do Anthos Service Mesh da sua instalação atual.
- Atualize as suas gateways e configure os novos webhooks.
Prepare-se para atualizar o Anthos Service Mesh para a versão 1.17.8
- Reveja os requisitos em Atualize o Anthos Service Mesh, mas não faça a atualização ainda.
- Antes de instalar a nova versão, determine a revisão atual. Precisa
destas informações para eliminar as implementações, os serviços e os
webhooks da versão anterior do Anthos Service Mesh da sua instalação atual. Use o seguinte comando para armazenar a revisão
istiod
atual numa variável de ambiente:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
O resultado deve ter um aspeto semelhante a
1.16
- Crie um novo ficheiro
overlay.yaml
ou verifique se o ficheirooverlay.yaml
existente contém o seguinte conteúdo:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Siga as instruções nas secções seguintes da documentação do Anthos Service Mesh:
- Transferir asmcli
- Conceda autorizações de administrador do cluster
- Valide o projeto e o cluster
- Atualize com funcionalidades opcionais. Pare antes de iniciar a "Secção de atualização de gateways".
- Mude para o novo plano de controlo:
- Obtenha a etiqueta de revisão que está em
istiod
:kubectl get pod -n istio-system -L istio.io/rev
O resultado do comando é semelhante ao seguinte.
NAME READY STATUS RESTARTS AGE REV istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz 1/1 Running 0 68m 1.16.7-asm istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr 1/1 Running 0 68m 1.16.7-asm istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1178-1 istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1178-1
- Atribua a etiqueta de revisão mais recente a uma variável de ambiente.
Na saída, na coluna
REV
, tome nota do valor da etiqueta de revisão para a nova versão. Neste exemplo, o valor éasm-1178-1
export UPGRADE_REV="REVISION_LABEL"
- Adicione a etiqueta de revisão ao espaço de nomes
istio-system
e remova a etiquetaistio-injection
(se existir) com o seguinte comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Se vir
"istio-injection not found"
no resultado, pode ignorá-lo. Isto significa que o espaço de nomes não tinha anteriormente a etiquetaistio-injection
. Uma vez que a injeção automática falha se um espaço de nomes tiver a etiquetaistio-injection
e a etiqueta de revisão, todos os comandoskubectl label
na documentação do Anthos Service Mesh incluem a remoção da etiquetaistio-injection
. - Reinicie os pods para acionar a reinjeção.
kubectl rollout restart deployment -n istio-system
- Teste a sua aplicação para verificar se as cargas de trabalho estão a funcionar corretamente.
- Se tiver cargas de trabalho noutros espaços de nomes, repita os passos para etiquetar o espaço de nomes e reiniciar os pods.
- Obtenha a etiqueta de revisão que está em
- Elimine as versões anteriores:
- Navegue para o diretório onde instalou o
asmcli
. - Armazene o diretório de saída da instalação do Anthos Service Mesh na variável de ambiente
DIR_PATH
. Este é o mesmo diretório que especificou no procedimento Atualizar com funcionalidades opcionais.export DIR_PATH=OUTPUT_DIR
- Crie um script de shell com os seguintes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Execute o script para eliminar as versões anteriores.
- Navegue para o diretório onde instalou o
Fora do Google Cloud
Estas instruções abrangem a atualização do Anthos Service Mesh nos seguintes sistemas:
- Clusters do Anthos no VMware (GKE On-Prem)
- Anthos em bare metal
- Clusters do Anthos no AWS
- Amazon EKS
A sequência para atualizar para a versão 1.17.8 do Anthos Service Mesh para a sua instalação híbrida é a seguinte:
- Prepare-se para a atualização.
- Instale a nova versão do Anthos Service Mesh.
- Elimine as implementações, os serviços e os webhooks da versão anterior do Anthos Service Mesh da sua instalação atual.
- Atualize as suas gateways e configure os novos webhooks.
Prepare-se para atualizar o Anthos Service Mesh para a versão 1.17.8
- Reveja os requisitos em Atualize o Anthos Service Mesh, mas não faça a atualização ainda.
- Antes de instalar a nova versão, determine a revisão atual. Precisa
destas informações para eliminar as implementações, os serviços e os
webhooks da versão anterior do Anthos Service Mesh da sua instalação atual. Use o seguinte comando para armazenar a revisão
istiod
atual numa variável de ambiente:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
O resultado deve ter um aspeto semelhante a
1.16
- Crie um novo ficheiro
overlay.yaml
ou verifique se o ficheirooverlay.yaml
existente contém o seguinte conteúdo:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: nodeSelector: # default node selector, if different or not using node selectors, change accordingly. cloud.google.com/gke-nodepool: apigee-runtime resources: requests: cpu: 1000m service: type: LoadBalancer loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out. ports: - name: http-status-port port: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443 values: gateways: istio-ingressgateway: runAsRoot: true meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Siga as instruções nas secções seguintes da documentação do Anthos Service Mesh:
- Transferir asmcli
- Conceda autorizações de administrador do cluster
- Valide o projeto e o cluster
- Atualize com funcionalidades opcionais. Pare antes de iniciar a "Secção de atualização de gateways".
- Mude para o novo plano de controlo:
- Obtenha a etiqueta de revisão que está em
istiod
:kubectl get pod -n istio-system -L istio.io/rev
O resultado do comando é semelhante ao seguinte.
NAME READY STATUS RESTARTS AGE REV istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz 1/1 Running 0 68m 1.16.7-asm istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr 1/1 Running 0 68m 1.16.7-asm istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1178-1 istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1178-1
- Atribua a etiqueta de revisão mais recente a uma variável de ambiente.
Na saída, na coluna
REV
, tome nota do valor da etiqueta de revisão para a nova versão. Neste exemplo, o valor éasm-1178-1
export UPGRADE_REV="REVISION_LABEL"
- Adicione a etiqueta de revisão ao espaço de nomes
istio-system
e remova a etiquetaistio-injection
(se existir) com o seguinte comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Se vir
"istio-injection not found"
no resultado, pode ignorá-lo. Isto significa que o espaço de nomes não tinha anteriormente a etiquetaistio-injection
. Uma vez que a injeção automática falha se um espaço de nomes tiver a etiquetaistio-injection
e a etiqueta de revisão, todos os comandoskubectl label
na documentação do Anthos Service Mesh incluem a remoção da etiquetaistio-injection
. - Reinicie os pods para acionar a reinjeção.
kubectl rollout restart deployment -n istio-system
- Teste a sua aplicação para verificar se as cargas de trabalho estão a funcionar corretamente.
- Se tiver cargas de trabalho noutros espaços de nomes, repita os passos para etiquetar o espaço de nomes e reiniciar os pods.
- Obtenha a etiqueta de revisão que está em
- Elimine as versões anteriores:
- Navegue para o diretório onde instalou o
asmcli
. - Armazene o diretório de saída da instalação do Anthos Service Mesh na variável de ambiente
DIR_PATH
. Este é o mesmo diretório que especificou no procedimento Atualizar com funcionalidades opcionais.export DIR_PATH=OUTPUT_DIR
- Crie um script de shell com os seguintes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f ${DIR_PATH}/asm/istio/istiod-service.yaml kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Execute o script para eliminar as versões anteriores.
- Navegue para o diretório onde instalou o
AKS / EKS
Nestas instruções, o processo de atualização da versão 1.17.8-asm.4-distroless do Anthos Service Mesh (Anthos Service Mesh) em clusters anexados do Anthos é igual ao de uma instalação nova.
A preparar a instalação do Anthos Service Mesh
- Antes de instalar a nova versão, determine a revisão atual. Precisa
destas informações para eliminar o webhook de validação e o webhook de mutação
da sua instalação atual do Anthos Service Mesh. Use o seguinte comando para armazenar a revisão
istiod
atual numa variável de ambiente:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
O resultado deve ter um aspeto semelhante a
1.16
- Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
- Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo,
para extrair os conteúdos para o diretório de trabalho atual:
tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
1.17.8-asm.4-distroless
que contém:- Exemplos de aplicações no diretório
samples
. - A ferramenta de linha de comandos
istioctl
que usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh encontram-se no diretório
manifests/profiles
.
- Exemplos de aplicações no diretório
- Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
cd 1.17.8-asm.4-distroless
- Para maior comodidade, adicione as ferramentas no diretório
/bin
ao seuPATH
:export PATH=$PWD/bin:$PATH
- Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
- Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo,
para extrair os conteúdos para o diretório de trabalho atual:
tar xzf 1.17.8-asm.4-distroless-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
1.17.8-asm.4-distroless
que contém:- Exemplos de aplicações no diretório
samples
. - A ferramenta de linha de comandos
istioctl
que usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh encontram-se no diretório
manifests/profiles
.
- Exemplos de aplicações no diretório
- Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
cd 1.17.8-asm.4-distroless
- Para maior comodidade, adicione as ferramentas no diretório
/bin
ao seuPATH
:export PATH=$PWD/bin:$PATH
- Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
- Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo,
para extrair os conteúdos para o diretório de trabalho atual:
tar xzf 1.17.8-asm.4-distroless-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
1.17.8-asm.4-distroless
que contém:- Exemplos de aplicações no diretório
samples
. - A ferramenta de linha de comandos
istioctl
que usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh encontram-se no diretório
manifests\profiles
.
- Exemplos de aplicações no diretório
- Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
cd 1.17.8-asm.4-distroless
- Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
set PATH=%CD%\bin:%PATH%
- Agora que o Anthos Service Mesh Istio está instalado, verifique a versão do
istioctl
:istioctl version
- Crie um espaço de nomes denominado istio-system para os componentes do plano de controlo:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Instalar o Anthos Service Mesh
- Edite o ficheiro
overlay.yaml
ou crie um novo com o seguinte conteúdo:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- Instale o Anthos Service Mesh com
istioctl
usando o perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1178-1" \ --filename overlay.yaml
O resultado deve ter um aspeto semelhante ao seguinte:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1178-1-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1178-1-798ffb964-fnj8c 1/1 Running 1 3m21s
O argumento
--set revision
adiciona uma etiqueta de revisão no formatoistio.io/rev=asm-1178-1
aistiod
. A etiqueta de revisão é usada pelo webhook do injetor de contentores auxiliares automático para associar contentores auxiliares injetados a uma revisão específica.istiod
Para ativar a injeção automática de sidecar para um espaço de nomes, tem de etiquetá-lo com uma revisão que corresponda à etiqueta emistiod
. - Confirme se a instalação foi concluída:
kubectl get svc -n istio-system
O resultado deve ter um aspeto semelhante ao seguinte:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1178-1 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
- Mude para o novo plano de controlo:
- Obtenha a etiqueta de revisão que está em
istiod
:kubectl get pod -n istio-system -L istio.io/rev
O resultado do comando é semelhante ao seguinte.
NAME READY STATUS RESTARTS AGE REV istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz 1/1 Running 0 68m 1.16.7-asm istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr 1/1 Running 0 68m 1.16.7-asm istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1178-1 istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1178-1
- Atribua a etiqueta de revisão mais recente a uma variável de ambiente.
Na saída, na coluna
REV
, tome nota do valor da etiqueta de revisão para a nova versão. Neste exemplo, o valor éasm-1178-1
export UPGRADE_REV="REVISION_LABEL"
- Adicione a etiqueta de revisão ao espaço de nomes
istio-system
e remova a etiquetaistio-injection
(se existir) com o seguinte comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Se vir
"istio-injection not found"
no resultado, pode ignorá-lo. Isto significa que o espaço de nomes não tinha anteriormente a etiquetaistio-injection
. Uma vez que a injeção automática falha se um espaço de nomes tiver a etiquetaistio-injection
e a etiqueta de revisão, todos os comandoskubectl label
na documentação do Anthos Service Mesh incluem a remoção da etiquetaistio-injection
. - Reinicie os pods para acionar a reinjeção.
kubectl rollout restart deployment -n istio-system
- Teste a sua aplicação para verificar se as cargas de trabalho estão a funcionar corretamente.
- Se tiver cargas de trabalho noutros espaços de nomes, repita os passos para etiquetar o espaço de nomes e reiniciar os pods.
- Obtenha a etiqueta de revisão que está em
- Elimine as versões anteriores:
- Navegue para o diretório onde instalou o
asmcli
. - Crie um script de shell com os seguintes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Execute o script para eliminar as versões anteriores.
- Navegue para o diretório onde instalou o
OpenShift
Nestas instruções, o processo de atualização da versão 1.17.8-asm.4-distroless do Anthos Service Mesh (Anthos Service Mesh) em clusters anexados do Anthos é igual ao de uma instalação nova.
A preparar a instalação do Anthos Service Mesh
- Antes de instalar a nova versão, determine a revisão atual. Precisa
destas informações para eliminar o webhook de validação e o webhook de mutação
da sua instalação atual do Anthos Service Mesh. Use o seguinte comando para armazenar a revisão
istiod
atual numa variável de ambiente:export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}')
echo $DELETE_REV
O resultado deve ter um aspeto semelhante a
1.16
- Conceda a restrição de contexto de segurança (SCC)
anyuid
ao istio-system com o seguinte comando da CLI do OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz
- Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature 1.17.8-asm.4-distroless-linux-amd64.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo,
para extrair os conteúdos para o diretório de trabalho atual:
tar xzf 1.17.8-asm.4-distroless-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
1.17.8-asm.4-distroless
que contém:- Exemplos de aplicações no diretório
samples
. - A ferramenta de linha de comandos
istioctl
que usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh encontram-se no diretório
manifests/profiles
.
- Exemplos de aplicações no diretório
- Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
cd 1.17.8-asm.4-distroless
- Para maior comodidade, adicione as ferramentas no diretório
/bin
ao seuPATH
:export PATH=$PWD/bin:$PATH
- Conceda a restrição de contexto de segurança (SCC)
anyuid
ao istio-system com o seguinte comando da CLI do OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz
- Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature 1.17.8-asm.4-distroless-osx.tar.gz.1.sig 1.17.8-asm.4-distroless.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo,
para extrair os conteúdos para o diretório de trabalho atual:
tar xzf 1.17.8-asm.4-distroless-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
1.17.8-asm.4-distroless
que contém:- Exemplos de aplicações no diretório
samples
. - A ferramenta de linha de comandos
istioctl
que usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh encontram-se no diretório
manifests/profiles
.
- Exemplos de aplicações no diretório
- Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
cd 1.17.8-asm.4-distroless
- Para maior comodidade, adicione as ferramentas no diretório
/bin
ao seuPATH
:export PATH=$PWD/bin:$PATH
- Conceda a restrição de contexto de segurança (SCC)
anyuid
ao istio-system com o seguinte comando da CLI do OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Transfira o ficheiro de instalação do Anthos Service Mesh para o diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip
- Transfira o ficheiro de assinatura e use o OpenSSL para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/1.17.8-asm.4-distroless-win.zip.1.sig
openssl dgst -verify - -signature 1.17.8-asm.4-distroless-win.zip.1.sig 1.17.8-asm.4-distroless.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do ficheiro para qualquer localização no seu sistema de ficheiros. Por exemplo,
para extrair os conteúdos para o diretório de trabalho atual:
tar xzf 1.17.8-asm.4-distroless-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
1.17.8-asm.4-distroless
que contém:- Exemplos de aplicações no diretório
samples
. - A ferramenta de linha de comandos
istioctl
que usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh encontram-se no diretório
manifests\profiles
.
- Exemplos de aplicações no diretório
- Certifique-se de que está no diretório raiz da instalação do Anthos Service Mesh:
cd 1.17.8-asm.4-distroless
- Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
set PATH=%CD%\bin:%PATH%
- Agora que o Anthos Service Mesh Istio está instalado, verifique a versão do
istioctl
:istioctl version
- Crie um espaço de nomes denominado istio-system para os componentes do plano de controlo:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Configure o webhook de validação
Quando instala o Anthos Service Mesh, define uma etiqueta de revisão em istiod
. Tem de definir a mesma revisão no webhook de validação.
- Crie um ficheiro denominado
istiod-service.yaml
com o seguinte conteúdo:apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1178-1 app: istiod istio: pilot release: istio spec: ports: - port: 15010 name: grpc-xds # plaintext protocol: TCP - port: 15012 name: https-dns # mTLS with k8s-signed cert protocol: TCP - port: 443 name: https-webhook # validation and injection targetPort: 15017 protocol: TCP - port: 15014 name: http-monitoring # prometheus stats protocol: TCP selector: app: istiod istio.io/rev: asm-1178-1 meshConfig: accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
- Use
kubectl
para aplicar a configuração do webhook de validação:kubectl apply -f istiod-service.yaml
- Verifique se a configuração foi aplicada:
kubectl get svc -n istio-system
A resposta deve ser semelhante à seguinte:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 22s
Instalar o Anthos Service Mesh
- Edite o ficheiro
overlay.yaml
ou crie um novo com o seguinte conteúdo:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: accessLogFile: /dev/stdout enableTracing: true accessLogFormat: '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}' components: ingressGateways: - name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer ports: - name: status-port port: 15021 targetPort: 15021 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 targetPort: 8443
- Instale o Anthos Service Mesh com
istioctl
usando o perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1178-1" \ --filename overlayfile.yaml
O resultado deve ter um aspeto semelhante ao seguinte:
kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istio-ingressgateway-88b6fd976-flgp2 1/1 Running 0 3m13s istio-ingressgateway-88b6fd976-p5dl9 1/1 Running 0 2m57s istiod-asm-1178-1-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1178-1-798ffb964-fnj8c 1/1 Running 1 3m21s
O argumento
--set revision
adiciona uma etiqueta de revisão no formatoistio.io/rev=1.6.11-asm.1
aistiod
. A etiqueta de revisão é usada pelo webhook do injetor de contentores auxiliares automático para associar contentores auxiliares injetados a uma revisão específica.istiod
Para ativar a injeção automática de sidecar para um espaço de nomes, tem de etiquetá-lo com uma revisão que corresponda à etiqueta emistiod
. - Confirme se a instalação foi concluída:
kubectl get svc -n istio-system
O resultado deve ter um aspeto semelhante ao seguinte:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.200.48.52 34.74.177.168 15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP 3m35s istiod ClusterIP 172.200.18.133 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m46s istiod-asm-1178-1 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
- Mude para o novo plano de controlo:
- Obtenha a etiqueta de revisão que está em
istiod
:kubectl get pod -n istio-system -L istio.io/rev
O resultado do comando é semelhante ao seguinte.
NAME READY STATUS RESTARTS AGE REV istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-lrzpz 1/1 Running 0 68m 1.16.7-asm istiod-asm-Cloud Service Mesh 1.17.8-asm.4-67998f4b55-r76kr 1/1 Running 0 68m 1.16.7-asm istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-n7tj9 1/1 Running 0 27s asm-1178-1 istiod-Cloud Service Mesh 1.16.7-asm.1-1-5cd96f88f6-wm68b 1/1 Running 0 27s asm-1178-1
- Atribua a etiqueta de revisão mais recente a uma variável de ambiente.
Na saída, na coluna
REV
, tome nota do valor da etiqueta de revisão para a nova versão. Neste exemplo, o valor éasm-1178-1
export UPGRADE_REV="REVISION_LABEL"
- Adicione a etiqueta de revisão ao espaço de nomes
istio-system
e remova a etiquetaistio-injection
(se existir) com o seguinte comando.kubectl label namespace istio-system istio.io/rev=$UPGRADE_REV istio-injection- --overwrite
Se vir
"istio-injection not found"
no resultado, pode ignorá-lo. Isto significa que o espaço de nomes não tinha anteriormente a etiquetaistio-injection
. Uma vez que a injeção automática falha se um espaço de nomes tiver a etiquetaistio-injection
e a etiqueta de revisão, todos os comandoskubectl label
na documentação do Anthos Service Mesh incluem a remoção da etiquetaistio-injection
. - Reinicie os pods para acionar a reinjeção.
kubectl rollout restart deployment -n istio-system
- Teste a sua aplicação para verificar se as cargas de trabalho estão a funcionar corretamente.
- Se tiver cargas de trabalho noutros espaços de nomes, repita os passos para etiquetar o espaço de nomes e reiniciar os pods.
- Obtenha a etiqueta de revisão que está em
- Elimine as versões anteriores:
- Navegue para o diretório onde instalou o
asmcli
. - Crie um script de shell com os seguintes comandos:
#!/bin/bash set -ex if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true fi
- Execute o script para eliminar as versões anteriores.
- Navegue para o diretório onde instalou o
Reverter uma atualização
Siga estes passos para reverter uma atualização anterior:
- Limpe as tarefas concluídas para o espaço de nomes de tempo de execução híbrido, em que NAMESPACE é o espaço de nomes especificado no ficheiro de substituições, se tiver especificado um espaço de nomes. Caso contrário, o espaço de nomes predefinido é
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Limpe as tarefas concluídas para o espaço de nomes
apigee-system
:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Altere a variável
APIGEECTL_HOME
para apontar para o diretório que contém a versão anterior deapigeectl
. Por exemplo:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- Anule as alterações ao ficheiro
overrides
:- Remova ou comente
ingressGateways
e todas as respetivas propriedades. - Defina o valor de
virtualhosts.selector.app
para o valor anterior, por exemplo:virtualhosts: - name: my-env-group selector: app: istio-ingressgateway
- Remova ou comente
ao.args.disableIstioConfigInAPIServer
.
- Remova ou comente
- No diretório raiz da instalação para a qual quer reverter, execute o comando
apigeectl apply
, verifique o estado dos seus pods e, em seguida, execute o comandoapigeectl init
. Certifique-se de que usa o ficheiro de substituições original para a versão para a qual quer reverter:- No diretório hybrid-files, execute
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f ORIGINAL_OVERRIDES_FILEOnde ORIGINAL_OVERRIDES_FILE é o caminho relativo e o nome do ficheiro de substituições para a instalação híbrida da versão anterior, por exemplo,
./overrides/overrides1.7.yaml
. - Verifique o estado dos seus pods:
kubectl -n NAMESPACE get pods
Onde NAMESPACE é o seu espaço de nomes híbrido do Apigee.
- Verifique o estado de
apigeeds
:kubectl describe apigeeds -n apigee
O resultado deve ter um aspeto semelhante ao seguinte:
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running
Avance para o passo seguinte apenas quando o
apigeeds
pod estiver em execução. - Execute o seguinte comando para tomar nota dos novos valores de contagem de réplicas do processador de mensagens após a atualização.Se estes valores não corresponderem aos que definiu anteriormente, altere os valores no ficheiro de substituições para corresponderem à configuração anterior.
apigeectl apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2
O resultado deve ter um aspeto semelhante ao seguinte:
autoScaler: minReplicas: 2 maxReplicas: 10
-
Se estiver a reverter para o híbrido v1.8.4 ou anterior, elimine a implementação do controlador usada
pelo híbrido v1.8.5 e mais recente:
kubectl -n apigee-system delete deploy apigee-controller-manager
- Corrida
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f ORIGINAL_OVERRIDES_FILE
- No diretório hybrid-files, execute
- Elimine a implementação do gestor de gateway de entrada do Apigee. Este componente só é relevante para as versões híbridas do Apigee 1.8 e mais recentes.
kubectl delete deployment -n NAMESPACE apigee-ingress-gateway-manager
Onde NAMESPACE é o seu espaço de nomes híbrido do Apigee.