Se estiver a atualizar a partir da versão 1.3 ou mais antiga do Apigee hybrid, tem de atualizar primeiro para a versão 1.4 antes de atualizar para a versão 1.5.10. Consulte as instruções para atualizar o Apigee Hybrid para a versão 1.4.
Atualização para a versão 1.5.10: vista geral.
Os procedimentos para atualizar o Apigee hybrid estão organizados nas seguintes secções:
- Faça uma cópia de segurança da instalação híbrida.
- Verifique a sua versão do Kubernetes e atualize-a conforme adequado.
- Atualize o ASM.
- Instale a versão 1.5 do tempo de execução híbrido.
Pré-requisito
- Versão 1.4 do Apigee Hybrid. 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.4.
Atualize para a versão 1.5
- 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,cd
no 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%
- (Recomendado) Faça uma cópia de segurança do diretório
$APIGEECTL_HOME/
da versão 1.4. Por exemplo:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
- (Recomendado) Faça uma cópia de segurança da base de dados Cassandra seguindo as instruções em Cópia de segurança e recuperação do Cassandra
- Atualize a sua plataforma Kubernetes para as versões suportadas pelo híbrido 1.5. Siga a documentação da sua plataforma se precisar de ajuda.
- Se estiver a usar uma versão do
cert-manager
anterior à v1.2.0, tem de a atualizar para a v1.2.0.-
Verifique a versão atual do
cert-manager
através do seguinte comando:kubectl -n cert-manager get deployment -o yaml | grep 'image:'
É devolvido algo semelhante ao seguinte:
image: quay.io/jetstack/cert-manager-controller:v1.2.0 image: quay.io/jetstack/cert-manager-cainjector:v1.2.0 image: quay.io/jetstack/cert-manager-webhook:v1.2.0
-
Remova as implementações com o seguinte comando:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
Atualize o
cert-manager
para a versão 1.2.0 com o seguinte comando:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
-
Atualize o ASM para a versão 1.26
Faça a atualização através da documentação do ASM adequada para a sua plataforma:
As instruções para instalar e configurar o ASM 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.8.x do ASM para a sua instalação híbrida é a seguinte:
- Prepare-se para a atualização.
- Instale a nova versão do ASM.
- Elimine as implementações, os serviços e os webhooks da versão anterior do ASM da sua instalação atual.
- Atualize as suas gateways e configure os novos webhooks.
Para atualizar para a versão 1.8.x do ASM para o híbrido no GKE:
- 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 ASM da sua instalação atual. Use o seguinte comando para armazenar a revisão atual do istiod 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}
- 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: revision: asm-1264-1 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 ASM:
- 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"
- Elimine o webhook de mutação e o webhook de validação:
cd
no diretório onde instalou oasmcli
.- Armazene a nova revisão atual numa variável de ambiente para usar no script
para eliminar os webhooks:
UPGRADE_REV="asm-1264-1"
- criar um script de shell com os seguintes comandos:
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/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 os webhooks atuais.
- Siga os passos em Atualizar gateways para criar os novos webhooks e mudar o tráfego para os novos gateways.
Fora do Google Cloud
Estas instruções abrangem a atualização do ASM nos seguintes sistemas operativos:
- Clusters do Anthos no VMware (GKE On-Prem)
- Anthos em bare metal
- Clusters do Anthos no AWS
- Amazon EKS
- 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 o webhook de validação e o webhook de mutação da sua instalação atual do ASM. Use o seguinte comando para armazenar a revisão do 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}
- 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: revision: asm-1264-1 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 ASM:
- 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"
- Elimine o webhook de mutação e o webhook de validação:
cd
no diretório onde instalou oasmcli
.- Armazene a nova revisão atual numa variável de ambiente para usar no script
para eliminar os webhooks:
UPGRADE_REV="asm-1264-1"
- criar um script de shell com os seguintes comandos:
#!/bin/bash set -ex PROJECT_ID="YOUR_PROJECT_ID" CLUSTER_NAME="YOUR_CLUSTER_NAME" CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION" gcloud config configurations activate ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID} kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite kubectl rollout restart deployment -n istio-system kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then kubectl apply -f out/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 os webhooks atuais.
- Siga os passos em Atualizar gateways para criar os novos webhooks e mudar o tráfego para os novos gateways.
AKS / EKS
Nestas instruções, o processo de atualização da versão do Anthos Service Mesh (ASM) istio-1.26.4-asm.1 em clusters anexados do Anthos é igual ao de uma instalação nova.
A preparar a instalação do Anthos Service Mesh
- 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/istio-1.26.4-asm.1-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/istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
istio-1.26.4-asm.1
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 istio-1.26.4-asm.1
- Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
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/istio-1.26.4-asm.1-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/istio-1.26.4-asm.1-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.4-asm.1-osx.tar.gz.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
istio-1.26.4-asm.1
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 istio-1.26.4-asm.1
- Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
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/istio-1.26.4-asm.1-win.zip
- Transfira o ficheiro de assinatura e use o openssl para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip.1.sig
openssl dgst -verify - -signature istio-1.26.4-asm.1-win.zip.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
istio-1.26.4-asm.1
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 istio-1.26.4-asm.1
- Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
set PATH=%CD%\bin:%PATH%
- Agora que o ASM 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 no 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-1264-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-1264-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
- Instale o Anthos Service Mesh com
istioctl
através do perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1264-1"
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-1264-1-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1264-1-798ffb964-fnj8c 1/1 Running 1 3m21s
O argumento
--set revision
adiciona uma etiqueta de revisão no formatoistio.io/rev=asm-1264-1
ao istiod. A etiqueta de revisão é usada pelo webhook do injetor de sidecar automático para associar sidecars injetados a uma revisão específica do 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 no istiod. - 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-1264-1 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
Nestas instruções, o processo de atualização da versão do Anthos Service Mesh (ASM) istio-1.26.4-asm.1 em clusters anexados do Anthos é igual ao de uma instalação nova.
A preparar a instalação do Anthos Service Mesh
- 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/istio-1.26.4-asm.1-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/istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.26.4-asm.1-linux-amd64.tar.gz.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
istio-1.26.4-asm.1
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 istio-1.26.4-asm.1
- Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
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/istio-1.26.4-asm.1-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/istio-1.26.4-asm.1-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.26.4-asm.1-osx.tar.gz.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
istio-1.26.4-asm.1
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 istio-1.26.4-asm.1
- Para maior comodidade, adicione as ferramentas no diretório /bin ao seu PATH:
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/istio-1.26.4-asm.1-win.zip
- Transfira o ficheiro de assinatura e use o openssl para validar a assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.26.4-asm.1-win.zip.1.sig
openssl dgst -verify - -signature istio-1.26.4-asm.1-win.zip.1.sig istio-1.26.4-asm.1.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 istio-1.26.4-asm.1-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual denominado
istio-1.26.4-asm.1
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 istio-1.26.4-asm.1
- Para maior comodidade, adicione as ferramentas no diretório \bin ao seu PATH:
set PATH=%CD%\bin:%PATH%
- Agora que o ASM 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 no 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-1264-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-1264-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
- Instale o Anthos Service Mesh com
istioctl
através do perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.26.4-asm.1
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-1264-1-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1264-1-798ffb964-fnj8c 1/1 Running 1 3m21s
O argumento
--set revision
adiciona uma etiqueta de revisão no formatoistio.io/rev=1.8.6-asm.1
ao istiod. A etiqueta de revisão é usada pelo webhook do injetor de sidecar automático para associar sidecars injetados a uma revisão específica do 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 no istiod. - 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-1264-1 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
Instale o runtime híbrido 1.5.10
Transfira o pacote de lançamento para o seu sistema operativo:
Mac 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_64.tar.gz
Linux de 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_64.tar.gz
Mac de 32 bits:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_mac_32.tar.gz
Linux de 32 bits:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.5.10/apigeectl_linux_32.tar.gz
- Mude o nome do diretório
apigeectl/
atual para um nome de diretório de cópia de segurança. Por exemplo:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
Extraia o conteúdo do ficheiro gzip transferido para o diretório de base híbrido. Por exemplo:
tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
cd
para o diretório base.-
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.5.0-d591b23_linux_64
. Mude o nome desse diretório paraapigeectl
:mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
- No diretório new
apigeectl/
, executeapigeectl init
,apigeectl apply
eapigeectl check-ready
:- Inicialize o híbrido 1.5.10:
apigeectl init -f OVERRIDES
.yaml
Onde OVERRIDES
.yaml
é o ficheirooverrides.yaml
editado. - Verifique se foi inicializado corretamente com os seguintes comandos:
apigeectl check-ready -f OVERRIDES
.yaml
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
- A sintaxe da flag
apigeectl
--dry-run
depende da versão dokubectl
que está a usar. Verifique a versão dokubectl
:gcloud version
- Verifique se existem erros com um teste com o comando adequado à sua versão do
kubectl
:kubectl
versão 1.17 e mais antigas:apigeectl apply -f OVERRIDES
.yaml
--dry-run=truekubectl
versão 1.18 e mais recentes:apigeectl apply -f OVERRIDES
.yaml
--dry-run=client - Aplique as substituições. Selecione e siga as instruções para ambientes de produção ou
ambientes de demonstração/experimentais, 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.
- Aplique as substituições para atualizar o Cassandra:
apigeectl apply -f OVERRIDES
.yaml
--datastore - Conclusão da verificação:
apigeectl check-ready -f OVERRIDES
.yaml
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 apply -f OVERRIDES
.yaml
--telemetryapigeectl check-ready -f OVERRIDES
.yaml
- Apresente os componentes do Redis:
apigeectl apply -f OVERRIDES
.yaml
--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 apply -f OVERRIDES
.yaml
--orgapigeectl check-ready -f OVERRIDES
.yaml
- 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 apply -f OVERRIDES
.yaml
--env ENV_NAMEapigeectl check-ready -f OVERRIDES
.yaml
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 apply -f OVERRIDES
.yaml
--all-envsapigeectl check-ready -f OVERRIDES
.yaml
- Ambiente por ambiente: aplique as substituições a um ambiente de cada vez e verifique a conclusão. Repita
este passo para cada ambiente:
Demonstração/experimental
Na maioria dos ambientes de demonstração ou experimentais, pode aplicar as substituições a todos os componentes de uma só vez. Se o seu ambiente de demonstração/experimental 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
apigeectl apply -f OVERRIDES
.yaml
- Verifique o estado:
apigeectl check-ready -f OVERRIDES
.yaml
- Aplique as substituições para atualizar o Cassandra:
- Inicialize o híbrido 1.5.10:
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
- No diretório raiz da instalação para a qual quer reverter, execute
apigeectl apply
, verifique o estado dos seus pods, elimine o componente Redis (novidade na versão híbrida 1.5.0) e, em seguida, executeapigeectl init
. Certifique-se de que usa o ficheiro de substituições original para a versão para a qual quer reverter:- Corrida
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
- Verifique o estado dos seus pods:
kubectl -n NAMESPACE get pods
Onde NAMESPACE é o espaço de nomes híbrido do Apigee.
Avance para o passo seguinte apenas quando o
apigeeds
pod estiver em execução. -
Uma vez que o Redis é um novo componente no Hybrid v1.5, execute o seguinte comando para o eliminar:
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml
- Corrida
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml
- Corrida