Compartilhar via


Implantar do registro de contêiner privado no Kubernetes local usando o Registro de Contêiner do Azure e o AKS Arc

Aplica-se a: Azure Local, versão 23H2

Este artigo descreve como implantar imagens de contêiner de um registro de contêiner privado usando o Registro de Contêiner do Azure, que você pode executar em seu próprio datacenter em implantações do AKS Arc. Você implanta no cluster do Kubernetes local hospedado pelo AKS. O Registro de Contêiner do Azure permite criar, armazenar e gerenciar imagens e artefatos de contêiner em um registro privado para todos os tipos de implantações de contêiner.

O artigo descreve como criar um registro de contêiner privado no Azure e enviar sua imagem de contêiner por push para o registro de contêiner privado. Em seguida, você pode implantar do registro privado no cluster do Kubernetes local hospedado no AKS Arc.

Para obter mais informações sobre o Registro de Contêiner do Azure, consulte a documentação do Registro de Contêiner do Azure.

Pré-requisitos

Verifique se você tem os seguintes requisitos:

  • Uma compreensão básica dos conceitos do Kubernetes.
  • Um cluster do AKS que esteja em execução.
  • CLI do Azure instalada
  • Seu ambiente kubectl local configurado para apontar para o cluster do AKS.

Criar um registro de contêiner privado no Azure

Para criar um registro de contêiner, comece com um grupo de recursos. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. Crie um grupo de recursos com o comando az group create. O exemplo a seguir cria um grupo de recursos na região eastus :

az group create --name <RESOURCE_GROUP_NAME> --location eastus

Crie uma instância do Registro de Contêiner com o comando az acr create e forneça seu próprio nome do Registro. O nome do registro deve ser exclusivo no Azure e conter de 5 a 50 caracteres alfanuméricos. No restante deste artigo, <acrName> é usado como um espaço reservado para o nome do registro de contêiner, mas você pode fornecer seu próprio nome de registro exclusivo. O SKU Básico é um ponto de entrada com custo otimizado para fins de desenvolvimento que fornece um equilíbrio entre armazenamento e taxa de transferência:

az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic

Depois de criar o registro de contêiner, use o seguinte comando para criar uma entidade de serviço, para que você possa acessar o registro de contêiner do Kubernetes:

az ad sp create-for-rbac /
--scopes /subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RG_NAME>/providers/Microsoft.ContainerRegistry/registries/<REGISTRY_NAME> /
--role Contributor /
--name <SERVICE_PRINCIPAL_NAME>

O Registro de Contêiner do Azure dá suporte a três funções de acesso. A função Colaborador é usada com mais frequência por desenvolvedores de aplicativos. No entanto, em cenários do mundo real, talvez seja necessário criar várias entidades de serviço, dependendo do tipo de acesso necessário:

  • Colaborador: essa função oferece acesso push e pull ao repositório.
  • Leitor: essa função só permite acesso pull ao repositório.
  • Proprietário: essa função permite que você atribua funções a outros usuários, além do acesso push e pull ao repositório.

O comando anterior deve produzir uma saída semelhante ao seguinte texto:

{
"appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"displayName": "akshci-service-principal",
"name": "http://akshci-service-principal",
"password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Depois que a entidade de serviço for criada com êxito, copie o appId e a senha em um local seguro para usar posteriormente em sua implantação.

Para mais informações sobre como trabalhar com entidades de serviço e o Registro de Contêiner do Azure, confira Autenticação do Registro de Contêiner do Azure com entidades de serviço.

Entre no registro de contêiner privado

Para usar a instância do Registro de Contêiner, você deve primeiro entrar. Você pode usar a CLI do Azure ou a CLI do Docker para entrar.

Opção 1: entrar na CLI do Azure

Use o comando az acr sign in e forneça o nome exclusivo atribuído ao registro de contêiner na etapa anterior:

az acr login --name <REGISTRY_NAME>

Opção 2: entrar na CLI do Docker

Para usar a CLI do Docker para acessar o registro de contêiner, digite o seguinte comando em um terminal Bash ou PowerShell:

docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>

Em qualquer uma das opções, o comando deve retornar uma mensagem de entrada bem-sucedida quando for concluído.

Enviar uma imagem por push para o registro de contêiner

Depois de fazer logon com êxito, você pode começar a enviar a imagem por push para o Registro de Contêiner. Primeiro, execute o comando docker images para visualizar a lista de imagens em sua máquina local:

REPOSITORY TAG IMAGE ID CREATED SIZE

mcr.microsoft.com/azure-functions/dotnet 3.0 9f8ad1bdee67 5 months ago
540MB

poemfinder-app latest 2d9bef425603 6 months ago 208MB

Para começar, marque a imagem usando o comando docker tag e, em seguida, use push docker para enviá-la por push para o registro de contêiner:

docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0

Verifique se a imagem foi marcada corretamente executando o comando docker images novamente. Depois de confirmar, execute docker push para enviar por push para o registro de contêiner, da seguinte maneira:

docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0

Para confirmar se a imagem foi enviada com êxito para o registro de contêiner, execute o seguinte comando:

az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table

Implantar uma imagem do registro de contêiner no AKS

Para implantar sua imagem de contêiner do registro de contêiner no cluster do Kubernetes, crie Segredos do Kubernetes para armazenar suas credenciais de registro. O Kubernetes usa um segredo de pull de imagem para armazenar as informações necessárias para a autenticação no registro. Para criar o segredo de pull para um registro de contêiner, forneça a ID da entidade de serviço, a senha e a URL do registro:

kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<REGISTRY_NAME>.azurecr.io \
--docker-username=<appId> \
--docker-password=<password>

A tabela a seguir descreve os parâmetros de entrada:

Valor Descrição
secret-name O nome da imagem é secreto; por exemplo, acr-secret.
namespace Kubernetes no qual colocar o segredo. Necessário apenas se você quiser colocar o segredo em um namespace diferente do namespace padrão.
<REGISTRY_NAME> Nome do registro de contêiner. Por exemplo, myregistry. O --docker-server é o nome totalmente qualificado do servidor de entrada do Registro.
appId ID da entidade de serviço que o Kubernetes usa para acessar seu registro.
password Senha da entidade de serviço.

Depois de criar o segredo de pull da imagem, você pode usá-lo para criar pods e implantações do Kubernetes. Forneça o nome do segredo no imagePullSecrets arquivo de implantação, conforme mostrado no exemplo a seguir:

apiVersion: v1
kind: Pod
metadata:
 name: poemfinder-app
 namespace: mydemoapps
spec:
 containers:
  - name: poemfinder-app
    image: <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
    imagePullPolicy: IfNotPresent
 imagePullSecrets:
   - name: acr-secret

Neste exemplo, poemfinder-app:v1.0 é o nome da imagem a ser extraída do registro de contêiner e acr-secret é o nome do segredo de pull que você criou para acessar o registro. Quando você implanta o pod, o Kubernetes extrai automaticamente a imagem do registro se a imagem ainda não estiver presente no cluster.

Você pode salvar a configuração do pod acima em um arquivo como pod-example.yaml e, em seguida, implantá-la no Kubernetes, da seguinte maneira:

kubectl create -f pod-example.yaml

Para confirmar se o pod foi criado com êxito usando a imagem de contêiner do registro de contêiner, execute kubectl describe pod <POD_NAME>, que deve mostrar a imagem de contêiner usada para criar o pod.

Próximas etapas