Como definir repositórios de dados
Como parte da migração, o Migrate to Containers grava informações em diferentes repositórios de dados:
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.
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://
ouhttps://
. 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