Partilhar via


Transferir artefatos para outro registro

Este artigo mostra como transferir coleções de imagens ou outros artefatos do Registro de um Registro de contêiner do Azure para outro Registro. Os registros de origem e de destino podem estar nas mesmas assinaturas ou em assinaturas diferentes, locatários do Ative Directory, nuvens do Azure ou nuvens fisicamente desconectadas.

Para transferir artefatos, crie um pipeline de transferência que replica artefatos entre dois registros usando o armazenamento de blob:

  • Os artefatos de um registro de origem são exportados para um blob em uma conta de armazenamento de origem
  • O blob é copiado da conta de armazenamento de origem para uma conta de armazenamento de destino
  • O blob na conta de armazenamento de destino é importado como artefatos no registro de destino. Você pode configurar o pipeline de importação para disparar sempre que o blob de artefato for atualizado no armazenamento de destino.

Neste artigo, você cria os recursos de pré-requisito para criar e executar o pipeline de transferência. A CLI do Azure é usada para provisionar os recursos associados, como segredos de armazenamento. A CLI do Azure versão 2.2.0 ou posterior é recomendada. Se precisar de instalar ou atualizar a CLI, veja Instalar a CLI do Azure.

Esse recurso está disponível na camada de serviço de registro de contêiner Premium . Para obter informações sobre camadas e limites de serviço do Registro, consulte Camadas do Registro de Contêiner do Azure.

Importante

Esta funcionalidade está atualmente em pré-visualização. As pré-visualizações são disponibilizadas a si na condição de concordar com os termos suplementares de utilização. Alguns aspetos desta funcionalidade podem alterar-se após a disponibilidade geral (GA).

Considere o seu caso de uso

A transferência é ideal para copiar conteúdo entre dois registros de contêiner do Azure em nuvens fisicamente desconectadas, mediadas por contas de armazenamento em cada nuvem. Se, em vez disso, você quiser copiar imagens de registros de contêiner em nuvens conectadas, incluindo o Docker Hub e outros fornecedores de nuvem, a importação de imagens é recomendada.

Pré-requisitos

  • Registros de contêiner - Você precisa de um registro de origem existente com artefatos para transferir e um registro de destino. A transferência ACR destina-se ao movimento através de nuvens fisicamente desconectadas. Para testes, os registros de origem e de destino podem estar na mesma assinatura do Azure ou em uma assinatura diferente do Azure, locatário do Ative Directory ou nuvem.

    Se você precisar criar um registro, consulte Guia de início rápido: criar um registro de contêiner privado usando a CLI do Azure.

  • Contas de armazenamento - Crie contas de armazenamento de origem e de destino em uma assinatura e local de sua escolha. Para fins de teste, você pode usar a mesma assinatura ou assinaturas que seus registros de origem e destino. Para cenários entre nuvens, normalmente você cria uma conta de armazenamento separada em cada nuvem.

    Se necessário, crie as contas de armazenamento com a CLI do Azure ou outras ferramentas.

    Crie um contêiner de blob para transferência de artefatos em cada conta. Por exemplo, crie um contêiner chamado transfer.

  • Cofres de chaves - Os cofres de chaves são necessários para armazenar segredos de token SAS usados para acessar contas de armazenamento de origem e de destino. Crie os cofres de chave de origem e de destino na mesma assinatura ou assinaturas do Azure que seus registros de origem e destino. Para fins de demonstração, os modelos e comandos usados neste artigo também assumem que os cofres de chave de origem e de destino estão localizados nos mesmos grupos de recursos que os registros de origem e de destino, respectivamente. Esse uso de grupos de recursos comuns não é necessário, mas simplifica os modelos e comandos usados neste artigo.

    Se necessário, crie cofres de chaves com a CLI do Azure ou outras ferramentas.

  • Variáveis de ambiente - Por exemplo, comandos neste artigo, defina as seguintes variáveis de ambiente para os ambientes de origem e de destino. Todos os exemplos são formatados para o shell Bash.

    SOURCE_RG="<source-resource-group>"
    TARGET_RG="<target-resource-group>"
    SOURCE_KV="<source-key-vault>"
    TARGET_KV="<target-key-vault>"
    SOURCE_SA="<source-storage-account>"
    TARGET_SA="<target-storage-account>"
    

Descrição geral do cenário

Você cria os três recursos de pipeline a seguir para transferência de imagens entre registros. Todos são criados usando operações PUT. Esses recursos operam em seus registros e contas de armazenamento de origem e destino .

A autenticação de armazenamento usa tokens SAS, gerenciados como segredos em cofres de chaves. Os pipelines usam identidades gerenciadas para ler os segredos nos cofres.

  • ExportPipeline - Recurso de longa duração que contém informações de alto nível sobre o registro de origem e a conta de armazenamento. Essas informações incluem o URI do contêiner de blob de armazenamento de origem e o cofre de chaves que gerencia o token SAS de origem.
  • ImportPipeline - Recurso de longa duração que contém informações de alto nível sobre o registro de destino e a conta de armazenamento. Essas informações incluem o URI do contêiner de blob de armazenamento de destino e o cofre de chaves que gerencia o token SAS de destino. Um gatilho de importação é habilitado por padrão, de modo que o pipeline é executado automaticamente quando um blob de artefato pousa no contêiner de armazenamento de destino.
  • PipelineRun - Recurso usado para invocar um recurso ExportPipeline ou ImportPipeline.
    • Execute o ExportPipeline manualmente criando um recurso PipelineRun e especifique os artefatos a serem exportados.
    • Se um gatilho de importação estiver habilitado, o ImportPipeline será executado automaticamente. Ele também pode ser executado manualmente usando um PipelineRun.
    • Atualmente, um máximo de 50 artefatos podem ser transferidos com cada PipelineRun.

Aspetos importantes

  • O ExportPipeline e o ImportPipeline normalmente estarão em diferentes locatários do Ative Directory associados às nuvens de origem e destino. Esse cenário requer identidades gerenciadas separadas e cofres de chaves para os recursos de exportação e importação. Para fins de teste, esses recursos podem ser colocados na mesma nuvem, compartilhando identidades.
  • Por padrão, os modelos ExportPipeline e ImportPipeline permitem que uma identidade gerenciada atribuída pelo sistema acesse segredos do cofre de chaves. Os modelos ExportPipeline e ImportPipeline também oferecem suporte a uma identidade atribuída pelo usuário que você fornece.

Criar e armazenar chaves SAS

A transferência usa tokens de assinatura de acesso compartilhado (SAS) para acessar as contas de armazenamento nos ambientes de origem e de destino. Gere e armazene tokens conforme descrito nas seções a seguir.

Importante

Embora o ACR Transfer funcione com um token SAS gerado manualmente armazenado em um segredo do Keyvault, para cargas de trabalho de produção, recomendamos o uso dos segredos de definição SAS do Keyvault Managed Storage.

Gerar token SAS para exportação

Execute o comando az storage container generate-sas para gerar um token SAS para o contêiner na conta de armazenamento de origem, usado para exportação de artefatos.

Permissões de token recomendadas: Ler, Escrever, Listar, Adicionar.

No exemplo a seguir, a saída do comando é atribuída à variável de ambiente EXPORT_SAS, prefixada com o caractere '?' Atualize o valor para o --expiry seu ambiente:

EXPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $SOURCE_SA \
  --expiry 2021-01-01 \
  --permissions alrw \
  --https-only \
  --output tsv)

Armazenar token SAS para exportação

Armazene o token SAS em seu cofre de chaves do Azure de origem usando o conjunto de segredos az keyvault:

az keyvault secret set \
  --name acrexportsas \
  --value $EXPORT_SAS \
  --vault-name $SOURCE_KV

Gerar token SAS para importação

Execute o comando az storage container generate-sas para gerar um token SAS para o contêiner na conta de armazenamento de destino, usado para importação de artefatos.

Permissões de token recomendadas: Ler, Excluir, Listar

No exemplo a seguir, a saída do comando é atribuída à variável de ambiente IMPORT_SAS, prefixada com o caractere '?' . Atualize o valor para o --expiry seu ambiente:

IMPORT_SAS=?$(az storage container generate-sas \
  --name transfer \
  --account-name $TARGET_SA \
  --expiry 2021-01-01 \
  --permissions dlr \
  --https-only \
  --output tsv)

Armazenar token SAS para importação

Armazene o token SAS em seu cofre de chaves do Azure de destino usando o conjunto de segredos az keyvault:

az keyvault secret set \
  --name acrimportsas \
  --value $IMPORT_SAS \
  --vault-name $TARGET_KV

Próximos passos