Como fazer upgrade para a versão 1.5.10.
Os procedimentos para fazer upgrade da Apigee híbrida são organizados nas seguintes seções:
- Faça o backup da instalação híbrida.
- Verifique sua versão do Kubernetes e faça upgrade conforme apropriado.
- Fazer upgrade do ASM.
- Instale o ambiente de execução híbrido versão 1.5.
Pré-requisito
- Apigee híbrida versão 1.4. Se você estiver atualizando de uma versão anterior, consulte as instruções sobre Como fazer upgrade da Apigee híbrida para a versão 1.4.
Fazer upgrade 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 arquivos em que você instalou
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 backup do diretório
$APIGEECTL_HOME/
da versão 1.4. Exemplo:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.4-backup.tar.gz $APIGEECTL_HOME
- (Recomendado) Faça o backup do banco de dados do Cassandra seguindo as instruções em Backup e recuperação do Cassandra.
- Faça upgrade da plataforma do Kubernetes para as versões compatíveis com a versão híbrida 1.5. Siga a documentação da plataforma se precisar de ajuda.
- Se você estiver executando uma versão do
cert-manager
anterior à v1.2.0, precisará fazer upgrade para a v1.2.0.-
Verifique a versão atual do
cert-manager
usando o seguinte comando:kubectl -n cert-manager get deployment -o yaml | grep 'image:'
Algo semelhante ao seguinte é retornado:
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 implantações usando este comando:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
-
Faça upgrade do
cert-manager
para a versão v1.2.0 usando o seguinte comando:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
-
Fazer upgrade do ASM para a versão 1.12
Execute o upgrade usando a documentação do ASM apropriada para sua plataforma:
As instruções para instalar e configurar o ASM variam de acordo com a plataforma. As plataformas são divididas nas seguintes categorias:
- GKE: clusters do Google Kubernetes Engine em execução no Google Cloud.
- Fora do Google Cloud: os clusters do Anthos são executados em:
- Clusters do Anthos no VMware (GKE On-Prem)
- Anthos em bare metal
- Clusters do Anthos no AWS
- Amazon EKS
- Outras plataformas do Kubernetes: clusters compatíveis criados e em execução em:
- AKS
- EKS
- OpenShift
GKE
A sequência de upgrade para a versão 1.8.x do ASM para sua instalação híbrida é a seguinte:
- prepare-se para o upgrade;
- instale a nova versão do ASM;
- exclua as implantações, os serviços e os webhooks da versão anterior do ASM da instalação atual;
- faça upgrade dos gateways e configure os novos webhooks.
Para fazer upgrade para a versão 1.8.x do ASM para híbrida no GKE:
- Veja os requisitos em Fazer upgrade do Anthos Service Mesh, mas ainda não faça o upgrade.
- Antes de instalar a nova versão, determine a revisão atual. Você precisará
dessas informações para excluir as implantações, os serviços e os webhooks da versão anterior do ASM da
instalação atual. Use o seguinte comando para armazenar a
revisão atual do istiod em uma 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 arquivo
overlay.yaml
ou verifique se ooverlay.yaml
atual contém o seguinte conteúdo:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1129-3 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 seguintes seções da documentação do ASM:
- faça o download do asmcli;
- conceda permissões de administrador de cluster;
- Valide o projeto e o cluster;
- faça upgrade com recursos opcionais. Pare antes de iniciar a seção "Fazer upgrade dos gateways";
- exclua o webhook de mutação e valide o webhook:
cd
no diretório em que você instalouasmcli
;- armazene a nova revisão atual em uma variável de ambiente a ser usada no script
para excluir os webhooks:
UPGRADE_REV="asm-1129-3"
- crie um script de shell contendo 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 excluir os webhooks atuais;
- siga as etapas em Fazer upgrade de gateways para criar os novos webhooks e alternar o tráfego para os novos gateways.
Fora do Google Cloud
Estas instruções abrangem o upgrade do ASM em:
- Clusters do Anthos no VMware (GKE On-Prem)
- Anthos em bare metal
- Clusters do Anthos no AWS
- Amazon EKS
- Veja os requisitos em Fazer upgrade do Anthos Service Mesh, mas ainda não faça o upgrade.
- Antes de instalar a nova versão, determine a revisão atual. Você precisará
dessas informações para excluir o Webhook de validação e desativar o webhook
da instalação atual do ASM. Use o seguinte comando para armazenar a revisão
atual do istiod em uma 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 arquivo
overlay.yaml
ou verifique se ooverlay.yaml
atual contém o seguinte conteúdo:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: revision: asm-1129-3 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 seguintes seções da documentação do ASM:
- faça o download do asmcli;
- conceda permissões de administrador de cluster;
- Valide o projeto e o cluster;
- faça upgrade com recursos opcionais. Pare antes de iniciar a seção "Fazer upgrade dos gateways";
- exclua o webhook de mutação e valide o webhook:
cd
no diretório em que você instalouasmcli
;- armazene a nova revisão atual em uma variável de ambiente a ser usada no script
para excluir os webhooks:
UPGRADE_REV="asm-1129-3"
- crie um script de shell contendo 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 excluir os webhooks atuais;
- siga as etapas em Fazer upgrade de gateways para criar os novos webhooks e alternar o tráfego para os novos gateways.
AKS / EKS
Nestas instruções, o processo de upgrade da versão istio-1.12.9-asm.3 do Anthos Service Mesh (ASM) nos clusters anexados ao Anthos é igual ao de uma nova instalação.
Como preparar a instalação do Anthos Service Mesh
- Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- Faça o download do arquivo de assinatura e use openssl para verificar a
assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.12.9-asm.3
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
- Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
export PATH=$PWD/bin:$PATH
- Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- Faça o download do arquivo de assinatura e use openssl para verificar a
assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.12.9-asm.3-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.12.9-asm.3
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
- Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
export PATH=$PWD/bin:$PATH
- Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- Faça o download do arquivo de assinatura e use openssl para verificar a
assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.12.9-asm.3-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.12.9-asm.3
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests\profiles
.
- Exemplos de aplicativos no diretório
- Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Para facilitar, adicione as ferramentas que estão no diretório \bin ao seu PATH:
set PATH=%CD%\bin:%PATH%
- Agora que o ASM Istio está instalado, verifique a versão de
istioctl
:istioctl version
- Crie um namespace chamado istio-system para os componentes do plano de controle:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Configurar o webhook de validação
Ao instalar o Anthos Service Mesh, você define um rótulo de revisão em istiod. Você precisa definir a mesma revisão no webhook de validação.
- Crie um arquivo chamado
istiod-service.yaml
com o conteúdo a seguir.apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1129-3 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-1129-3 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 de validação do webhook:kubectl apply -f istiod-service.yaml
- Verifique se a configuração foi aplicada:
kubectl get svc -n istio-system
A resposta será semelhante a:
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
Como instalar o Anthos Service Mesh
- Instale o Anthos Service Mesh com
istioctl
usando o perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision="asm-1129-3"
A saída será semelhante a esta:
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-1129-3-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1129-3-798ffb964-fnj8c 1/1 Running 1 3m21s
O argumento
--set revision
adiciona um rótulo de revisão no formatoistio.io/rev=asm-1129-3
a istiod. O rótulo de revisão é usado pelo webhook do injetor automático de sidecar para associar os sidecars injetados a uma revisão istiod específica. Para ativar a injeção automática de sidecar para um namespace, você precisa rotulá-lo com uma revisão que corresponda ao rótulo em istiod. - Verifique se a instalação foi concluída:
kubectl get svc -n istio-system
A saída será semelhante a esta:
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-1129-3 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
OpenShift
Nestas instruções, o processo de upgrade da versão istio-1.12.9-asm.3 do Anthos Service Mesh (ASM) nos clusters anexados ao Anthos é igual ao de uma nova instalação.
Como preparar a instalação do Anthos Service Mesh
- Conceda a restrição de contexto de segurança
anyuid
(SCC) ao istio-system com o seguinte comando da CLI do OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz
- Faça o download do arquivo de assinatura e use openssl para verificar a
assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig
openssl dgst -verify /dev/stdin -signature istio-1.12.9-asm.3-linux-amd64.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.12.9-asm.3-linux-amd64.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.12.9-asm.3
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
- Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
export PATH=$PWD/bin:$PATH
- Conceda a restrição de contexto de segurança
anyuid
(SCC) ao istio-system com o seguinte comando da CLI do OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz
- Faça o download do arquivo de assinatura e use openssl para verificar a
assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-osx.tar.gz.1.sig
openssl dgst -sha256 -verify /dev/stdin -signature istio-1.12.9-asm.3-osx.tar.gz.1.sig istio-1.12.9-asm.3.tar.gz <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.12.9-asm.3-osx.tar.gz
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.12.9-asm.3
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests/profiles
.
- Exemplos de aplicativos no diretório
- Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Para facilitar, adicione as ferramentas que estão no diretório /bin ao seu PATH:
export PATH=$PWD/bin:$PATH
- Conceda a restrição de contexto de segurança
anyuid
(SCC) ao istio-system com o seguinte comando da CLI do OpenShift (oc
):oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
- Faça o download do arquivo de instalação do Anthos Service Mesh no diretório de trabalho atual:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip
- Faça o download do arquivo de assinatura e use openssl para verificar a
assinatura:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.12.9-asm.3-win.zip.1.sig
openssl dgst -verify - -signature istio-1.12.9-asm.3-win.zip.1.sig istio-1.12.9-asm.3.win.zip <<'EOF'
-----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF - Extraia o conteúdo do arquivo em qualquer local no sistema. Por
exemplo, para extrair o conteúdo para o diretório de trabalho atual:
tar xzf istio-1.12.9-asm.3-win.zip
O comando cria um diretório de instalação no seu diretório de trabalho atual, chamado
istio-1.12.9-asm.3
, que contém o seguinte:- Exemplos de aplicativos no diretório
samples
. - A ferramenta de linha de comando
istioctl
que você usa para instalar o Anthos Service Mesh está no diretóriobin
. - Os perfis de configuração do Anthos Service Mesh estão no
diretório
manifests\profiles
.
- Exemplos de aplicativos no diretório
- Verifique se você está no diretório raiz da instalação do Anthos Service Mesh:
cd istio-1.12.9-asm.3
- Para facilitar, adicione as ferramentas que estão no diretório \bin ao seu PATH:
set PATH=%CD%\bin:%PATH%
- Agora que o ASM Istio está instalado, verifique a versão de
istioctl
:istioctl version
- Crie um namespace chamado istio-system para os componentes do plano de controle:
kubectl create namespace istio-system
Linux
Mac OS
Windows
Configurar o webhook de validação
Ao instalar o Anthos Service Mesh, você define um rótulo de revisão em istiod. Você precisa definir a mesma revisão no webhook de validação.
- Crie um arquivo chamado
istiod-service.yaml
com o conteúdo a seguir.apiVersion: v1 kind: Service metadata: name: istiod namespace: istio-system labels: istio.io/rev: asm-1129-3 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-1129-3 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 de validação do webhook:kubectl apply -f istiod-service.yaml
- Verifique se a configuração foi aplicada:
kubectl get svc -n istio-system
A resposta será semelhante a:
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
Como instalar o Anthos Service Mesh
- Instale o Anthos Service Mesh com
istioctl
usando o perfilasm-multicloud
:istioctl install \ --set profile=asm-multicloud \ --set revision=istio-1.12.9-asm.3
A saída será semelhante a esta:
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-1129-3-798ffb964-2ls88 1/1 Running 0 3m21s istiod-asm-1129-3-798ffb964-fnj8c 1/1 Running 1 3m21s
O argumento
--set revision
adiciona um rótulo de revisão no formatoistio.io/rev=1.8.6-asm.1
a istiod. O rótulo de revisão é usado pelo webhook do injetor automático de sidecar para associar os sidecars injetados a uma revisão istiod específica. Para ativar a injeção automática de sidecar para um namespace, você precisa rotulá-lo com uma revisão que corresponda ao rótulo em istiod. - Verifique se a instalação foi concluída:
kubectl get svc -n istio-system
A saída será semelhante a esta:
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-1129-3 ClusterIP 172.200.63.220 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 3m43s
Instalar o ambiente de execução híbrido 1.5.10
Faça o download do pacote de lançamento para seu sistema operacional:
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 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
- Renomeie o diretório
apigeectl/
atual para um nome de diretório de backup. Exemplo:mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.2/
-
Extraia o conteúdo do arquivo gzip baixado para seu diretório base híbrido. Exemplo:
tar xvzf FILENAME.tar.gz -C HYBRID_BASE_DIRECTORY
cd
ao diretório base.-
O conteúdo de tar é, por padrão, expandido em um diretório com a versão e a plataforma no nome. Por exemplo,
./apigeectl_1.5.0-d591b23_linux_64
. Renomeie esse diretório paraapigeectl
:mv apigeectl_1.5.0-d591b23_linux_64 apigeectl
- No novo diretório
apigeectl/
, executeapigeectl init
,apigeectl apply
eapigeectl check-ready
:- Inicialize a Apigee híbrida 1.5.10:
apigeectl init -f OVERRIDES
.yaml
Em que OVERRIDES
.yaml
é o arquivooverrides.yaml
editado. - Verifique se ele foi inicializado corretamente com os seguintes comandos:
apigeectl check-ready -f OVERRIDES
.yaml
kubectl describe apigeeds -n apigee
A saída será semelhante a esta:
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 sinalização
apigeectl
--dry-run
depende da versão dekubectl
que você está executando. Verifique a versão dekubectl
:gcloud version
- Verifique se há erros com uma simulação usando o comando apropriado para a versão do
kubectl
:kubectl
versão 1.17 e anteriores: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/experimental, dependendo
da sua instalação.
Produção
Para ambientes de produção, você precisa fazer upgrade de cada componente híbrido individualmente e verificar o status do componente atualizado para o processo de confirmação do próximo componente.
- Aplique as modificações para fazer upgrade do Cassandra:
apigeectl apply -f OVERRIDES
.yaml
--datastore - Verifique a conclusão:
apigeectl check-ready -f OVERRIDES
.yaml
Passe para a próxima etapa somente quando os pods estiverem prontos.
- Aplique as modificações para fazer upgrade dos componentes de telemetria e verificar a conclusão:
apigeectl apply -f OVERRIDES
.yaml
--telemetryapigeectl check-ready -f OVERRIDES
.yaml
- Traga os componentes do Redis:
apigeectl apply -f OVERRIDES
.yaml
--redis - Aplique as modificações para fazer upgrade dos componentes no 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 modificações para fazer upgrade dos seus ambientes. Você tem duas opções:
- Ambiente por ambiente: aplique suas modificações em um ambiente por vez e verifique a conclusão. Repita
esta etapa 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 você está atualizando.
- Todos os ambientes de uma só vez: aplique suas modificaçõ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 suas modificações em um ambiente por vez e verifique a conclusão. Repita
esta etapa para cada ambiente:
Demonstração/Experimental
Na maioria dos ambientes experimentais ou de demonstração, é possível aplicar as modificações a todos os componentes de uma só vez. Se o ambiente de demonstração/experimental for grande e complexo ou for muito semelhante a um ambiente de produção, use as instruções para fazer upgrade de ambientes de produção.
apigeectl apply -f OVERRIDES
.yaml
- Verifique o status:
apigeectl check-ready -f OVERRIDES
.yaml
- Aplique as modificações para fazer upgrade do Cassandra:
- Inicialize a Apigee híbrida 1.5.10:
Como reverter um upgrade
Siga estas etapas para reverter um upgrade anterior:
- Limpe os jobs concluídos do namespace do ambiente de execução híbrido,
em que NAMESPACE é o namespace especificado no arquivo de modificações, se você especificou um namespace. Caso contrário, o namespace padrão
é
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Limpe jobs concluídos do namespace
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 original deapigeectl
. Exemplo:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- No diretório raiz da instalação para a qual você quer reverter, execute
apigeectl apply
, verifique o status dos seus pods, exclua o componente Redis (novo na versão híbrida v1.5.0) e executeapigeectl init
. Use o arquivo de modificações original da versão para a qual você quer reverter:- Execute
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f overrides/ORIGINAL_OVERRIDES.yaml
- Verifique o status dos seus pods.
kubectl -n NAMESPACE get pods
Em que NAMESPACE é seu namespace da Apigee híbrida.
Siga para a próxima etapa somente quando o pod
apigeeds
estiver em execução. -
Como o Redis é um novo componente da versão híbrida v1.5, execute o comando a seguir para excluí-lo:
apigeectl_1.5.0 delete --redis -f ORIGINAL_OVERRIDES
.yaml
- Execute
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f overrides/ORIGINAL_OVERRIDES.yaml
- Execute