Melhores práticas para o Registro de Contêiner do Azure

Quando você segue estas melhores práticas, ajuda a maximizar o desempenho e o uso econômico de seu registro privado no Azure para armazenar e implantar imagens de contêiner e outros artefatos.

Para saber mais sobre os conceitos de registro, confira Sobre registros, repositórios e imagens. Consulte também Recomendações para marcação e controle de versão de imagens de contêiner para obter estratégias para marcação e as imagens de versão no registro.

Implantação de fechamento de rede

Crie o registro de contêiner na mesma região do Azure em que você implantar contêineres. Colocar o registro em uma região de fechamento de rede para seus hosts de contêiner pode ajudar a reduzir a latência e o custo.

A implantação de fechamento de rede é um dos principais motivos para usar um registro de contêiner particular. As imagens do docker têm uma construção de camadas eficiente, que permite implantações incrementais. No entanto, os novos nós precisam efetuar o pull de todas as camadas necessárias para uma determinada imagem. Este docker pull inicial pode acumular até vários gigabytes. Ter um registro privado perto de sua implantação minimiza a latência de rede. Além disso, todas as nuvens públicas, incluindo do Azure, implementam taxas de saída de rede. Extrair imagens de um datacenter para outro adiciona taxas de saída de rede, além da latência.

Replicar geograficamente implantações em várias regiões

Use o recurso de replicação geográfica do Registro de Contêiner do Azure se estiver implantando contêineres em várias regiões. Se você estiver atendendo clientes globais de centros de dados locais ou se sua equipe de desenvolvimento estiver em locais diferentes, é possível simplificar o gerenciamento de registro e minimizar a latência por meio da replicação geográfica do registro. Também é possível configurar webhooks regionais para receber notificações sobre eventos em réplicas específicas, como quando as imagens são enviadas por push.

A replicação geográfica está disponível nos registros Premium. Para saber como usar a replicação geográfica, consulte o tutorial em três partes, Replicação geográfica no Registro de Contêiner do Azure.

Maximizar o desempenho de pull

Além de aproximar as imagens das implantações, as próprias características das imagens podem afetar o desempenho de pull.

  • Tamanho da imagem: minimize o tamanho das imagens removendo camadas desnecessárias ou reduzindo o tamanho das camadas. Um jeito de reduzir o tamanho da imagem é usar a abordagem de build de vários estágios do Docker para incluir somente os componentes de runtime necessários.

    Verifique também se a imagem pode incluir uma imagem base mais leve do SO. Se você usa um ambiente de implantação como as Instâncias de Contêiner do Azure, que armazenam em cache determinadas imagens base, analise se é possível trocar uma camada de imagem por uma das imagens em cache.

  • Número de camadas: equilibre o número de camadas usadas. Caso você tenha poucas, não se beneficiará da reutilização de camadas e do cache no host. Caso você tenha muitas, o ambiente de implantação passará mais tempo efetuando pull e descompactando. O ideal é ter de cinco a dez camadas.

Além disso, escolha uma camada de serviço do Registro de Contêiner do Azure que atenda às suas necessidades de desempenho. A camada Premium oferece a maior largura de banda e a taxa mais alta de operações simultâneas de gravação e leitura quando você tem implantações de alto volume.

Namespaces do repositório

Quando você usa namespaces de repositório, é possível permitir o compartilhamento de um registro em vários grupos dentro da organização. Os registros podem ser compartilhados entre equipes e implantações. O Registro de Contêiner do Azure oferece suporte a namespaces aninhados, habilitando o isolamento de grupo. No entanto, o registro gerencia todos os repositórios de maneira independente, e não como uma hierarquia.

Por exemplo, considere as seguintes marcas de imagem de contêiner. Imagens que são usadas em toda a empresa, como aspnetcore, são colocadas no namespace raiz, enquanto as imagens de contêiner que pertencem aos grupos de Produtos e Marketing usam cada um seus próprios namespaces.

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2017-fall/concertpromotions/campaign:218.42

Grupo de recursos dedicados

Como os registros de contêiner são recursos que são usados em vários hosts de contêiner, um registro deve residir seu próprio grupo de recursos.

Embora seja possível fazer experimentos com um tipo de host específico, como as Instâncias de Contêiner do Azure, você provavelmente desejará excluir a instância de contêiner quando terminar. No entanto, você também poderá manter a coleção de imagens que enviou por push para o Registro de Contêiner do Azure. Ao colocar o registro em seu próprio grupo de recursos, você minimiza o risco de excluir acidentalmente a coleção de imagens no registro quando exclui o grupo de recursos de instância do contêiner.

Autenticação e autorização

Ao se autenticar com um registro de contêiner do Azure, há dois cenários principais: autenticação individual e autenticação de serviço (ou "sem periférico"). A tabela a seguir fornece uma visão geral sobre esses cenários e o método de autenticação recomendado para cada.

Type Cenário de exemplo Método recomendado
Identidade individual Um desenvolvedor que efetua o pull de imagens de ou para seu computador de desenvolvimento. az acr login
Sem periférico/serviço identidade Pipelines de implantação e compilação em que o usuário não está diretamente envolvido. Entidade de serviço

Para ter informações mais detalhadas sobre esses e outros cenários de autenticação do Registro de Contêiner do Azure, confira Autenticar com um Registro de Contêiner do Azure.

O Registro de Contêiner do Azure é compatível com as práticas de segurança na sua organização para distribuir tarefas e privilégios a identidades diferentes. Use o controle de acesso baseado em função para atribuir as permissões adequadas a usuários diferentes, entidades de serviço ou outras identidades que executam operações de registro distintas. Por exemplo, atribua permissões de push a uma entidade de serviço usada em um pipeline de build e atribua permissões de pull a uma identidade diferente usada para implantação. Crie tokens para ter acesso refinado e com limite de tempo a repositórios específicos.

Gerenciar o tamanho do registro

As restrições de armazenamento de cada camada de serviço de registro de contêiner devem se alinhar com um cenário típico: Básico para começar, Standard para a maioria dos aplicativos de produção e Premium para o desempenho de hiperescala e replicação geográfica. Durante a vida útil do registro, você deve gerenciar o tamanho periodicamente excluindo conteúdo não utilizado.

Use o comando CLI do Azure az acr show-usage para exibir o consumo atual de armazenamento e outros recursos no registro:

az acr show-usage --resource-group myResourceGroup --name myregistry --output table

Saída de exemplo:

NAME                        LIMIT         CURRENT VALUE    UNIT
--------------------------  ------------  ---------------  ------
Size                        536870912000  215629144        Bytes
Webhooks                    500           1                Count
Geo-replications            -1            3                Count
IPRules                     100           1                Count
VNetRules                   100           0                Count
PrivateEndpointConnections  10            0                Count

Encontre também o uso de armazenamento atual na Visão geral do registro no portal do Microsoft Azure:

Informações de uso do registro no portal do Azure

Observação

Em um registro replicado geograficamente, o uso de armazenamento é mostrado na região inicial. Multiplique pelo número de replicações para obter o armazenamento de registro total consumido.

Excluir dados de imagem

O Registro de Contêiner do Azure dá suporte a vários métodos para excluir dados de imagem do registro de contêiner. É possível excluir imagens por marca, resumo de manifesto ou excluir um repositório inteiro.

Para obter detalhes sobre como excluir dados de imagem do registro, incluindo imagens não marcadas (às vezes chamadas de "pendentes" ou "órfãs"), consulte Excluir imagens de contêiner no Registro de Contêiner do Azure. Também é possível definir uma política de retenção em manifestos não marcados.

Próximas etapas

O Registro de Contêiner do Azure está disponível em diversas camadas (também chamadas de SKU) que contam com funcionalidades diferentes. Para obter detalhes sobre as camadas de serviço disponíveis, consulte Camadas de serviço do Registro de Contêiner do Azure.

Para ver recomendações de como aprimorar a postura de segurança dos registros de contêiner, confira Linha de base de segurança do Azure para o Registro de Contêiner do Azure.