Adicione um registo de contentores ao Azure Stack HubAdd a container registry to Azure Stack Hub

Pode adicionar o registo de contentores ao seu Azure Stack Hub Marketplace para que os seus utilizadores possam implantar e manter o seu próprio registo de contentores.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 registo de contentores Docker de código aberto numa subscrição de utilizador em execução na imagem AKS Base Ubuntu 16.04-LTS Image.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 suporta as implementações conectadas e desligadas (com lacunas de ar) e suporta tanto o Azure Ative Directory (Azure AD) como o Ative Directory Federated Services (AD FS) implantados em 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.

Obtenha o item MarketplaceGet the Marketplace item

Pode encontrar o item do mercado do modelo de registo de contentores 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 Marketplace está disponível a partir do portal em subscrições selecionadas.The Marketplace item is available from the portal in select subscriptions.

Também pode adicionar o item (carga lateral) ao seu Marketplace utilizando 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 deste artigo podem ser acedidos descarregando o repositório de git como um pacote (zip) de https://github.com/msazurestackworkloads/azurestack-gallery/archive/master.zip , e extraindo os ficheiros.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. Pode encontrar o guião na azurestack-gallery-master\registry\scripts pasta.You can find the script in the azurestack-gallery-master\registry\scripts folder.

Pré-requisitosPrerequisites

Terá de ter os seguintes itens antes de adicionar o item do Mercado do Registo de Contentores no Azure Stack Hub.You will need to have the following items before adding the Container Registry Marketplace item on Azure Stack Hub.

ItemItem TipoType DetalhesDetails
Módulos Azure Stack Hub PowerShell (Azs.Gallery.Admin)Azure Stack Hub PowerShell modules (Azs.Gallery.Admin) Módulos do PowerShellPowerShell Modules Só é necessário que os elementos laterais do registo do registo do contentor sejam utilizados os Módulos PowerShell do Hub Azure Stack para adicionar e remover itens de 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 módulos PowerShell da Stack AzureInstall Azure Stack PowerShell modules
Modelo de registo de contentoresContainer Registry Template Item de mercadoMarketplace item Para implantar o registo do contentor como utilizador do Azure Stack Hub, o item de mercado do modelo de registo de contentores deve estar disponível na sua subscrição, ou adicionado manualmente (carregado lateralmente), no seu Azure Stack Hub Marketplace.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 carregar lateralmente, siga as instruções para carregar lateralmente a embalagem readme.md no repositório GitHub.If side loading, follow the instructions to side load the package in the readme.md in the GitHub repository.
AKS Base Ubuntu 16.04-LTS Image, versão de lançamento mínimo de setembro de 2019AKS Base Ubuntu 16.04-LTS Image, September 2019 minimum release version Item de mercadoMarketplace item Para que os utilizadores do Azure Stack Hub implementem o registo do contentor, tem de disponibilizar a Imagem Base AKS no Mercado.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 registo do contentor utiliza a imagem ao instalar um VM Ubuntu a partir da assinatura que acolhe os binários de registo de contentores 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 Linux 2.0Linux Custom Script Extension 2.0 Item de mercadoMarketplace item Para que os utilizadores do Azure Stack Hub implementem o registo do contentor, tem de disponibilizar a Extensão de Script Personalizada Linux no Mercado.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 registo do contentor utiliza a extensão para configurar o registo.The Container registry template deployment uses the extension to configure the registry.
Certificado SSLSSL Certificate CertificadoCertificate Os utilizadores que implementam o modelo de registo do Contentor precisam de fornecer um certificado PFX utilizado ao configurar a encriptação SSL para o serviço de registo.Users deploying the Container registry template need to provide a PFX certificate used when configuring SSL encryption for the registry service. Se estiver a utilizar o script, terá de executar a sessão PowerShell a partir de um pedido elevado.If you are using the script, you will need to run the PowerShell session from an elevated prompt. Isto não deve ser executado no DVM ou HLH.This should not be run on the DVM or HLH.
Para orientações gerais sobre os requisitos de certificados PKI para o Azure Stack Hub utilizando certificados públicos ou privados/empresariais ver esta documentação, consulte os requisitos de certificado de infraestrutura de chaves públicas (PKI) do 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 para o certificado deve seguir este padrão <vmname>.<location>.cloudapp.<fqdn> a menos que utilize uma entrada personalizada de domínio/dns para o ponto final.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.
Princípio de serviço (SPN)Service Principle (SPN) Registo de AplicaçõesApp Registration Para implantar e configurar o registo do contentor, deve ser criado um Registo de Pedidos, também referido como Principal de Serviço (SPN).To deploy and configure the container registry an Application Registration, also referred to as a Service Principal (SPN), must be created. Este SPN é utilizado durante a configuração do VM e registo para aceder aos recursos do Microsoft Azure Key Vault e da Conta de Armazenamento criados antes da implementação do item 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 em Azure AD dentro do inquilino em que está a iniciar sessão no portal de utilizador do Azure Stack Hub.The SPN should be created in Azure AD within the tenant you are logging into in the user portal of Azure Stack Hub. Se utilizar o AD FS, será criado dentro do diretório local.If using AD FS, it will be created within the local directory.
Para obter mais informações sobre como criar um SPN para métodos de autenticação Azure AD e AD FS, por favor reveja as seguintes orientações.For details on how to create an SPN for both Azure AD and AD FS authentication methods please review the following guidance.
Importante: Terá de guardar o ID e o Secret da App SPN para implementar quaisquer atualizações.Important: You will need to save the SPN App ID and Secret for deploying any updates.
Nome de utilizador do registo e senhaRegistry username and password CredenciaisCredentials O registo do contentor de estivador de código aberto é implantado e configurado com autenticação básica ativada.The open-source docker container registry is deployed and configured with basic authentication enabled. Para aceder ao registo utilizando comandos de estivadores para empurrar e puxar imagens, é necessário um nome de utilizador e uma palavra-passe.To access the registry using docker commands to push and pull images, a username and password is required. O nome de utilizador e a palavra-passe estão armazenados de forma segura numa loja Key Vault.The username and password are securely stored in a Key Vault store.
Importante: Terá de guardar o nome de utilizador e a palavra-passe do registo para iniciar seduca no registo e empurrar/puxar imagens.Important: You will need to save the Registry Username and Password to sign in to the registry and push/pull images.
Chave SSH Pública / PrivadaSSH Public / Private Key CredenciaisCredentials Para resolver problemas com os problemas de implantação ou tempo de funcionamento com o VM, é necessário fornecer uma chave pública SSH 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. Recomenda-se a utilização do formato openssh, ssh-keygen, para gerar o par de chaves privada/pública, uma vez que os scripts de diagnóstico para recolher registos requerem este 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: Terá de ter acesso às chaves públicas e privadas para aceder ao VM implantado para resoluçã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 aos portais de administração e utilizadores e pontos finais de gestãoAccess to admin and user portals and management endpoints ConectividadeConnectivity Este guia pressupõe que está a implementar e a configurar o registo de um sistema com conectividade com o sistema Azure Stack Hub.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 Marketplace.The script Pre-reqs creates the other inputs required to deploy the Marketplace item.

Passos de instalaçãoInstallation steps

A instalação do modelo de registo do contentor requer a criação de vários recursos antes da implantação.Installation of the Container registry template requires several resources to be created before deployment.

  1. Ligue-se ao Azure Stack Hub como utilizador utilizando o PowerShell e selecione uma subscrição utilizando 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 a ligação como utilizador ao Azure Stack Hub PowerShell, consulte Connect to Azure Stack com PowerShell como utilizador.For more information on connecting as a user to Azure Stack Hub PowerShell, see Connect to Azure Stack with PowerShell as a user.

  2. Corra 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, conta de armazenamento, recipiente blob, loja Key Vault, atribuir permissões de acesso ao SPN, e copiar certificados e nome de utilizador e senha para o registo na loja Key Vault.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. Executar o seguinte cmdlet a partir de uma solicitação elevada utilizando 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 Isto é por vezes referido como o nome da região.This is sometimes referred to as the region name.
    $ResourceGroupName$ResourceGroupName Especifique o nome do grupo de recursos que pretende que a conta de armazenamento e a loja Key Vault sejam criadas.Specify the name of the resource group you want the storage Account and Key Vault store to be created. Irá especificar um grupo de recursos diferente ao implementar o item Marketplace.You will specify a different resource group when deploying the Marketplace item.
    $StorageAccountName$StorageAccountName Especifique o nome da conta de armazenamento para criar para o registo do contentor a utilizar ao armazenar imagens que tenham sido empurradas.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 recipiente blob para criar que é utilizado para armazenamento de imagem.Specify the name of the blob container to create which is used for image storage.
    $KeyVaultName$KeyVaultName Especifique o nome da loja Key Vault para criar para armazenar o certificado e o nome de utilizador e o valor da palavra-passe.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 no Cofre chave para armazenar o certificado PFX.Provide the name of the secret created in Key Vault to store the PFX certificate.
    $CertificateFilePath$CertificateFilePath Fornecer 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 Fornecer o AppID do SPN.Provide the AppID of the SPN.
    $RegistryUserName$RegistryUserName Forneça o nome de utilizador para aceder ao serviço de registo utilizando uma autorização básica.Provide the username for accessing the registry service using basic authorization.
    $RegistryUserPassword$RegistryUserPassword Forneça a palavra-passe para o utilizador do registo.Provide the password for the registry user.
  4. Uma vez que o script esteja concluído, note que o final do script inclui parâmetros a serem usados na implementaçã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 estes valores, pode haver um espaço introduzido se o valor embrulhá-lo.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 de utilizadores Azure Stack Hub.Open the Azure Stack Hub user portal.

  6. Selecione Criar > Compute > Modelo de Registo de Contentores computacional.Select Create > Compute > Container Registry Template.

    Modelo de registo de contentores

  7. Selecione a subscrição, o grupo de recursos e a localização para implantar o modelo de registo do contentor.Select the subscription, resource group, and location to deploy the container registry template.

    Selecionar subscrição

  8. Preencha os detalhes de configuração da máquina virtual.Complete the virtual machine configuration details. A imagem SKU falha em aks-ubuntu-1604-201909; no entanto, a saída da Set-ContainerRegistryPrerequisites função inclui uma lista de SKUs disponíveis para utilização 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 existir mais de um SKU, escolha o SKU mais recente para implantação.If more than one SKU exists choose the most recent SKU for deployment.

    Detalhes da configuração VM

    ParâmetroParameter DetalhesDetails
    Nome de utilizadorUsername Forneça o nome de utilizador para iniciar sessão no 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 o VM utilizando o protocolo SSH.Provide the SSH public key used to authenticate with the VM using SSH protocol.
    TamanhoSize Selecione o tamanho do VM para implementar.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 este 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. Pode conter apenas letras minúsculas, números e hífenes.It can contain only lowercase letters, numbers and hyphens. O primeiro personagem deve ser uma carta.The first character must be a letter. O último caráter tem de 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.
    Etiqueta de nome de domínioDomain name label Especifique o prefixo DNS para o seu registo.Specify the DNS prefix for your registry. Todo o FQDN deve corresponder ao valor CN do certificado PFX criado para o registo.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 contentores para iniciar.Specify the number of container replicas to start.
    Imagem SKUImage SKU Especifique o SKU de imagem a ser utilizado para a implantação.Specify the Image SKU to be used for the deployment. Os SKUs disponíveis para a Imagem Base AKS estã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 o ID da aplicação SPN.Specify the SPN App ID.
    Senha SPN / Confirmar SenhaSPN Password / Confirm Password Especifique o segredo de identificação da aplicação SPN.Specify the SPN App ID secret.
  9. Preencha a configuração do Cofre de Armazenamento e Chave.Complete the Storage and Key Vault configuration.

    Configuração de armazenamento e cofre de chaves

    ParâmetroParameter DetalhesDetails
    ID de conta de armazenamento alargado existenteExisting extended storage account resource ID Especifique o ID do recurso de armazenamento como devolvido pelo pre-reqs script.Specify the storage account resource ID as returned by the pre-reqs script.
    Recipiente de bolha de backend existenteExisting backend blob container Especifique o nome do recipiente blob, listado na saída do script pré-reqs.Specify the blob container name, listed in the pre-reqs script output.
    ID de recurso de cofre chave de certificado PFXPFX Certificate Key Vault Resource ID Especifique o ID do recurso Key Vault como devolvido pelo pre-reqs script.Specify the Key Vault resource ID as returned by the pre-reqs script.
    PFX Certificado Chave Cofre Secreto URLPFX Certificate Key Vault Secret URL Especifique o URL do certificado devolvido pelo script pré-reqs.Specify the certificate URL as returned by the pre-reqs script.
    Impressão em polegar de certificado PFXPFX Certificate Thumbprint Especifique a impressão digital do certificado como devolvido pelo script pré-reqs.Specify the certificate thumbprint as returned by the pre-reqs script.
  10. Uma vez fornecidos todos os valores e a implantação do modelo de solução começar, levará 10-15 minutos para o VM implantar e configurar o serviço de registo.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 registo abra uma instância CLI estivadora de uma máquina/VM com acesso ao URL de registo.To test out the registry open a docker CLI instance from a machine / VM with access to the registry URL.

    Nota

    Se usou um certificado ou certificado auto-assinado que não é conhecido do VM que está a usar para aceder ao registo, terá de instalar esse certificado no 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.

Empurrando e retirando imagens do registo de contentoresPushing and pulling images from container registry

  1. Iniciar s-acordo com a utilização docker login –u \<username> -p \<password> .Sign in using docker login –u \<username> -p \<password>.
  2. Puxe e imagem de um registo conhecido.Pull and image from a known registry.
  3. Marque a imagem para direcionar o registo de contentores de estivador recém-implantado.Tag the image to target the newly deployed docker container registry.
  4. Empurre a imagem para o novo registo alvo.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 registo de contentores Docker implementado por este modelo é 2.7.The version of the Docker Container Registry service deployed by this template is 2.7. Esta versão tem um problema conhecido que impede que empurre e puxa imagens do Windows Container.This version has a known issue that prevents pushing and pulling Windows Container images. A questão é rastreada com o seguinte item 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óximos passosNext steps

Visão geral do Mercado Azure StackAzure Stack Marketplace overview