Partilhar via


Guia de início rápido: implantar a extensão Arc do registro conectado (visualização)

Neste guia de início rápido, você aprenderá a implantar a extensão Connected registry Arc usando a CLI UX com configurações seguras por padrão para garantir segurança robusta e integridade operacional.

O registro conectado é uma ferramenta fundamental para clientes de borda, permitindo gerenciamento eficiente e acesso a cargas de trabalho em contêineres, seja no local ou em locais remotos. Ao integrar com o Azure Arc, o serviço garante uma experiência de gerenciamento de ciclo de vida perfeita e unificada para cargas de trabalho em contêineres baseadas em Kubernetes. A implantação da extensão Arc do registro conectado em clusters Kubernetes habilitados para Arc simplifica o gerenciamento e o acesso dessas cargas de trabalho.

Pré-requisitos

  • Configure a CLI do Azure para se conectar ao Azure e ao Kubernetes.

  • Crie ou use um Registro de Contêiner do Azure (ACR) existente com início rápido.

  • Configure o acesso ao firewall e a comunicação entre o ACR e o registro conectado habilitando os pontos de extremidade de dados dedicados.

  • Crie ou use um cluster existente do Azure KubernetesService (AKS) com o tutorial.

  • Configure a conexão entre o Kubernetescluster e o Azure Arc seguindo o início rápido.

  • Use o comando k8s-extension para gerenciar Kubernetesextensions.

    az extension add --name k8s-extension
    
  • Registre os provedores de recursos do Azure necessários em sua assinatura e use o Kubernetes habilitado para Azure Arc:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    

    Um provedor de recursos do Azure é um conjunto de operações REST que habilitam a funcionalidade para um serviço específico do Azure.

  • Repositório no registro ACR para sincronizar com o registro conectado.

    az acr import --name myacrregistry --source mcr.microsoft.com/mcr/hello-world:latest --image hello-world:latest
    

    O hello-world repositório é criado no registro myacrregistry ACR para sincronizar com o registro conectado.

Implante a extensão Arc do Registro conectado com configurações seguras por padrão

Depois que os pré-requisitos, as condições e os componentes necessários estiverem em vigor, siga a abordagem simplificada para implantar com segurança uma extensão do Registro conectada em um cluster Kubernetes habilitado para Arc usando as seguintes configurações. Essas configurações definem a seguinte configuração com HTTPS, Somente leitura, Distribuição de confiança e serviço Cert Manager. Siga as etapas para uma implantação bem-sucedida:

  1. Crie o registro conectado.
  2. Implante a extensão Arc do Registro conectado.
  3. Verifique a implantação da extensão do Registro conectada.
  4. Implante um pod que usa a imagem do registro conectado.

Crie o registro conectado e sincronize com o ACR

Criar o registro conectado para sincronizar com o ACR é a etapa fundamental para implantar a extensão Arc do registro conectado.

  1. Crie o registro conectado, que sincroniza com o registro ACR:

    Para criar um registro myconnectedregistry conectado que sincroniza com o registro myacrregistry ACR no grupo myresourcegroup de recursos e no repositório hello-world, você pode executar o comando az acr connected-registry create :

    az acr connected-registry create --registry myacrregistry \ 
    --name myconnectedregistry \
    --resource-group myresourcegroup \ 
    --repository "hello-world"
    

Implantar a extensão Arc do registro conectado no cluster Kubernetes habilitado para Arc

Ao implantar a extensão Registry Arc conectada, você pode sincronizar imagens de contêiner e outros artefatos Open Container Initiative (OCI) com seu registro ACR. A implantação ajuda a acelerar o acesso aos artefatos do Registro e permite a criação de cenários avançados. A implantação da extensão garante uma distribuição segura de confiança entre o registro conectado e todos os nós do cliente dentro do cluster e instala o serviço cert-manager para criptografia TLS (Transport Layer Security).

  1. Gerar a cadeia de conexão e o arquivo JSON de configurações protegidas

    Para a implantação segura da extensão do Registro conectada, gere a cadeia de conexão, incluindo uma nova senha, protocolo de transporte e crie o protected-settings-extension.json arquivo necessário para a implantação da extensão com o comando az acr connected-registry get-settings :

    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    echo "{\"connectionString\":\"$(az acr connected-registry get-settings \
    --name myconnectedregistry \
    --registry myacrregistry \
    --parent-protocol https \
    --generate-password 1 \
    --query ACR_REGISTRY_CONNECTION_STRING \
    --output tsv \
    --yes | tr -d '\r')\" }" > settings.json

Nota

Os comandos cat e echo criam o protected-settings-extension.json arquivo com os detalhes da cadeia de conexão, injetando o conteúdo da cadeia de conexão no protected-settings-extension.json arquivo, uma etapa necessária para a implantação da extensão. O comando az acr connected-registry get-settings gera a cadeia de conexão, incluindo a criação de uma nova senha e a especificação do protocolo de transporte.

  1. Implantar a extensão do Registro conectada

    Implante a extensão do Registro conectada com os detalhes de configuração especificados usando o comando az k8s-extension create :

  az k8s-extension create --cluster-name myarck8scluster \ 
  --cluster-type connectedClusters \
  --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \
  --name myconnectedregistry \
  --resource-group myresourcegroup \ 
  --config service.clusterIP=192.100.100.1 \ 
  --config-protected-file protected-settings-extension.json  
  • O comando az k8s-extension create implanta a extensão do Registro conectada no Kubernetescluster com os parâmetros de configuração fornecidos e o arquivo de configurações protegidas.
  • Ele garante a distribuição segura de confiança entre o registro conectado e todos os nós do cliente dentro do cluster e instala o serviço cert-manager para criptografia TLS (Transport Layer Security).
  • O clusterIP deve ser do intervalo IP da sub-rede do cluster AKS. O service.clusterIP parâmetro especifica o endereço IP do serviço de registro conectado dentro do cluster. É essencial definir o service.clusterIP dentro do intervalo de IPs de serviço válidos para o Kubernetescluster. Certifique-se de que o endereço IP especificado para service.clusterIP esteja dentro do intervalo de IP de serviço designado definido durante a configuração inicial do cluster, normalmente encontrado nas configurações de rede do cluster. Se o service.clusterIP não estiver dentro desse intervalo, ele deve ser atualizado para um endereço IP que esteja dentro do intervalo válido e não esteja atualmente em uso por outro serviço.

Verificar a implantação da extensão do Registro conectada

Para verificar a implantação da extensão do Registro conectada no Kubernetescluster habilitado para Arc, siga as etapas:

  1. Verificar o status da implantação

    Execute o comando az k8s-extension show para verificar o status de implantação da extensão de registro conectada:

  az k8s-extension show --name myconnectedregistry \ 
  --cluster-name myarck8scluster \
  --resource-group myresourcegroup \
  --cluster-type connectedClusters

Exemplo de saída

    {
    "aksAssignedIdentity": null,
    "autoUpgradeMinorVersion": true,
    "configurationProtectedSettings": {
      "connectionString": ""
    },
    "configurationSettings": {
      "pvc.storageClassName": "standard",
      "pvc.storageRequest": "250Gi",
      "service.clusterIP": "[your service cluster ip]"
    },
    "currentVersion": "0.11.0",
    "customLocationSettings": null,
    "errorInfo": null,
    "extensionType": "microsoft.containerregistry.connectedregistry",
    "id": "/subscriptions/[your subscription id]/resourceGroups/[your resource group name]/providers/Microsoft.Kubernetes/connectedClusters/[your arc cluster name]/providers/Microsoft.KubernetesConfiguration/extensions/[your extension name]",
    "identity": {
      "principalId": "[identity principal id]",
      "tenantId": null,
      "type": "SystemAssigned"
    },
    "isSystemExtension": false,
    "name": "[your extension name]",
    "packageUri": null,
    "plan": null,
    "provisioningState": "Succeeded",
    "releaseTrain": "preview",
    "resourceGroup": "[your resource group]",
    "scope": {
      "cluster": {
        "releaseNamespace": "connected-registry"
      },
      "namespace": null
    },
    "statuses": [],
    "systemData": {
      "createdAt": "2024-07-12T18:17:51.364427+00:00",
      "createdBy": null,
      "createdByType": null,
      "lastModifiedAt": "2024-07-12T18:22:42.156799+00:00",
      "lastModifiedBy": null,
      "lastModifiedByType": null
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": null
  }
  1. Verificar o estado e o estado do registo ligado

    Para cada registro conectado, você pode exibir o status e o estado do registro conectado usando o comando az acr connected-registry list :

        az acr connected-registry list --registry myacrregistry \
        --output table
    

Exemplo de saída

    | NAME | MODE | CONNECTION STATE | PARENT | LOGIN SERVER | LAST SYNC(UTC) |
    |------|------|------------------|--------|--------------|----------------|
    | myconnectedregistry | ReadWrite | online | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
    | myreadonlyacr | ReadOnly | offline | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
  1. Verifique os detalhes específicos do registro conectado

    Para obter detalhes sobre um registro conectado específico, use o comando az acr connected-registry show :

  az acr connected-registry show --registry myacrregistry \
  --name myreadonlyacr \ 
  --output table

Exemplo de saída

   | NAME                | MODE      | CONNECTION STATE | PARENT        | LOGIN SERVER             | LAST SYNC(UTC)      | SYNC SCHEDULE | SYNC WINDOW       |
   | ------------------- | --------- | ---------------- | ------------- | ------------------------ | ------------------- | ------------- | ----------------- |
   | myconnectedregistry | ReadWrite | online           | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 | 0 0 * * *     | 00:00:00-23:59:59 |
  • O comando az k8s-extension show verifica o estado da implantação da extensão.
  • O comando também fornece detalhes sobre o status da conexão do registro conectado, última sincronização, janela de sincronização, agendamento de sincronização e muito mais.

Implantar um pod que usa uma imagem do registro conectado

Para implantar um pod que usa uma imagem do registro conectado dentro do cluster, a operação deve ser executada de dentro do próprio nó do cluster. Siga estes passos:

  1. Crie um segredo no cluster para autenticar com o registro conectado:

Execute o comando kubectl create secret docker-registry para criar um segredo no cluster para autenticar com o registro conectado:

kubectl create secret docker-registry regcred --docker-server=192.100.100.1 --docker-username=mytoken --docker-password=mypassword
  1. Implante o pod que usa a imagem desejada do registro conectado usando o valor do endereço 192.100.100.1 service.clusterIP do registro conectado e o nome hello-world da imagem com a tag latest:

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-world-deployment
      labels:
        app: hello-world
    spec:
      selector:
        matchLabels:
          app: hello-world
      replicas: 1
      template:
        metadata:
          labels:
            app: hello-world
        spec:
          imagePullSecrets:
            - name: regcred
          containers:
            - name: hello-world
              image: 192.100.100.1/hello-world:latest
    EOF
    

Clean up resources (Limpar recursos)

Ao excluir a extensão de registro conectada implantada, você remove os pods de registro conectados correspondentes e as definições de configuração.

  1. Exclua a extensão de registro conectada

    Execute o comando az k8s-extension delete para excluir a extensão de registro conectada:

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    

Ao excluir o registro conectado implantado, você remove a instância de nuvem do registro conectada e seus detalhes de configuração.

  1. Excluir o registro conectado

    Execute o comando az acr connected-registry delete para excluir o registro conectado:

    az acr connected-registry delete --registry myacrregistry \
    --name myconnectedregistry \
    --resource-group myresourcegroup 
    

Próximos passos