Esta página mostra como migrar a configuração do Git de um objeto ConfigManagement para um objeto RootSync. A migração ativa as APIs RootSync e RepoSync, que lhe permitem usar funcionalidades adicionais:
- Sincronize a partir de mais do que uma fonte de informação fidedigna
- Use o painel de controlo do Config Sync
- Monitorize o Config Sync através do Cloud Monitoring, do Prometheus ou de um sistema de monitorização personalizado
- Renderize configurações do Kustomize e gráficos do Helm
- Sincronize artefactos OCI do Artifact Registry
- Sincronize gráficos Helm a partir do Artifact Registry
- Substituir valores do sistema, como alterar os limites de recursos e atualizar o número de commits do Git a obter
Pode ativar estas APIs mesmo que queira usar apenas um repositório raiz e não queira usar nenhum repositório de espaço de nomes.
Migre as suas definições do ConfigManagement
Se estiver a usar RootSync com spec.enableLegacyFields, siga as instruções para deixar de usar campos antigos.
Se o seu objeto ConfigManagement estiver a usar spec.git, mas spec.enableMultiRepo
estiver definido como falso, siga as instruções para migrar para o RootSync.
Deixe de usar campos antigos
Após a versão 1.19.0 e posteriores, o campo spec.enableLegacyFields não é suportado e a definição deste campo vai causar erros. Para usar o Config Sync versão 1.19.0 e posterior, conclua os passos seguintes para remover os campos
antigos:
Abra o objeto ConfigManagement.
No objeto ConfigManagement, remova os campos
spec.enableLegacyFieldsespec.git. O objeto ConfigManagement deve ser semelhante ao seguinte:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: trueAplique as alterações:
kubectl apply -f config-management.yaml
Os campos antigos estão agora desativados sem afetar o objeto RootSync gerado a partir dos campos spec.git do objeto ConfigManagement. A migração foi concluída e já pode usar os campos git diretamente no objeto RootSync.
Migre para o RootSync
Se o seu objeto ConfigManagement estiver a usar spec.git, mas spec.enableMultiRepo
estiver definido como falso, siga este guia para ativar as APIs RootSync e RepoSync.
Usar nomos migrate
A partir da versão 1.10.0, o nomos fornece o comando nomos migrate para
ativar as APIs RootSync e RepoSync. Tem de atualizar
nomos para a versão 1.10.0 ou posterior.
Para mais detalhes sobre como executar o comando, siga o artigo Migre de um objeto ConfigManagement para um objeto RootSync. Certifique-se de que o objeto ConfigManagement não está registado na sua fonte de verdade e é gerido pela sincronização de configuração. Se for, deve modificar o objeto ConfigManagement na sua fonte de informações fidedignas seguindo os passos descritos na migração manual.
Migração manual
Se a versão do nomos for anterior à 1.10.0, pode migrar manualmente as suas definições. Tem de definir spec.enableMultiRepo como true no objeto ConfigManagement e criar um objeto RootSync que sincronize o repositório raiz com o cluster. O repositório raiz pode ser um repositório não estruturado ou um repositório hierárquico. Depois de migrar
para usar o objeto RootSync, pode dividir um repositório em vários
repositórios e configurar a sincronização a partir de
vários repositórios.
Para configurar o repositório raiz migrando a configuração, conclua as seguintes tarefas:
- Abra o objeto ConfigManagement.
- Crie uma cópia dos valores nos campos
spec.git. Use estes valores quando criar o objeto RootSync. - Remova todos os campos
spec.git(incluindogit:) do objeto ConfigManagement. No objeto ConfigManagement, defina o campo
spec.enableMultiRepocomotrue:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: trueAplique as alterações:
kubectl apply -f config-management.yamlAguarde a criação do CRD RootSync.
kubectl wait --for=condition=established crd rootsyncs.configsync.gke.ioUsando os valores que copiou do objeto ConfigManagement, crie o objeto RootSync. Por exemplo:
# root-sync.yaml apiVersion: configsync.gke.io/v1beta1 kind: RootSync metadata: name: root-sync namespace: config-management-system spec: sourceFormat: ROOT_FORMAT git: repo: ROOT_REPOSITORY revision: ROOT_REVISION branch: ROOT_BRANCH dir: "ROOT_DIRECTORY" auth: ROOT_AUTH_TYPE gcpServiceAccountEmail: ROOT_EMAIL # secretRef should be omitted if the auth type is none, gcenode, or gcpserviceaccount. secretRef: name: git-credsSubstitua o seguinte:
ROOT_FORMAT: adicioneunstructuredpara usar um repositório não estruturado ou adicionehierarchypara usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido éhierarchy. Recomendamos que adicioneunstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.ROOT_REPOSITORY: adicione o URL do repositório Git a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, ohttps://github.com/GoogleCloudPlatform/anthos-config-management-samplesusa o protocolo HTTPS. Se não introduzir um protocolo, o URL é tratado como um URL HTTPS. Este campo é obrigatório.ROOT_REVISION: adicione a revisão de Git (etiqueta ou hash) para fazer o check-out. Este campo é opcional e o valor predefinido éHEAD.ROOT_BRANCH: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido émaster.ROOT_DIRECTORY: adicione o caminho no repositório Git ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) do repositório.ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:none: Não usar autenticaçãossh: Use um par de chaves SSHcookiefile: use umcookiefiletoken: usar um tokengcpserviceaccount: Use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories.gcenode: Use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso de leitura apenas ao Git para a sincronização de configuração.
Este campo é obrigatório.
ROOT_EMAIL: se adicionougcpserviceaccountcomo o seuROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo,acm@PROJECT_ID.iam.gserviceaccount.com.
Aplique as alterações:
kubectl apply -f root-sync.yaml
Tabela de comparação entre o ConfigManagement e o RootSync
A tabela seguinte oferece uma vista geral de como os campos no seu objeto ConfigManagement são mapeados para os campos num objeto RootSync.
| Campo ConfigManagement | Campo RootSync |
|---|---|
spec.git.gcpServiceAccountEmail |
spec.git.gcpServiceAccountEmail |
spec.git.syncRepo |
spec.git.repo |
spec.git.syncBranch |
spec.git.branch |
spec.git.policyDir |
spec.git.dir |
spec.git.syncWait |
spec.git.period |
spec.git.syncRev |
spec.git.revision |
spec.git.secretType |
spec.git.auth |
git-creds (este é um valor fixo nos objetos ConfigManagement) |
spec.git.secretRef.name |
spec.sourceFormat |
spec.sourceFormat |
spec.git.proxy.httpProxy ou spec.git.proxy.httpsProxy
|
spec.git.proxy |