Início Rápido: Implantar a extensão do Arc do registro conectado (versão prévia)

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

O registro conectado é uma ferramenta crucial para clientes de borda, permitindo o gerenciamento eficiente e o acesso a cargas de trabalho em contêineres, seja no local ou em locais remotos. Ao integrar-se ao Azure Arc, o serviço garante uma experiência de gerenciamento de ciclo de vida contínua e unificada para cargas de trabalho em contêineres baseadas em Kubernetes. Implantar a extensão do Arc do registro conectado em clusters do Kubernetes habilitados para Arc simplifica o gerenciamento e o acesso a essas cargas de trabalho.

Pré-requisitos

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

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

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

  • Criar ou usar um cluster do Serviço de Kubernetes do Azure (AKS) existente com o tutorial.

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

  • Use o comando k8s-extension para gerenciar extensões Kubernetes.

    az extension add --name k8s-extension
    
  • Registre os provedores de recursos do Azure necessários na sua assinatura e use 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-worldrepositório foi criado no registro ACR myacrregistry para sincronizar com o registro conectado.

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

Quando os pré-requisitos, condições e componentes necessários estiverem em vigor, siga a abordagem simplificada para implantar com segurança uma extensão do registro conectado em um cluster do 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 Gerenciador de Certificados. Siga as etapas para uma implantação bem-sucedida:

  1. Criar o registro conectado.
  2. Implantar a extensão do Arc do registro conectado.
  3. Verificar a implantação da extensão do registro conectado.
  4. Implantar um pod que use a imagem do registro conectado.

Criar o registro conectado e sincronizá-lo com o ACR

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

  1. Criar o registro conectado, que será sincronizado com o registro ACR:

    Para criar um registro conectado myconnectedregistry que sincronize com o registro ACR myacrregistry no grupo de recursos myresourcegroup e o 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"
    
  • O comando az acr connected-registry create cria o registro conectado com o repositório especificado.
  • O comando az acr connected-registry create sobrescreverá as ações se o mapa de escopo de sincronização chamado myscopemap existir e sobrescreve as propriedades se o token de sincronização chamado mysynctoken existir.
  • O comando az acr connected-registry create valida um ponto de extremidade dedicado durante a criação do registro conectado e fornece um comando para habilitar o ponto de extremidade dedicado no registro ACR.

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

Ao implantar a extensão do Arc do registro conectado, você poderá sincronizar imagens de contêiner e outros artefatos da Open Container Initiative (OCI) com o registro ACR. A implantação acelera o acesso a artefatos do registro e permite a criação de cenários avançados. A implantação da extensão garante a distribuição segura de confiança entre o registro conectado e todos os nós cliente dentro do cluster, e instala o serviço gerenciador de certificados para criptografia TLS.

  1. Gere a Cadeia de Conexão e o Arquivo JSON de Configurações Protegidas

    Para uma implantação segura da extensão do registro conectado, gere a cadeia de conexão, incluindo uma nova senha, protocolo de transporte e crie o protected-settings-extension.jsonarquivo 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

Observação

Os comandos cat e echo criam o protected-settings-extension.jsonarquivo com os detalhes da cadeia de conexão, injetando o conteúdo da cadeia de conexão no protected-settings-extension.jsonarquivo, uma etapa necessário 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 conectado

    Implante a extensão do registro conectado 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 conectado no cluster do Kubernetes 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 cliente dentro do cluster, e instala o serviço gerenciador de certificados para criptografia TLS.
  • O clusterIP deve ser do intervalo de IP da sub-rede do cluster do AKS. O service.clusterIPparâmetro especifica o endereço IP do serviço do registro conectado dentro do cluster. É essencial definir o service.clusterIPdentro do intervalo de IPs de serviço válidos para o cluster do Kubernetes. Verifique se o endereço IP especificado para service.clusterIPestá dentro do intervalo de IPs 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 deverá ser atualizado para um endereço IP que esteja dentro do intervalo válido e que não esteja sendo usado por outro serviço no momento.

Verifique a implantação da extensão do registro conectado

Para verificar a implantação da extensão do registro conectado no cluster do Kubernetes habilitado para Arc, siga as etapas:

  1. Verificar o status da implantação

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

  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 status e o estado do registro conectado

    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, cronograma de sincronização e mais.

Implantar um pod que usa uma imagem do registro conectado

Para implantar um pod que use uma imagem do registro conectado dentro do cluster, a operação deve ser realizada a partir do próprio nó do cluster. Siga estas etapas:

  1. Criar 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 de serviço.clusterIP 192.100.100.1 do registro conectado, e o nome da imagem hello-world com a marca 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
    

Limpar os recursos

Ao excluir a extensão do registro conectado implantada, você removerá os pods do registro conectado e as configurações de configuração correspondentes.

  1. Excluir a extensão do registro conectado

    Execute o comando az k8s-extension delete para excluir a extensão do registro conectado:

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

Ao excluir o registro conectado implantado, você removerá a instância em nuvem do registro conectado 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óximas etapas