Partekatu honen bidez:


Inicio rápido: Implementación de la extensión de Arc del registro conectado (versión preliminar)

En este inicio rápido, obtendrá información sobre cómo implementar la extensión de Arc de registro conectado mediante la experiencia de usuario de la CLI con una configuración segura de manera predeterminada para garantizar una seguridad sólida e integridad operativa.

El registro conectado es una herramienta fundamental para los clientes perimetrales, lo que permite una administración eficaz y el acceso a cargas de trabajo en contenedores, ya sean locales o en sitios remotos. Mediante la integración con Azure Arc, el servicio garantiza una experiencia de administración del ciclo de vida sin problemas y unificada para cargas de trabajo en contenedores basadas en Kubernetes. La implementación de la extensión de Arc del registro conectado en clústeres de Kubernetes habilitados para Arc simplifica la administración y el acceso de estas cargas de trabajo.

Requisitos previos

  • Configure la CLI de Azure para conectarse a Azure y Kubernetes.

  • Cree una instancia de Azure Container Registry (ACR) o use una existente con inicio rápido.

  • Configure el acceso y la comunicación del firewall entre ACR y el registro conectado habilitando los puntos de conexión de datos dedicados.

  • Cree un clúster de Azure Kubernetes Service (AKS) o use uno existente con el tutorial.

  • Configure la conexión entre el clúster de Kubernetes y Azure Arc siguiendo el inicio rápido.

  • Use el comando k8s-extension para administrar las extensiones de Kubernetes.

    az extension add --name k8s-extension
    
  • Registre los proveedores de recursos de Azure necesarios en su suscripción y use Kubernetes habilitado para Azure Arc:

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

    Un proveedor de recursos de Azure es un conjunto de operaciones REST que permiten la funcionalidad para un servicio específico de Azure.

  • Repositorio en el registro de ACR para sincronizar con el registro conectado.

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

    El repositorio hello-world se crea en el registro de ACR myacrregistry para sincronizarse con el registro conectado.

Implementación de la extensión de Arc del registro conectado con la configuración segura de manera predeterminada

Una vez que se cumplen los requisitos previos y las condiciones y componentes necesarios, siga el enfoque simplificado para implementar de forma segura una extensión del registro conectado en un clúster de Kubernetes habilitado para Arc mediante la siguiente configuración. Estas opciones definen la siguiente configuración con el servicio HTTPS, Solo lectura, Distribución de confianza y Administrador de certificados. Siga los pasos para una implementación correcta:

  1. Cree el registro conectado.
  2. Implemente la extensión de Arc del registro conectado.
  3. Compruebe la implementación de la extensión del registro conectado.
  4. Implemente un pod que use la imagen del registro conectado.

Creación del registro conectado y sincronización con ACR

La creación del registro conectado para sincronizar con ACR es el paso fundamental para implementar la extensión de Arc del registro conectado.

  1. Cree el registro conectado, que se sincroniza con el registro de ACR:

    Para crear un registro conectado myconnectedregistry que se sincronice con el registro de ACR myacrregistry en el grupo de recursos myresourcegroup y el repositorio hello-world, puede ejecutar el comando az acr connected-registry create:

    az acr connected-registry create --registry myacrregistry \ 
    --name myconnectedregistry \
    --resource-group myresourcegroup \ 
    --repository "hello-world"
    
  • El comando az acr connected-registry create crea el registro conectado con el repositorio especificado.
  • El comando az acr connected-registry create sobrescribe las acciones si el mapa de ámbito de sincronización denominado myscopemap existe y sobrescribe las propiedades si el token de sincronización denominado mysynctoken existe.
  • El comando az acr connected-registry create valida un punto de conexión de datos dedicado durante la creación del registro conectado y proporciona un comando para habilitar el punto de conexión de datos dedicado en el registro de ACR.

Implementar la extensión de Arc del registro conectado en el clúster de Kubernetes habilitado para Arc

Al implementar la extensión de Arc del registro conectado, puede sincronizar imágenes de contenedor y otros artefactos de Open Container Initiative (OCI) con el registro de ACR. La implementación ayuda a acelerar el acceso a los artefactos del registro y permite la creación de escenarios avanzados. La implementación de extensiones garantiza una distribución segura de confianza entre el registro conectado y todos los nodos de cliente del clúster e instala el servicio cert-manager para el cifrado de seguridad de la capa de transporte (TLS).

  1. Generación de la cadena de conexión y el archivo JSON de configuración protegida

    Para una implementación segura de la extensión del registro conectado, genere la cadena de conexión, incluida una nueva contraseña, un protocolo de transporte y cree el archivo protected-settings-extension.json necesario para la implementación de la extensión con el 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:

Los comandos cat y echo crean el archivo protected-settings-extension.json con los detalles de la cadena de conexión, insertando el contenido de la cadena de conexión en el archivo protected-settings-extension.json, un paso necesario para la implementación de la extensión. El comando az acr connected-registry get-settings genera la cadena de conexión, incluida la creación de una nueva contraseña y la especificación del protocolo de transporte.

  1. Implementación de la extensión del registro conectado

    Implemente la extensión del registro conectado con los detalles de configuración especificados mediante el 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  
  • El comando az k8s-extension create implementa la extensión del registro conectado en el clúster de Kubernetes con los parámetros de configuración proporcionados y el archivo de configuración protegido.
  • Garantiza una distribución segura de confianza entre el registro conectado y todos los nodos de cliente del clúster e instala el servicio cert-manager para el cifrado de seguridad de la capa de transporte (TLS).
  • ClusterIP debe provenir del intervalo IP de subred del clúster de AKS. El parámetro service.clusterIP especifica la dirección IP del servicio de registro conectado dentro del clúster. Es esencial establecer service.clusterIP dentro del intervalo de direcciones IP de servicio válidas para el clúster de Kubernetes. Asegúrese de que la dirección IP especificada para service.clusterIP se encuentre dentro del intervalo IP de servicio designado definido durante la configuración inicial del clúster, normalmente se encuentra en la configuración de red del clúster. Si service.clusterIP no está dentro de este intervalo, debe actualizarse a una dirección IP que esté dentro del intervalo válido y que no esté actualmente en uso por otro servicio.

Comprobación de la implementación de la extensión del registro conectado

Para comprobar la implementación de la extensión del registro conectado en el clúster de Kubernetes habilitado para Arc, siga los pasos siguientes:

  1. Verificación del estado de la implementación

    Ejecute el comando az k8s-extension show para comprobar el estado de implementación de la extensión del registro conectado:

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

Salida de ejemplo

    {
    "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. Comprobar el estado del registro conectado

    Para cada registro conectado, puede ver el estado del registro conectado mediante el comando az acr connected-registry list:

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

Salida de ejemplo

    | 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. Comprobación de los detalles específicos del registro conectado

    Para obtener más información sobre un registro conectado específico, use el comando az acr connected-registry show:

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

Salida de ejemplo

   | 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 |
  • El comando az k8s-extension show comprueba el estado de la implementación de la extensión.
  • El comando también proporciona detalles sobre el estado de conexión del registro conectado, la última sincronización, la ventana de sincronización, la programación de sincronización, etc.

Implementación de un pod que usa una imagen del registro conectado

Para implementar un pod que use una imagen del registro conectado dentro del clúster, la operación debe realizarse desde el propio nodo del clúster. Siga estos pasos:

  1. Cree un secreto en el clúster para autenticarse con el registro conectado:

Ejecute el comando kubectl create secret docker-registry para crear un secreto en el clúster para autenticarse con el registro conectado:

kubectl create secret docker-registry regcred --docker-server=192.100.100.1 --docker-username=mytoken --docker-password=mypassword
  1. Implemente el pod que usa la imagen deseada del registro conectado mediante el valor de la dirección service.clusterIP 192.100.100.1 del registro conectado y el nombre de imagen hello-world con la etiqueta 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
    

Limpieza de recursos

Al eliminar la extensión del registro conectado implementada, se quitan los pods del registro conectado y los valores de configuración correspondientes.

  1. Eliminación de la extensión del registro conectado

    Ejecute el comando az k8s-extension delete para eliminar la extensión del registro conectado:

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

Al eliminar el registro conectado implementado, se quita la instancia en la nube del registro conectado y sus detalles de configuración.

  1. Eliminación del registro conectado

    Ejecute el comando az acr connected-registry delete para eliminar el registro conectado:

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

Pasos siguientes