Nesta página, descrevemos como migrar uma organização da Apigee híbrida de um cluster do Kubernetes para outro. Veja a seguir alguns casos em que pode ser necessário migrar uma organização para outro cluster:
- O data center que hospeda o cluster atual não tem mais capacidade ou está sendo desativado.
- O cluster está executando uma infraestrutura ou uma versão antiga do Kubernetes e você quer migrar para um cluster com infraestrutura mais recente.
- Você quer mover as organizações de clusters de várias organizações para clusters separados.
A migração de uma organização para outro cluster híbrido tem riscos e limitações. Leia os detalhes na seção Limitações antes de executar uma migração.
Limitações
As limitações a seguir se aplicam à migração de uma organização híbrida para outro cluster do Kubernetes:
- Há o risco de perda de dados ao mover dados da organização para um novo cluster do Kubernetes. Faça o backup dos dados de todas as organizações do cluster do Kubernetes usando as instruções de backup híbrido antes de migrar uma organização.
- O tamanho máximo de dados permitido para migração de uma organização é de 5GB em todos os keyspaces de uma organização, exceto cache e cota.
- Os dados em cache não serão migrados. O híbrido recria os dados do cache.
- Os dados de cota não serão migrados. O híbrido redefine os dados de cota.
- Só é possível migrar organizações para um cluster do Kubernetes que não contenha implantação híbrida. A migração para um cluster com uma implantação híbrida não é compatível.
- A organização que está sendo migrada só pode ser movida para um novo cluster com uma única implantação de região. Depois que a implantação de região única estiver funcionando, siga o processo de expansão de região, descrito em Implantação multirregional, para expandir para outras regiões.
- O cluster do Cassandra deve funcionar bem em todas as regiões.
Como migrar uma organização
Siga as instruções abaixo para migrar uma organização híbrida de um cluster do Kubernetes para outro:
- Se ainda não estiver ativado, ative os backups no cluster do Kubernetes que contém a organização híbrida que será migrada. Consulte os Aspectos gerais do backup do Cassandra para receber informações sobre backups híbridos.
- Inicie um job de backup híbrido usando o seguinte comando:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup <backup job name>
O
<backup job name>
pode ser qualquer nome de contêiner válido. - Quando o job de backup for concluído, use as instruções das seções a seguir de
Backups do
Monitoring para verificar se o backup foi concluído:
- "Verifique o status da tarefa de backup"
- "Verifique os registros de backup"
- Depois de verificar se o backup foi concluído, anote o número de ID no final do
registro de backup.
Por exemplo, um registro de backup bem-sucedido deve conter uma linha como a seguinte:
Anote o número de vários dígitos no final da linha. Você precisará desse número mais tarde.INFO: completed upload for 20230207004250
- Alterne o contexto do Kubernetes para o cluster do Kubernetes de destino:
kubectl config use-context <destination cluster name> # <destination cluster name>
em que
<destination cluster name>
é o nome do cluster de destino do Kubernetes. - Restaure os dados de backup no cluster de destino do Kubernetes seguindo as instruções em
Como restaurar em uma única região.
- Use o arquivo overrides.yaml para a organização que será migrada para a implantação híbrida de destino.
- Lembre-se de definir o valor
restore:snapshotTimestamp
como o número de vários dígitos mostrado pelo registro de backup na etapa 4. Consulte Como restaurar em uma única região.
- Quando a restauração for concluída, exclua todos os dados da organização do cluster de destino
do Kubernetes, exceto os dados da organização que está sendo migrada. Os arquivos de backup híbrido contêm os dados de todas as
organizações, incluindo as que você não quer migrar. Depois que a implantação híbrida
de destino for restaurada, será necessário remover todos os dados organizacionais extras que foram
copiados para a implantação seguindo estas etapas:
- Verifique se o contexto atual é o contexto correto para o cluster de destino do Kubernetes:
kubectl config current-context
- Exec no pod
apigee-cassandra-default-0
:kubectl exec -it -n APIGEE_NAMESPACE apigee-cassandra-default-0 -- /bin/bash
- Execute o comando a seguir:
find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2 -printf "%f\n"
Consulte Receber o nome da organização migrada para instruções sobre como encontrar
<migrated org name>
.Copie a lista com todos os nomes exibidos na saída. Você precisará dessa lista na etapa 7. f.
- Saia do pod
apigee-cassandra-default-0
. - Crie um pod cliente de depuração do Cassandra usando as instruções em
Criar um contêiner de cliente para depuração. Passe para a próxima etapa depois de receber uma
solicitação
cqlsh
. - Execute os seguintes comandos no prompt
cqlsh
:-
desc keyspaces;
Verifique se esse comando não retorna erros.
- Para cada nome da lista criada na etapa 7. c., execute o seguinte comando:
drop keyspace <name>
-
- Saia do pod cliente de depuração do Cassandra.
- Depois de executar os comandos
cqlsh
, execute os comandos a seguir em todos os pods do Cassandra no cluster de destino do Kubernetes:kubectl exec -it -n APIGEE_NAMESPACE
-- /bin/bash find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*<migrated org name>*' -type d -maxdepth 2
Consulte instruções sobre como encontrar
<migrated org name>
em Encontrar o nome da organização migrada.find /opt/apigee/data/apigee-cassandra/ -iname '*_hybrid' -not -iname '*
*' -type d -maxdepth 2 -exec rm -rf {} +
- Saia do pod do Cassandra.
- Verifique se o contexto atual é o contexto correto para o cluster de destino do Kubernetes:
- Alterne o contexto do Kubernetes para o cluster de origem do Kubernetes:
kubectl config use-context <source cluster name>
em que
<source cluster name>
é o nome do contexto do cluster do Kubernetes de origem. - Exclua a organização migrada do cluster do Kubernetes de origem. Use o
arquivo
overrides.yaml
da organização no comando de exclusão:- Verifique se o contexto atual é o contexto correto para o cluster de origem do Kubernetes:
kubectl config current-context
Se necessário, defina os contextos do Kubernetes para o cluster, e a organização precisa ser desativada.
Liste seus contextos atuais para ver o nome de contexto de cada cluster:
kubectl config get-contexts
Defina o contexto como o cluster e a região que você quer desativar:
kubectl config use-context CONTEXT_NAME
Em que CONTEXT_NAME é o nome do contexto do cluster e da região.
Exemplo:
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE gke_example-org-1_us-central1_example-cluster-1 gke_example-org-1_us-central1_example-cluster-1 gke_example-org-1_us-central1_example-cluster-1 apigee * gke_example-org-1_us-central1_example-cluster-2 gke_example-org-1_us-central1_example-cluster-2 gke_example-org-1_us-central1_example-cluster-2 apigee gke_example-org-1_us-west1_example-cluster-2 gke_example-org-1_us-west1_example-cluster-2 gke_example-org-1_us-west1_example-cluster-2 apigeekubectl config use-context gke_example-org-1_us-west1_example-cluster-2
- Exclua o virtualhost. Repita isso para cada grupo de ambiente:
helm -n APIGEE_NAMESPACE delete ENV_GROUP_NAME
- Exclua os ambientes. Repita isso para cada ambiente:
helm -n APIGEE_NAMESPACE delete ENV_NAME
- Exclua a organização da Apigee.
helm -n APIGEE_NAMESPACE delete ORG_NAME
- Execute no pod apigee-cassandra-default-0:
kubectl exec -it -n APIGEE_NAMESPACE apigee-cassandra-default-0 -- /bin/bash
- Execute o comando a seguir:
find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -printf "%f\n"
Consulte instruções sobre como encontrar
<migrated org name>
em Encontrar o nome da organização migrada.Copie a lista com todos os nomes exibidos na saída. Você precisará dessa lista na etapa 9. j.
- Saia do pod
apigee-cassandra-default-0
. - Crie um pod cliente de depuração do Cassandra usando as instruções em
Criar um contêiner de cliente para depuração. Passe para a próxima etapa
depois de receber uma solicitação
cqlsh
. - Execute os seguintes comandos no prompt
cqlsh
:desc keyspaces;
Verifique se esse comando não retorna erros.
- Para cada nome da lista criada na etapa 10, f.,
execute este comando:
drop keyspace <name>;
- Saia do pod cliente de depuração do Cassandra. Depois de executar os comandos
-
kubectl exec -it -n APIGEE_NAMESPACE CASSANDRA_POD_NAME -- /bin/bash
-
find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2
Consulte instruções sobre como encontrar
<migrated org name>
em Encontrar o nome da organização migrada. -
find /opt/apigee/data/apigee-cassandra/ -iname '*<migrated org name>_hybrid' -type d -maxdepth 2 -exec rm -rf {} +
- Saia do pod do Cassandra.
cqlsh
, execute os comandos a seguir em todos os pods do Cassandra no cluster de origem do Kubernetes: - Verifique se o contexto atual é o contexto correto para o cluster de origem do Kubernetes:
Encontrar o nome da organização migrada
Várias das etapas do procedimento descrito na seção anterior exigem o nome da organização migrada. Para encontrar o nome da organização migrada, faça o seguinte:
- Receba o nome da organização do arquivo overrides.yaml da organização. Verifique o arquivo overrides.yaml da organização que está sendo migrada.
- Se o nome da organização contiver traços "-", substitua todos os traços "-" por sublinhados "_".