Como definir repositórios de dados

Como parte da migração, o Migrate to Containers grava informações em diferentes repositórios de dados:

  1. Os arquivos de imagem do Docker que representam uma VM migrada do Linux são gravados em um registro do Docker.

    Esses arquivos de imagem do Docker representam os arquivos e diretórios da VM Linux migrada. Esse repositório não é necessário ao migrar cargas de trabalho do Windows.

  2. Os artefatos de migração que representam a carga de trabalho migrada são gravados em um segundo repositório.

    Os artefatos incluem os arquivos YAML de configuração que podem ser usados para implantar as cargas de trabalho migradas e outros arquivos. Os artefatos exatos dependem de você estar migrando cargas de trabalho do Linux ou do Windows.

Plataforma Registro de arquivos de imagem do Docker* Repositório de artefatos de migração
Clusters do GKE Enterprise no Google Cloud O padrão é Container Registry (GCR).

Como opção, especifique qualquer registro do Docker compatível com a autenticação básica.

O padrão é Cloud Storage.

Como opção, especifique S3 como o repositório de artefatos para migrações do Linux. S3 não é compatível com a migração de cargas de trabalho do Windows.

Google Distributed Cloud Virtual para clusters Bare Metal O padrão é Container Registry (GCR).

Como opção, especifique qualquer registro do Docker compatível com a autenticação básica.

O padrão é Cloud Storage.

Opcionalmente, especifique S3 como o repositório de artefatos.

* O registro de arquivos de imagem do Docker não é necessário para migrações do Windows. Ele só é necessário para migrar VMs do Linux.

Como visualizar o status do repositório

Depois de instalar o Migrate to Containers, valide a instalação do Migrate to Containers executando o comando migctl doctor. Como parte dessa validação, o comando migctl doctor verifica o status dos repositórios:

migctl doctor

No exemplo de saída a seguir do comando migctl doctor, a marca de seleção indica que o Migrate to Containers foi implantado com êxito, mas você ainda não configurou os repositórios de dados necessários:

  [✓] Deployment
  [!] Docker Registry
  [!] Artifacts Repo
  [!] Source Status

Se houver problemas com os repositórios, migctl doctor os sinalizará quando você executar o comando. Quando você executa migctl doctor, o migctl consulta todos os repositórios de artefatos e avisa cada um que não seja íntegro.

No exemplo de saída do comando migctl doctor a seguir, o ponto de exclamação indica que o Migrate to Containers encontrou erros nos repositórios de artefatos. De acordo com o erro, o repositório não foi inicializado e a configuração precisará ser corrigida antes da execução do comando novamente. Para outros repositórios além do padrão, isso não é necessariamente um obstáculo para a migração.

Se seu repositório padrão não estiver íntegro, um X indicará que Migrate to Containers encontrou um erro e a migração pode falhar.

[✓] Deployment
[✓] Docker Registry
[!] Artifacts Repository
    [✓] example-healthy-repository [default]
    [!] example-failed-repository
        Error: Failed to initialize repository client: Retryable M4A_RepositoryFactoryMissingSecret: artifacts repository secret is configured, but not found at the designated location '/example-failed-repository'
[!] Source Status
[✓] Default storage class

Depois de configurar os repositórios, execute o comando migctl doctor novamente para garantir que os repositórios estejam configurados corretamente:

  [✓] Deployment
  [✓] Docker registry
  [✓] Artifacts repo
  [!] Source Status

Suporte do Console do Google Cloud

O Console do Google Cloud exibe os URLs para itens nos repositórios com base na implementação do repositório. Por exemplo, se o repositório for implementado usando S3, o console do Google Cloud mostrará URLs para um bucket em S3.

Opções de localização do repositório

O local dos repositórios de dados pode afetar o desempenho e o custo da migração.

Por exemplo, os arquivos de imagem do Docker que representam uma VM migrada podem ser muito grandes. Se você tiver um cluster de processamento no local, mas gravar os arquivos de imagem do Docker no GCR no Google Cloud, incorrerá na latência de desempenho do upload dos dados e no custo de armazenar esses dados.

Para um cluster de processamento no local, pode ser mais eficiente definir um registro do Docker local para o cluster. Com o registro local, você minimiza a latência de upload e minimiza os custos de armazenamento.

Para um cluster do GKE implantado no Google Cloud, o uso de repositórios GCR padrão fornece o nível mais alto de desempenho, mas você será cobrado por esse armazenamento. No entanto, não é obrigatório usar o GCR com um cluster baseado na nuvem. Também é possível optar por usar seu próprio registro do Docker.

Requisitos de nomenclatura do repositório

Você atribui um nome a um repositório ao adicioná-lo ao Migrate to Containers. O nome precisa cumprir os seguintes requisitos:

  • conter no máximo 63 caracteres;
  • conter apenas caracteres alfanuméricos minúsculos ou "-" (hífen);
  • começar com um caractere alfanumérico;
  • terminar com um caractere alfanumérico.

Autenticação do repositório

Todos os repositórios usados pelo Migrate to Containers exigem autenticação. O mecanismo de autenticação depende do tipo de repositório, conforme mostrado na tabela a seguir:

Repositório implementação; Autenticação
Registro de arquivos de imagem do Docker GCR Chave JSON de uma conta de serviço do Google Cloud.

Consulte Como criar uma conta de serviço para acessar o Container Registry e o Cloud Storage para saber mais.

Registro do Docker Nome de usuário e senha para autenticação básica.
Repositório de artefatos de migração Cloud Storage Chave JSON de uma conta de serviço do Google Cloud.

Consulte Como criar uma conta de serviço para acessar o Container Registry e o Cloud Storage para saber mais.

S3 Acessar a chave secreta, o arquivo de credenciais ou o secret. Consulte Visão geral do gerenciamento de acesso para saber mais.

Compatível com TLS

Alguns repositórios podem ser acessados usando TLS/SSL por HTTPS. Se a conexão HTTPS com o repositório usar um certificado autoassinado, será necessário transmitir um arquivo PEM contendo um dos itens a seguir ao configurar o repositório:

  • A chave pública do certificado autoassinado
  • Uma concatenação do certificado raiz e de todos os certificados intermediários até o certificado real do servidor

Como configurar um registro do Docker

Use o comando migctl para configurar um registro do Docker. O comando migctl permite que você execute as seguintes ações em uma configuração do registro:

  • Criar
  • Atualizar
  • Excluir
  • List
  • Definir padrão

É possível definir várias configurações. A migração para contêineres usa a configuração definida atualmente como padrão. Use o comando migctl docker-registry list para visualizar as configurações atuais, incluindo o padrão. Use o comando migctl docker-registry set-default para definir a configuração padrão.

O exemplo a seguir mostra como configurar um registro do Docker:

  • GCR

    migctl docker-registry create gcr registry-name --project project-id --json-key=m4a-install.json

    onde:

    • registry-name é o nome definido pelo usuário da configuração do registro do Docker.

    • project-id é o ID do projeto do Google.

    • m4a-install.json é o nome do arquivo de chave JSON para a conta de serviço para acessar o Container Registry e o Cloud Storage, conforme descrito em Como configurar uma conta de serviço.

  • Registro do Docker

    migctl docker-registry create basic-auth registry-name --registry-path url --username username --ca-pem-file ca-pem-filename

    onde:

    • registry-name é o nome definido pelo usuário da configuração do registro do Docker.

    • url especifica o URL do registro sem o prefixo http:// ou https://. Por exemplo, localhost:8080/myregistry.

    • username para as credenciais de autenticação básica do registro. Será necessário inserir a senha.

    • Se o registro usar um certificado autoassinado, ca-pem-filename especificará um arquivo PEM contendo a chave pública ou a cadeia de CA completa, indicando uma concatenação dos certificados da CA intermediária até o certificado raiz. Exemplo:

      cat int1.pem int2.pem ... root.pem

Para atualizar posteriormente a configuração do registro, execute o comando migctl docker-registry update com os mesmos argumentos usados para criá-lo:

migctl docker-registry update gcr registry-name same-flags-as-create

Quando você configura um registro do Docker, ele se torna o registro padrão. No entanto, é possível ter vários registros definidos. Para ver a lista atual de registros:

migctl docker-registry list

Para definir a configuração de registro padrão, ou seja, a que está sendo usada atualmente para migrações, use o seguinte comando:

migctl docker-registry set-default registry-name

Para excluir uma configuração do registro:

migctl docker-registry delete registry-name

Como configurar um repositório de artefatos

Use o comando migctl para configurar um repositório de artefatos. O comando migctl permite que você execute as seguintes ações em uma configuração do repositório:

  • Criar
  • Atualizar
  • Excluir
  • List
  • Definir padrão

Os comandos migctl create, update e list têm verificações de integridade contínuas para repositórios de artefatos. Quando executadas, elas fornecem mensagens que indicam se o repositório está pronto ou não e uma mensagem de erro associada. Para pular a verificação de integridade em create ou update, execute estes comandos com a sinalização --async.

É possível definir várias configurações. A migração para contêineres usa a configuração definida atualmente como padrão. Use o comando migctl artifacts-repo list para visualizar as configurações atuais, incluindo o padrão. Use o comando migctl artifacts-repo set-default para definir a configuração padrão.

O exemplo a seguir mostra como configurar um repositório de artefatos:

  • Cloud Storage

    migctl artifacts-repo create gcs repository-name --bucket-name bucket-name --json-key=m4a-install.json

    onde:

    • repository-name é o nome definido pelo usuário para a configuração do repositório de artefatos.

    • bucket-name especifica um bucket atual no repositório do Cloud Storage. Se você não tiver um bucket, crie um seguindo as instruções em Criar buckets.

      Observação: quando você instala o Migrate to Containers em clusters do Google Cloud, o instalador do Migrate para contêineres cria automaticamente um bucket padrão chamado:

      GCP_PROJECT-migration-artifacts

      Em que GCP_PROJECT é o ID do projeto do Google.

    • project-id é o ID do projeto do Google.

    • m4a-install.json é o nome do arquivo de chave JSON para a conta de serviço para acessar o Container Registry e o Cloud Storage, conforme descrito em Como configurar uma conta de serviço.

    migctl artifacts-repo create s3 repository-name --bucket-name bucket-name --region aws-region --access-key-id=key-id

    Você receberá uma solicitação para digitar a chave secreta para key-id.

    Se preferir, especifique o caminho para um arquivo de credenciais:

    migctl artifacts-repo create s3 repository-name --bucket-name bucket-name --region aws-region --credentials-file-path file-path

    onde:

    • repository-name é o nome definido pelo usuário da configuração do repositório de artefatos.

    • bucket-name especifica um bucket atual no repositório S3. Se você não tiver um bucket atual, crie um seguindo as instruções em Como trabalhar com buckets do Amazon S3.

    • aws-region especifica a região da AWS para o repositório. O cluster de processamento e o repositório podem estar em regiões separadas, desde que o cluster tenha permissões para acessar o repositório.

    • key-id especifica a chave de acesso. Consulte Visão geral do gerenciamento de acesso para saber mais.

    • file-path especifica o caminho para um arquivo CSV, salvo no console da AWS, contendo as credenciais.

Para atualizar posteriormente a configuração do repositório, execute o comando migctl docker-registry update com os mesmos argumentos usados para criá-lo:

migctl artifacts-repo update gcr repository-name same-flags-as-create

Quando você configura um registro de repositório, ele se torna o repositório padrão. No entanto, é possível ter vários repositórios definidos. Para ver a lista atual de repositórios:

migctl artifacts-repo list

Para definir a configuração do repositório padrão, ou seja, a configuração atual usada nas migrações, use o seguinte comando:

migctl artifacts-repo set-default repository-name

Para excluir uma configuração de repositório:

migctl artifacts-repo delete repository-name

A seguir