Adicionar um registro de contêiner ao Hub Azure StackAdd a container registry to Azure Stack Hub

Você pode adicionar o registro de contêiner ao seu Azure Stack Marketplace do hub para que os usuários possam implantar e manter seu próprio registro de contêiner.You can add the container registry to your Azure Stack Hub Marketplace so that your users can deploy and maintain their own container registry. Este modelo de solução instala e configura o registro de contêiner do Docker de software livre em uma assinatura de usuário em execução na imagem AKS base Ubuntu 16, 4-LTS.This solution template installs and configures the open-source Docker Container Registry in a user subscription running on the AKS Base Ubuntu 16.04-LTS Image. O modelo dá suporte a implantações conectadas e desconectadas (ar-gapped) e dá suporte a Azure Active Directory (Azure AD) e Active Directory serviços federados (AD FS) implantados Azure Stack hubs.The template supports both connected and disconnected (air-gapped) deployments and supports both Azure Active Directory (Azure AD) and Active Directory Federated Services (AD FS) deployed Azure Stack Hubs.

Obter o item do MarketplaceGet the Marketplace item

Você pode encontrar o item de Marketplace do modelo de registro de contêiner no seguinte repositório github: https://github.com/msazurestackworkloads/azurestack-gallery/releases/download/registry-v1.0.2/Microsoft.AzureStackContainerRegistry.1.0.2.azpkg .You can find the Container Registry Template Marketplace item in the following GitHub repository: https://github.com/msazurestackworkloads/azurestack-gallery/releases/download/registry-v1.0.2/Microsoft.AzureStackContainerRegistry.1.0.2.azpkg. O item do Marketplace está disponível no portal em selecionar assinaturas.The Marketplace item is available from the portal in select subscriptions.

Você também pode adicionar o item (carga lateral) ao seu Marketplace usando o Microsoft. AzureStackDockerContainerRegistry. 1.0.2. azpkg.You can also add the item (side load) to your Marketplace using the Microsoft.AzureStackDockerContainerRegistry.1.0.2.azpkg. Os scripts neste artigo podem ser acessados baixando o repositório Git como um pacote (zip) do https://github.com/msazurestackworkloads/azurestack-gallery/archive/master.zip e extraindo os arquivos.The scripts in this article can be accessed by downloading the git repository as a (zip) package from https://github.com/msazurestackworkloads/azurestack-gallery/archive/master.zip, and extracting the files. Você pode encontrar o script na azurestack-gallery-master\registry\scripts pasta.You can find the script in the azurestack-gallery-master\registry\scripts folder.

Pré-requisitosPrerequisites

Você precisará ter os seguintes itens antes de adicionar o item do Marketplace do registro de contêiner no Hub Azure Stack.You will need to have the following items before adding the Container Registry Marketplace item on Azure Stack Hub.

ItemItem TipoType DetalhesDetails
Módulos do PowerShell do hub de Azure Stack (AZS. Gallery. admin)Azure Stack Hub PowerShell modules (Azs.Gallery.Admin) Módulos do PowerShellPowerShell Modules Necessário apenas se o lado de carregar o item da Galeria de modelos do registro de contêiner, os módulos do PowerShell Azure Stack Hub serão usados para adicionar e remover itens da galeria.Only required if side loading the container registry template gallery item, the Azure Stack Hub PowerShell Modules are used to add and remove gallery items.
Instalar Azure Stack módulos do PowerShellInstall Azure Stack PowerShell modules
Modelo de registro de contêinerContainer Registry Template Item do MarketplaceMarketplace item Para implantar o registro de contêiner como um usuário de Hub Azure Stack, o item de Marketplace do modelo de registro de contêiner deve estar disponível em sua assinatura ou adicionado manualmente (lado carregado), em seu Azure Stack Marketplace do Hub.In order to deploy the container registry as an Azure Stack Hub user, the Container registry template Marketplace item must be available in your subscription, or manually added (side loaded), into your Azure Stack Hub Marketplace. Se o carregamento lateral, siga as instruções para carregar o pacote no readme.md no repositório do GitHub.If side loading, follow the instructions to side load the package in the readme.md in the GitHub repository.
AKS base Ubuntu 16, 4-LTS Image, versão de lançamento mínima de setembro de 2019AKS Base Ubuntu 16.04-LTS Image, September 2019 minimum release version Item do MarketplaceMarketplace item Para que os usuários do hub de Azure Stack implantem o registro de contêiner, você deve disponibilizar a imagem base AKS no Marketplace.For your Azure Stack Hub users to deploy the container registry, you must make the AKS Base Image available in the Marketplace. O modelo de registro de contêiner usa a imagem ao instalar uma VM do Ubuntu a partir da assinatura que hospeda os binários do registro de contêiner do Docker.The Container registry template uses the image when installing an Ubuntu VM from the subscription that hosts the Docker container registry binaries.
Extensão de script personalizado do Linux 2,0Linux Custom Script Extension 2.0 Item do MarketplaceMarketplace item Para que os usuários do hub de Azure Stack implantem o registro de contêiner, você deve disponibilizar a extensão de script personalizado do Linux no Marketplace.For your Azure Stack Hub users to deploy the container registry, you must make the Linux Custom Script Extension available in the Marketplace. A implantação do modelo de registro de contêiner usa a extensão para configurar o registro.The Container registry template deployment uses the extension to configure the registry.
Certificado SSLSSL Certificate CertificadoCertificate Os usuários que implantam o modelo de registro de contêiner precisam fornecer um certificado PFX usado ao configurar a criptografia SSL para o serviço de registro.Users deploying the Container registry template need to provide a PFX certificate used when configuring SSL encryption for the registry service. Se você estiver usando o script, será necessário executar a sessão do PowerShell em um prompt com privilégios elevados.If you are using the script, you will need to run the PowerShell session from an elevated prompt. Isso não deve ser executado em DVM ou HLH.This should not be run on the DVM or HLH.
Para obter diretrizes gerais sobre os requisitos de certificado PKI para Azure Stack Hub usando certificados públicos ou privados/corporativos, consulte os requisitos de certificado PKI (infraestrutura de chave pública) de Azure Stack HubFor general guidance on PKI certificate requirements for Azure Stack Hub using public or private/enterprise certificates view this documentation, see Azure Stack Hub public key infrastructure (PKI) certificate requirements
O FQDN do certificado deve seguir esse padrão <vmname>.<location>.cloudapp.<fqdn> , a menos que você use uma entrada de domínio/DNS personalizada para o ponto de extremidade.The FQDN for the certificate should follow this pattern <vmname>.<location>.cloudapp.<fqdn> unless using a custom domain/dns entry for the endpoint. O nome deve começar com uma letra e conter pelo menos duas letras, usar apenas letras minúsculas e pelo menos três caracteres de comprimento.The name should start with a letter and contain at least two letters, only use lowercase letters, and at least three characters long.
SPN (princípio de serviço)Service Principle (SPN) Registro do AplicativoApp Registration Para implantar e configurar o registro de contêiner, um registro de aplicativo, também conhecido como SPN (entidade de serviço), deve ser criado.To deploy and configure the container registry an Application Registration, also referred to as a Service Principal (SPN), must be created. Esse SPN é usado durante a configuração da VM e do registro para acessar Microsoft Azure Key Vault e os recursos da conta de armazenamento criados antes da implantação do item do Marketplace.This SPN is used during configuration of the VM and registry to access Microsoft Azure Key Vault and Storage Account resources created prior to deploying the Marketplace item.
O SPN deve ser criado no Azure AD dentro do locatário no qual você está fazendo logon no portal do usuário do hub de Azure Stack.The SPN should be created in Azure AD within the tenant you are logging into in the user portal of Azure Stack Hub. Se estiver usando AD FS, ele será criado no diretório local.If using AD FS, it will be created within the local directory.
Para obter detalhes sobre como criar um SPN para os métodos de autenticação do Azure AD e AD FS, examine as diretrizes a seguir.For details on how to create an SPN for both Azure AD and AD FS authentication methods please review the following guidance.
Importante: você precisará salvar a ID do aplicativo SPN e o segredo para implantar todas as atualizações.Important: You will need to save the SPN App ID and Secret for deploying any updates.
Nome de usuário e senha do registroRegistry username and password CredenciaisCredentials O registro de contêiner do Docker de código aberto é implantado e configurado com a autenticação básica habilitada.The open-source docker container registry is deployed and configured with basic authentication enabled. Para acessar o registro usando comandos do Docker para enviar e extrair imagens, é necessário um nome de usuário e senha.To access the registry using docker commands to push and pull images, a username and password is required. O nome de usuário e a senha são armazenados com segurança em um repositório de Key Vault.The username and password are securely stored in a Key Vault store.
Importante: você precisará salvar o nome de usuário e a senha do registro para entrar no registro e enviar/extrair imagens.Important: You will need to save the Registry Username and Password to sign in to the registry and push/pull images.
Chave pública/privada SSHSSH Public / Private Key CredenciaisCredentials Para solucionar problemas com a implantação ou problemas de tempo de execução com a VM, uma chave pública SSH precisa ser fornecida para a implantação e a chave privada correspondente acessível.To troubleshoot issues with the deployment or runtime issues with the VM, an SSH public key needs to be provided for the deployment and the corresponding private key accessible. É recomendável usar o formato OpenSSH, ssh-keygen, para gerar o par de chaves privada/pública, já que os scripts de diagnóstico para coletar logs exigem esse formato.It is recommended to use openssh format, ssh-keygen, to generate the private/public key pair as the diagnostic scripts to collect logs require this format.
Importante: você precisará ter acesso às chaves pública e privada para poder acessar a VM implantada para solução de problemas.Important: You will need to have access to the public and private keys in order to access the deployed VM for troubleshooting.
Acesso a portais de usuário e de administrador e pontos de extremidade de gerenciamentoAccess to admin and user portals and management endpoints ConectividadeConnectivity Este guia pressupõe que você está implantando e Configurando o registro de um sistema com conectividade com o sistema de Hub de Azure Stack.This guide assumes you are deploying and configuring the registry from a system with connectivity to the Azure Stack Hub system.

O script Pre-reqs cria as outras entradas necessárias para implantar o item do Marketplace.The script Pre-reqs creates the other inputs required to deploy the Marketplace item.

Etapas de instalaçãoInstallation steps

A instalação do modelo de registro de contêiner requer que vários recursos sejam criados antes da implantação.Installation of the Container registry template requires several resources to be created before deployment.

  1. Conecte-se ao Azure Stack Hub como um usuário usando o PowerShell e selecione uma assinatura usando o cmdlet Select-AzureRmSubscription –Subscription <subscription guid> .Connect to Azure Stack Hub as a user using PowerShell and select a subscription using the cmdlet Select-AzureRmSubscription –Subscription <subscription guid>. Para obter mais informações sobre como se conectar como um usuário para Azure Stack PowerShell do Hub, consulte conectar-se ao Azure Stack com o PowerShell como um usuário.For more information on connecting as a user to Azure Stack Hub PowerShell, see Connect to Azure Stack with PowerShell as a user.

  2. Execute Import-Modules .\\pre-reqs.ps1 para importar os módulos dentro do pre-reqs.ps1 script.Run Import-Modules .\\pre-reqs.ps1 to import the modules within the pre-reqs.ps1 script. O script criará um grupo de recursos, uma conta de armazenamento, um contêiner de BLOB, um Key Vault Store, atribuirá permissões de acesso ao SPN e copiará os certificados e o nome de usuário e a senha do registro para Key Vault repositório.The script will create a resource group, storage account, blob container, Key Vault store, assign access permissions to the SPN, and copy certificates and username and password for the registry to Key Vault store.

  3. Execute o seguinte cmdlet em um prompt com privilégios elevados usando os valores para o seu ambiente para os parâmetros:Run the following cmdlet from an elevated prompt using the values for your environment for the parameters:

         Set-ContainerRegistryPrerequisites -Location Shanghai `
         -ServicePrincipalId <spn app id> `
         -ResourceGroupName newregreq1 `
         -StorageAccountName newregsa1 `
         -StorageAccountBlobContainer newregct1 `
         -KeyVaultName newregkv1 `
         -CertificateSecretName containersecret2 `
         -CertificateFilePath C:\crinstall\shanghairegcert.pfx `
         -CertificatePassword <cert password> `
         -RegistryUserName admin `
         -RegistryUserPassword <password> 
    
    ParâmetroParameter DetalhesDetails
    $Location$Location Isso às vezes é chamado de nome de região.This is sometimes referred to as the region name.
    $ResourceGroupName$ResourceGroupName Especifique o nome do grupo de recursos que você deseja que a conta de armazenamento e o repositório de Key Vault sejam criados.Specify the name of the resource group you want the storage Account and Key Vault store to be created. Você especificará um grupo de recursos diferente ao implantar o item do Marketplace.You will specify a different resource group when deploying the Marketplace item.
    $StorageAccountName$StorageAccountName Especifique o nome da conta de armazenamento a ser criada para o registro de contêiner a ser usado ao armazenar imagens enviadas por push.Specify the name of the storage account to create for the container registry to use when storing images that have been pushed.
    $StorageAccountBlobContainer$StorageAccountBlobContainer Especifique o nome do contêiner de blob a ser criado, que é usado para o armazenamento de imagens.Specify the name of the blob container to create which is used for image storage.
    $KeyVaultName$KeyVaultName Especifique o nome do repositório de Key Vault a ser criado para armazenar o valor do certificado e do nome de usuário e senha.Specify the name of the Key Vault store to create for storing the certificate and username and password value.
    $CertificateSecretName$CertificateSecretName Forneça o nome do segredo criado em Key Vault para armazenar o certificado PFX.Provide the name of the secret created in Key Vault to store the PFX certificate.
    $CertificateFilePath$CertificateFilePath Forneça o caminho para o certificado PFX.Provide the path to the PFX certificate.
    $CertificatePassword$CertificatePassword Forneça a senha para o certificado PFX.Provide the password for the PFX certificate.
    $ServicePrincipalId$ServicePrincipalId Forneça a AppID do SPN.Provide the AppID of the SPN.
    $RegistryUserName$RegistryUserName Forneça o nome de usuário para acessar o serviço de registro usando a autorização básica.Provide the username for accessing the registry service using basic authorization.
    $RegistryUserPassword$RegistryUserPassword Forneça a senha para o usuário do registro.Provide the password for the registry user.
  4. Quando o script for concluído, observe que o final do script inclui parâmetros a serem usados na implantação do modelo.Once the script completes, note the end of the script includes parameters to be used in the template deployment. Ao copiar e colar esses valores, pode haver um espaço introduzido se o valor encapsulado.When copying and pasting these values, there may be a space introduced if the value wraps.

    ----------------------------------------------------------------
    PFX KeyVaultResourceId       : /subscriptions/<subcription id>/resourceGroups/newr
    egreg1/providers/Microsoft.KeyVault/vaults/newregkv1
    PFX KeyVaultSecretUrl        : https://newregkv1.vault.shanghai.azurestack.corp.microsoft.com:443/secr
    ets/containersecret1/37cc2f7ea1c44ad7b930e2c237a14949
    PFX Certificate Thumbprint   : 64BD5F3BC41DCBC6495998900ED322D8110DE25E
    ----------------------------------------------------------------
    StorageAccountResourceId     : /subscriptions/<subcription id>/resourcegroups/newr
    egreg1/providers/Microsoft.Storage/storageAccounts/newregsa1
    Blob Container               : newregct1
    ----------------------------------------------------------------
    
    Skus : aks-ubuntu-1604-201909
    
    
    Skus : aks-ubuntu-1604-201910
    
    ---------------------------------------------------------------- 
    
    
  5. Abra o portal do usuário do hub de Azure Stack.Open the Azure Stack Hub user portal.

  6. Selecione criar > Compute > modelo de registro de contêiner de computação.Select Create > Compute > Container Registry Template.

    Modelo de registro de contêiner

  7. Selecione a assinatura, o grupo de recursos e o local para implantar o modelo de registro de contêiner.Select the subscription, resource group, and location to deploy the container registry template.

    Selecionar uma assinatura

  8. Conclua os detalhes de configuração da máquina virtual.Complete the virtual machine configuration details. O SKU da imagem usa como padrão AKs-Ubuntu-1604-201909; no entanto, a saída da Set-ContainerRegistryPrerequisites função inclui uma lista de SKUs disponíveis a serem usados para implantação.The image SKU defaults to aks-ubuntu-1604-201909; however, the output of the Set-ContainerRegistryPrerequisites function includes a list of available SKUs to use for deployment. Se mais de um SKU existir, escolha a SKU mais recente para implantação.If more than one SKU exists choose the most recent SKU for deployment.

    Detalhes da configuração da VM

    ParâmetroParameter DetalhesDetails
    Nome de UsuárioUsername Forneça o nome de usuário para fazer logon na VM.Provide the username for logging into the VM.
    Chave pública SSHSSH Public Key Forneça a chave pública SSH usada para autenticar com a VM usando o protocolo SSH.Provide the SSH public key used to authenticate with the VM using SSH protocol.
    TamanhoSize Selecione o tamanho da VM a ser implantada.Select the size of the VM to deploy.
    Endereço IP públicoPublic IP Address Especifique o nome e o tipo de endereço IP (dinâmico ou estático) para essa VM.Specify the name and type of IP address (Dynamic or Static) for this VM. O nome de domínio é inválido.The domain name is invalid. Ele pode conter apenas letras minúsculas, números e hifens.It can contain only lowercase letters, numbers and hyphens. O primeiro caractere deve ser uma letra.The first character must be a letter. O último caractere deve ser uma letra ou um número.The last character must be a letter or number. O valor deve ter entre três e 63 caracteres de comprimento.The value must be between three and 63 characters long.
    Rótulo do nome de domínioDomain name label Especifique o prefixo DNS para o registro.Specify the DNS prefix for your registry. O FQDN inteiro deve corresponder ao valor CN para o certificado PFX criado para o registro.The entire FQDN should match the CN value for the PFX certificate created for the registry.
    RéplicasReplicas Especifique o número de réplicas de contêiner a serem iniciadas.Specify the number of container replicas to start.
    SKU de imagemImage SKU Especifique a SKU da imagem a ser usada para a implantação.Specify the Image SKU to be used for the deployment. Os SKUs disponíveis para a imagem base AKS são listados pelo Set-ContainerRegistryPrerequisites script.The available SKUs for the AKS Base Image are listed by the Set-ContainerRegistryPrerequisites script.
    ID do cliente SPNSPN Client ID Especifique a ID do aplicativo SPN.Specify the SPN App ID.
    Senha do SPN/Confirmar senhaSPN Password / Confirm Password Especifique o segredo da ID do aplicativo SPN.Specify the SPN App ID secret.
  9. Conclua o armazenamento e a configuração de Key Vault.Complete the Storage and Key Vault configuration.

    Configuração de armazenamento e Key Vault

    ParâmetroParameter DetalhesDetails
    ID de recurso da conta de armazenamento estendida existenteExisting extended storage account resource ID Especifique a ID de recurso da conta de armazenamento como retornada pelo pre-reqs script.Specify the storage account resource ID as returned by the pre-reqs script.
    Contêiner de blob de back-end existenteExisting backend blob container Especifique o nome do contêiner de BLOB, listado na saída de script requisitos.Specify the blob container name, listed in the pre-reqs script output.
    ID de recurso de Key Vault de certificado PFXPFX Certificate Key Vault Resource ID Especifique o Key Vault ID de recurso conforme retornado pelo pre-reqs script.Specify the Key Vault resource ID as returned by the pre-reqs script.
    URL de segredo de Key Vault de certificado PFXPFX Certificate Key Vault Secret URL Especifique a URL do certificado, conforme retornado pelo script requisitos.Specify the certificate URL as returned by the pre-reqs script.
    Impressão digital do certificado PFXPFX Certificate Thumbprint Especifique a impressão digital do certificado, conforme retornado pelo script requisitos.Specify the certificate thumbprint as returned by the pre-reqs script.
  10. Depois que todos os valores forem fornecidos e a implantação do modelo de solução começar, levará 10-15 minutos para a VM implantar e configurar o serviço de registro.Once all values are provided and the deployment of the solution template begins it will take 10-15 minutes for the VM to deploy and configure the registry service.

    Implantação de VM

  11. Para testar o registro, abra uma instância da CLI do Docker de um computador/VM com acesso à URL do registro.To test out the registry open a docker CLI instance from a machine / VM with access to the registry URL.

    Observação

    Se você usou um certificado autoassinado ou um certificado que não é conhecido pela VM que está usando para acessar o registro, será necessário instalar esse certificado na VM e reiniciar o Docker.If you used a self-signed certificate or certificate not known to the VM you are using to access the registry you will need to install that certificate on the VM and restart Docker.

Enviar e extrair imagens do registro de contêinerPushing and pulling images from container registry

  1. Entre usando docker login –u \<username> -p \<password> .Sign in using docker login –u \<username> -p \<password>.
  2. Efetuar pull e imagem de um registro conhecido.Pull and image from a known registry.
  3. Marque a imagem para direcionar o registro de contêiner do Docker recentemente implantado.Tag the image to target the newly deployed docker container registry.
  4. Envie a imagem por push para o novo registro de destino.Push the image to the new target registry.

Por exemplo:For example:

PS C:\> docker pull mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
1.0: Pulling from azureiotedge-simulated-temperature-sensor
5d20c808ce19: Already exists
656de8e592c3: Already exists
1e1868d1f676: Already exists
f3fb1b0d620f: Pulling fs layer
26224c4fc11a: Pulling fs layer
c459a69d65b2: Pulling fs layer
c459a69d65b2: Verifying Checksum
c459a69d65b2: Download complete
f3fb1b0d620f: Download complete
f3fb1b0d620f: Pull complete
26224c4fc11a: Verifying Checksum
26224c4fc11a: Pull complete
c459a69d65b2: Pull complete
Digest: sha256:dd64ff0918459184574e840ee97aa9f1bacd40aa37c972984ea10f0ecd719d5f
Status: Downloaded newer image for mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0

PS C:\> docker tag mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0    myreg.orlando.cloudapp.azurestack.corp.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0

PS C:\> docker login -u admin -p admin myreg.orlando.cloudapp.azurestack.corp.microsoft.com
docker : WARNING! Using --password via the CLI is insecure. Use --password-stdin.
At line:1 char:1
+ docker login -u admin -p admin myreg.orlando.cloudapp.azurestack.corp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (WARNING! Using ...password-stdin.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
Login Succeeded

PS C:\> docker push myreg.orlando.cloudapp.azurestack.corp.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
The push refers to repository [myreg.orlando.cloudapp.azurestack.corp.microsoft.com/azureiotedge-simulated-temperature-sensor]
d377c212e567: Preparing
0481685b758f: Preparing
15474c03a0b6: Preparing
8cdec5be5964: Preparing
79116d3fb0bf: Preparing
3fc64803ca2d: Preparing
3fc64803ca2d: Waiting
79116d3fb0bf: Mounted from azureiotedge-agent
8cdec5be5964: Mounted from azureiotedge-agent
15474c03a0b6: Pushed
d377c212e567: Pushed
3fc64803ca2d: Mounted from azureiotedge-agent
0481685b758f: Pushed
1.0: digest: sha256:f5fbc4a5c6806e12cafe1c363fea2b6cbd98a211b8153c5b19aca1386bfa6ecb size: 1576 

Problemas conhecidosKnown issues

A versão do serviço de registro de contêiner do Docker implantada por este modelo é 2,7.The version of the Docker Container Registry service deployed by this template is 2.7. Essa versão tem um problema conhecido que impede o envio e a extração de imagens de contêiner do Windows.This version has a known issue that prevents pushing and pulling Windows Container images. O problema é acompanhado com o seguinte item do GitHub https://github.com/docker/distribution-library-image/issues/89 .The issue is tracked with the following GitHub item https://github.com/docker/distribution-library-image/issues/89.

Próximas etapasNext steps

Visão geral do Azure Stack MarketplaceAzure Stack Marketplace overview