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 ACRmyacrregistry
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:
- Cree el registro conectado.
- Implemente la extensión de Arc del registro conectado.
- Compruebe la implementación de la extensión del registro conectado.
- 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.
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 ACRmyacrregistry
en el grupo de recursosmyresourcegroup
y el repositoriohello-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 denominadomysynctoken
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).
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.
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 establecerservice.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 paraservice.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. Siservice.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:
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
}
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 |
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:
- 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
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 imagenhello-world
con la etiquetalatest
: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.
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.
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