Se estiver a atualizar a partir da versão 1.0 ou 1.1 do Apigee hybrid, tem de atualizar primeiro para a versão 1.2 antes de atualizar para a versão 1.3.6. Consulte as instruções para atualizar o Apigee Hybrid para a versão 1.2.
Atualização para a versão 1.3.6: vista geral.
Os procedimentos para atualizar o Apigee hybrid estão organizados nas seguintes secções:
- Preparação
- Criar e atualizar contas de serviço.
- Planeie grupos de ambientes.
- Copie e atualize o ficheiro de substituições.
- Atualize o Istio e o cert-manager.
- Instale a versão 1.3 do tempo de execução híbrido.
- Limpar.
Pré-requisito
- Versão 1.2 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.2.
Preparação
- (Recomendado) Faça uma cópia de segurança do diretório
$APIGEECTL_HOME/
da versão 1.2. Por exemplo:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.2-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 da seguinte forma. Siga a documentação da sua plataforma se precisar de ajuda:
Plataforma Atualize para a versão GKE 1.15.x Anthos 1,5 AKS 1.16.x com clusters associados do Anthos - Se não estiver a usar o Apigee Connect na sua instalação híbrida, ative o Apigee
Connect.
- Verifique se a API Apigee Connect está ativada:
gcloud services list | grep apigeeconnect apigeeconnect.googleapis.com Apigee Connect API
- Se não estiver, ative a API:
gcloud services enable apigeeconnect.googleapis.com --project $PROJECT_ID
Em que $PROJECT_ID é o ID do seu projeto do Google Cloud.
-
Na linha de comandos, obtenha as suas
gcloud
credenciais de autenticação, como mostra o exemplo seguinte:TOKEN=$(gcloud auth print-access-token)
Para verificar se o token foi preenchido, use
echo
, como mostra o exemplo seguinte:echo $TOKEN
Esta ação deve apresentar o seu token como uma string codificada.
Para mais informações, consulte a vista geral da ferramenta de linhas de comando gcloud.
- Verifique se o Apigee Connect está ativado para a sua organização:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Em que $ORG_NAME é o ID da sua organização.
Se a saída contiver:
"name" : "features.mart.connect.enabled", "value" : "true"
O Apigee Connect está ativado.
- Se o Apigee Connect não estiver ativado, atribua a função Agente do Apigee Connect à conta de serviço MART:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigeeconnect.Agent
- Ative o Apigee Connect com o seguinte comando:
curl -H "Authorization: Bearer $TOKEN" -X PUT \ -H "Content-Type: application/json" \ -d '{ "name" : "'"$ORG_NAME"'", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }' \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
Se o resultado contiver as duas propriedades seguintes, o Apigee Connect foi ativado com êxito:
{ "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" }
- Verifique se a API Apigee Connect está ativada:
- Crie a conta de serviço
apigee-watcher
. O Apigee Watcher é uma conta de serviço nova introduzida na v1.3. Monitoriza o sincronizador para alterações ao nível da organização e aplica essas alterações para configurar o acesso de entrada do Istio.A partir do diretório híbrido principal:
./tools/create-service-account apigee-watcher ./service-accounts
- Atribua a função de agente do Apigee Runtime à conta de serviço do observador:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/apigee.runtimeAgent
Em que
PROJECT_ID
é o ID do seu projeto do Google Cloud. Se os endereços de email da sua conta de serviço forem diferentes deste padrão, substitua-os em conformidade.O resultado deve incluir uma lista de todas as contas de serviço e respetivas funções, incluindo:
... - members: - serviceAccount:apigee-watcher@hybrid13rc5.iam.gserviceaccount.com role: roles/apigee.runtimeAgent ...
- Planeie os seus grupos de ambientes para o encaminhamento.
O Apigee hybrid 1.3 gere o encaminhamento do caminho base com grupos de ambientes em vez de
routingRules
. Se estiver a usar oroutingRules
na sua configuração híbrida, crie grupos de ambientes para replicar o seu encaminhamento.Tem de criar, pelo menos, um grupo de ambientes.
Consulte o artigo Acerca dos grupos de ambientes.
- Atualize o ficheiro de substituições:
- Crie uma cópia do ficheiro de substituições.
- Atualize as secções gcp e k8sCluster.
As seguintes propriedades de configuração foram substituídas na versão híbrida 1.3:
gcpRegion
substituído porgcp:region
gcpProjectID
substituído porgcp:projectID
gcpProjectIDRuntime
substituído porgcp:gcpProjectIDRuntime
k8sClusterName
substituído pork8s:clusterName
k8sClusterRegion
substituído pork8s:clusterRegion
Por exemplo, substitua a seguinte estrutura:
gcpRegion: gcp region gcpProjectID: gcp project ID gcpProjectIDRuntime: gcp project ID k8sClusterName: name k8sClusterRegion: region
com:
gcp: projectID: gcp project ID region: gcp region gcpProjectIDRuntime: gcp project ID # optional. This is only required if you # want logger/metrics data to be sent in # different gcp project. k8sCluster: name: gcp project ID region: gcp region
- Se ainda não tiver um identificador de instância exclusivo no ficheiro de substituições, adicione um:
# unique identifier for this installation. 63 chars length limit instanceID: ID
Onde ID é um identificador exclusivo desta instalação híbrida, como "
my-hybrid-131-installation
" ou "acmecorp-hybrid-131
". - Adicione a conta de serviço do observador (
apigee-watcher
) ao ficheiro de substituições:# Note: the SA should have the "Apigee Runtime Agent" role watcher: serviceAccountPath: "service account file"
- Adicione a conta de serviço das métricas (
apigee-metrics
) ao ficheiro de substituições:metrics: serviceAccountPath: "service account file"
- Atualize a secção
virtualhosts:
para substituirroutingRules
pelo seu grupo de ambiente.-name:
Substitua o nome pelo nome do seu grupo de ambientes. Pode ter várias entradas de nomes, uma para cada grupo de ambientes.hostAliases:[]
Eliminar esta linha.- Mantenha (ou adicione) as entradas
sslCertPath:
esslKeyPath:
. - Elimine todas as entradas
routingRules
.
Por exemplo:
virtualhosts: - name: default hostAliases: - "*.acme.com" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key routingRules: - paths: - /foo - /bar - env: my-environment
Passa a:
virtualhosts: - name: example-env-group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key
- Atualize as linhas
mart
econnectAgent:
.- Em
mart:
, remova as entradashostAlias:
,sslCertPath:
esslKeyPath:
. - Adicione uma secção
connectAgent:
. - Em
connectAgent:
, adicione uma entradaserviceAccountPath:
e indique o caminho para o ficheiro da conta de serviço que tem a função de agente do Apigee Connect atribuída (normalmente, a conta de serviço MART).
Por exemplo:
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
Passa a:
mart: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json connectAgent: serviceAccountPath: ./service-accounts/hybrid-project-apigee-mart.json
- Em
Atualize o Istio e o cert-manager
A versão 1.3 do Apigee hybrid requer o cert-manager v0.14.2 para gerir e validar certificados e a distribuição do Istio fornecida com a versão 1.5.7 (ou mais recente) do Anthos Service Mesh (ASM) para criar e gerir o gateway de entrada em tempo de execução.
Atualize o Istio 1.4.6 para o ASM 1.5.7 (ou mais recente)
- Para minimizar o tempo de inatividade, as implementações do Istio e os HPAs têm de ter, pelo menos, duas réplicas cada.
Execute os seguintes comandos para determinar o número de réplicas:
kubectl -n istio-system get deployments # list of deployments
kubectl -n istio-system get hpa # list of hpa
- Edite cada implementação que tenha apenas uma réplica e aumente o valor de
replicas:
para2
ou mais:kubectl -n istio-system edit deployment name
Por exemplo:
spec: progressDeadlineSeconds: 600 replicas: 2
- Edite cada HPA que tenha apenas uma réplica e aumente o valor de
minReplicas:
para2
ou mais:kubectl -n istio-system edit hpa name
Por exemplo:
spec: maxReplicas: 5 minReplicas: 2
- Transfira e instale o ASM seguindo as instruções de instalação em Transferir e instalar o ASM.
- Após a instalação, execute o comando de versão para se certificar de que tem a versão 1.5.x instalada corretamente:
./bin/istioctl version client version: 1.5.8-asm.0 apigee-mart-ingressgateway version: citadel version: 1.4.6 galley version: 1.4.6 ingressgateway version: 1.5.8-asm.0 pilot version: 1.4.6 policy version: 1.4.6 sidecar-injector version: 1.4.6 telemetry version: 1.4.6 pilot version: 1.5.8-asm.0 data plane version: 1.4.6 (1 proxies), 1.5.8-asm.0 (2 proxies)
Atualize o cert-manager
- Elimine a implementação atual do cert-manager:
kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
- Valide a sua versão do Kubernetes:
kubectl version
- Execute o seguinte comando para instalar o cert-manager a partir do Jetstack:
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.14.2/cert-manager.yaml
Instale o tempo de execução híbrido
- Armazene o número da versão mais recente numa variável:
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
- Verifique se a variável foi preenchida com um número de versão. Se quiser usar uma versão diferente, pode guardá-la na variável de ambiente. Por exemplo:
echo $VERSION 1.3.6
Transfira o pacote de lançamento para o seu sistema operativo:
Mac 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz
Linux de 64 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz
Mac de 32 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/apigeectl_mac_32.tar.gz
Linux de 32 bits:
curl -LO \ https://storage.googleapis.com/apigee-public/apigee-hybrid-setup/$VERSION/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.0.0-f7b96a8_linux_64
. Mude o nome desse diretório paraapigeectl
:mv apigeectl_1.0.0-f7b96a8_linux_64 apigeectl
- Elimine a tarefa
apigee-resources-install
deapigee-system
:kubectl -n apigee-system delete job apigee-resources-install
- Elimine o CRD mais antigo:
kubectl delete crd apigeetelemetries.apigee.cloud.google.com
- Atualize a secção
cassandra:
no ficheiro de substituições com uma propriedadeexternalSeedHost
. Esta propriedade ajuda a garantir que a nova instalação da versão 1.3.6 híbrida usa o mesmo cluster do Kubernetes que a instalação da versão 1.2. Este é um passo único necessário apenas para a atualização da versão híbrida 1.2 para a versão 1.3.6 (ou mais recente).- Encontre um dos endereços IP do Cassandra existente no mesmo cluster do Kubernetes onde
está a atualizar a instalação da versão 1.2.0.
kubectl -n namespace get pods -o wide
Onde namespace é o seu espaço de nomes híbrido do Apigee.
Tome nota do endereço IP de um nó do Cassandra. Por exemplo:
kubectl -n apigee get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE apigee-cassandra-0 1/1 Running 0 33d 10.68.8.24 gke-example-cluster-rc5-apigee-data-c8bf1234-09kc apigee-cassandra-1 1/1 Running 0 16d 10.68.8.33 gke-example-cluster-rc5-apigee-data-c9221ee7-10kc apigee-cassandra-2 1/1 Running 0 23h 10.68.9.11 gke-example-cluster-rc5-apigee-data-d123e456-11kc
- Adicione o valor da propriedade
externalSeedHost
:cassandra: externalSeedHost: Cassandra_node_IP
Onde Cassandra_node_IP é o IP do nó do Cassandra (
10.68.8.24
no exemplo anterior).
- Encontre um dos endereços IP do Cassandra existente no mesmo cluster do Kubernetes onde
está a atualizar a instalação da versão 1.2.0.
- No diretório new
apigeectl/
, executeapigeectl init
,apigeectl apply
eapigeectl check-ready
:- Inicialize o híbrido 1.3.6:
apigeectl init -f overrides_1.3.yaml
Onde overrides_1.3.yaml é o seu ficheiro overrides.yaml editado.
- Na versão híbrida 1.3, a sintaxe da flag
--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:
kubectl
versão 1.17 e mais antigas:apigeectl apply -f overrides_1.3.yaml --dry-run=true
kubectl
versão 1.18 e mais recentes:apigeectl apply -f overrides_1.3.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_1.3.yaml --datastore
- Conclusão da verificação:
kubectl -n namespace get pods
Onde namespace é o seu espaço de nomes híbrido do Apigee.
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_1.3.yaml --telemetry
kubectl -n namespace get pods
- 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_1.3.yaml --org
kubectl -n namespace get pods
- Aplique as substituições para atualizar os seus ambientes. Tem 2 opções:
- 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_1.3.yaml --env env_name
kubectl -n namespace get pods
Em que env_name é o nome do ambiente que está a atualizar.
- Aplique as substituições a todos os ambientes de uma só vez e verifique a conclusão:
apigeectl apply -f overrides_1.3.yaml --all-envs
kubectl -n namespace get pods
- 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_1.3.yaml
- Verifique o estado:
apigeectl check-ready -f overrides_1.3.yaml
Para mais instruções, consulte o artigo Configuração híbrida do GKE – Passo 5: instale o híbrido no GKE.
- Aplique as substituições para atualizar o Cassandra:
- Assim que tiver a configuração híbrida 1.3 a funcionar, verifique se todos os nós do Cassandra (antigos e novos) fazem parte do mesmo cluster do Cassandra. Execute o seguinte comando num dos nós do
Cassandra:
kubectl -n namespace get pods
kubectl -n namespace exec old Cassandra pod -- nodetool status
No exemplo de saída seguinte, 10.68.8.24 é da versão 1.2.0 e é o IP do nó que usou como
externalSeedHost
. 10.68.7.11 é da versão 1.3.6:Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.68.8.24 379.41 KiB 256 50.8% 11bbd43b-af64-464b-a96d-0d6dd0521de1 ra-1 UN 10.68.7.11 1.35 MiB 256 49.2% 0b4d9e08-f353-413a-b4a9-7d18a8d07e58 ra-1
Se não estiverem no mesmo cluster, verifique o valor de
externalSeedHost
. - Quando todos os pods estiverem em funcionamento, remova
externalSeedHost
do ficheiro de substituições e executeapigeectl apply
novamente com a opção--datastore
:apigeectl apply --datastore -f overrides_1.3.6.yaml
Limpar
Depois de verificar que todos os pods estão em funcionamento e em bom estado, e que os pontos finais do ASM são válidos para a nova instalação, pode limpar:
- Recursos híbridos 1.2.
- A instância mais antiga do Cassandra
- Recursos do Istio 1.4.6.
Elimine recursos do Hybrid 1.2.0
- Remova os detalhes de encaminhamento do anfitrião virtual 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -s virtualhost -f 1.2.0_overrides.yaml
Onde $APIGEECTL_HOME-v1.2 é o diretório onde fez uma cópia de segurança do diretório da versão 1.2 de
apigeectl
. - Se o ponto final continuar a funcionar como esperado e tiver validado que todos os componentes 1.3.0 estão a funcionar, execute o seguinte comando para eliminar os recursos híbridos 1.2.0:
$APIGEECTL_HOME-v1.2/apigeectl delete -c "mart,connect-agent,synchronizer,runtime,udca,metrics,logger" \ -f 1.2.0_overrides.yaml
Desative a instância do Cassandra mais antiga
cd
para o diretórioapigeectl
recém-instalado.- Execute o
tools/cas_cleanup.sh
script.Este script desativa o pod do Cassandra antigo do anel do Cassandra, elimina o STS antigo e elimina os PVCs.
bash cas_cleanup.sh Apigee namespace
Elimine recursos do Istio versão 1.4.6
- Execute o seguinte comando para eliminar os recursos do Istio v.1.4.6 mais recentes:
kubectl delete all -n istio-system --selector \ 'app in (apigee-mart-istio-ingressgateway, galley, security, istio-nodeagent, istio-mixer, sidecarInjectorWebhook, istio-mixer)'
- Execute os seguintes comandos para eliminar tarefas mais antigas da instalação do Istio 1.4.6:
kubectl -n istio-system delete job istio-init-crd-10-1.4.6
kubectl -n istio-system delete job istio-init-crd-11-1.4.6
kubectl -n istio-system delete job istio-init-crd-14-1.4.6
Parabéns! Atualizou com êxito para a versão 1.3.6 do Apigee Hybrid.
- Inicialize o híbrido 1.3.6: