Creación de un controlador de datos de Azure Arc mediante la CLI

Requisitos previos

Revise el tema Planeamiento de una implementación de servicios de datos habilitados para Azure Arc para obtener información general.

Instalación de herramientas

Antes de empezar, instale la extensión arcdata para la CLI de Azure (az).

Instalación de la extensión (arcdata) para la CLI de Azure (az)

Independientemente de la plataforma de destino que elija, tiene que establecer las siguientes variables de entorno antes de la creación para el controlador de datos. Estas variables de entorno se convierten en las credenciales usadas para acceder a los paneles de métricas y registros después de la creación del controlador de datos.

Establecimiento de variables de entorno

A continuación, se proporcionan dos conjuntos de variables de entorno necesarias para acceder a los paneles de métricas y registros.

Las variables de entorno incluyen contraseñas para los servicios de registro y métricas. Las contraseñas deben tener al menos ocho caracteres y contener caracteres de tres de las cuatro categorías siguientes: letras latinas en mayúscula, letras latinas en minúscula, números y caracteres no alfanuméricos.

## variables for Metrics and Monitoring dashboard credentials
export AZDATA_LOGSUI_USERNAME=<username for Kibana dashboard>
export AZDATA_LOGSUI_PASSWORD=<password for Kibana dashboard>
export AZDATA_METRICSUI_USERNAME=<username for Grafana dashboard>
export AZDATA_METRICSUI_PASSWORD=<password for Grafana dashboard>

Conexión al clúster de Kubernetes

Conéctese a un clúster de Kubernetes y autentíquese en él, y disponga de un contexto de Kubernetes existente seleccionado antes de comenzar la creación del controlador de datos de Azure Arc. La forma en que se conecta a un clúster o servicio de Kubernetes varía; consulte la documentación de la distribución o el servicio de Kubernetes que usa para saber cómo conectarse al servidor de API de Kubernetes.

Puede comprobar que tiene una conexión de Kubernetes y confirmar el contexto actual con los siguientes comandos.

kubectl cluster-info
kubectl config current-context

Creación del controlador de datos de Azure Arc

En las secciones siguientes se proporcionan instrucciones para tipos específicos de plataformas de Kubernetes. Siga las instrucciones de la plataforma.

Sugerencia

Si no tiene ningún clúster de Kubernetes, puede crear uno en Azure. Siga las instrucciones de Inicio rápido: Implementación de servicios de datos habilitados para Azure Arc en modo de conexión directa mediante Azure Portal para recorrer todo el proceso.

A continuación, siga las instrucciones de Crear en Azure Kubernetes Service (AKS).

Creación en Azure Kubernetes Service (AKS)

De forma predeterminada, el perfil de implementación de AKS usa la clase de almacenamiento managed-premium. La clase de almacenamiento managed-premium solo funciona si tiene máquinas virtuales que se implementaron mediante imágenes de máquina virtual con discos premium.

Si va a usar managed-premium como clase de almacenamiento, puede ejecutar el siguiente comando para implementar el controlador de datos. Sustituya los marcadores de posición del comando por el nombre del grupo de recursos, el identificador de la suscripción y la ubicación de Azure.

az arcdata dc create --profile-name azure-arc-aks-premium-storage --k8s-namespace <namespace> --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --use-k8s

#Example:
#az arcdata dc create --profile-name azure-arc-aks-premium-storage --k8s-namespace arc --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --use-k8s

Si no está seguro de qué clase de almacenamiento debe utilizar, indique la clase de almacenamiento default, que es compatible con cualquier tipo de máquina virtual que esté usando. No le ofrecerá el rendimiento más rápido.

Si desea usar la clase de almacenamiento default, puede ejecutar este comando:

az arcdata dc create --profile-name azure-arc-aks-default-storage --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-aks-default-storage  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Creación en AKS en Azure Stack HCI

Configuración del almacenamiento (Azure Stack HCI con AKS-HCI)

Si usa Azure Stack HCI con AKS-HCI, cree una clase de almacenamiento personalizada con fsType.

fsType: ext4

Use este tipo para implementar el controlador de datos. Vea todas las instrucciones en Creación de una clase de almacenamiento personalizada para un disco de AKS en Azure Stack HCI.

De forma predeterminada, el perfil de implementación utiliza una clase de almacenamiento denominada default y el tipo de servicio LoadBalancer.

Puede ejecutar el siguiente comando para implementar el controlador de datos con la clase de almacenamiento default y el tipo de servicio LoadBalancer.

az arcdata dc create --profile-name azure-arc-aks-hci  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-aks-hci  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Creación en Red Hat OpenShift en Azure (ARO)

Creación de un perfil de implementación personalizado

Use el perfil azure-arc-azure-openshift para Azure RedHat Open Shift.

az arcdata dc config init --source azure-arc-azure-openshift --path ./custom

Creación de un controlador de datos

Puede ejecutar el comando siguiente para crear el controlador de datos:

az arcdata dc create --profile-name azure-arc-azure-openshift  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example
#az arcdata dc create --profile-name azure-arc-azure-openshift  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Creación en Red Hat OpenShift Container Platform (OCP)

Determinación de la clase de almacenamiento

Para determinar qué clase de almacenamiento se va a usar, ejecute el siguiente comando.

kubectl get storageclass

Creación de un perfil de implementación personalizado

Cree un nuevo archivo de perfil de implementación personalizado basado en el perfil de implementación azure-arc-openshift ejecutando el siguiente comando. Este comando crea un directorio custom en el directorio de trabajo actual y un archivo de perfil de implementación personalizado control.json en ese directorio.

Use el perfil azure-arc-openshift para OpenShift Container Platform.

az arcdata dc config init --source azure-arc-openshift --path ./custom

Establecimiento de la clase de almacenamiento

Ahora, establezca la clase de almacenamiento deseada reemplazando <storageclassname> en el siguiente comando por el nombre de la clase de almacenamiento que desea usar y que se determinó mediante la ejecución del comando kubectl get storageclass anterior.

az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=<storageclassname>"
az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=<storageclassname>"

#Example:
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=mystorageclass"
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=mystorageclass"

Establecimiento de LoadBalancer (opcional)

De forma predeterminada, el perfil de implementación azure-arc-openshift usa NodePort como el tipo de servicio. Si usa un clúster de OpenShift que está integrado con un equilibrador de carga, puede cambiar la configuración para usar el tipo de servicio LoadBalancer con el siguiente comando:

az arcdata dc config replace --path ./custom/control.json --json-values "$.spec.services[*].serviceType=LoadBalancer"

Creación de un controlador de datos

Ahora ya puede crear el controlador de datos con el siguiente comando.

Nota:

El parámetro --path debe apuntar al directorio que contiene el archivo control.json y no al propio archivo control.json.

Nota:

Al implementar en OpenShift Container Platform, especifique el valor del parámetro --infrastructure. Las opciones son: aws, azure, alibaba, gcp y onpremises.

az arcdata dc create --path ./custom  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --infrastructure <infrastructure>

#Example:
#az arcdata dc create --path ./custom  --k8s-namespace arc --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --infrastructure onpremises

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Creación en Kubernetes ascendente de código abierto (kubeadm)

De forma predeterminada, el perfil de implementación de kubeadm usa una clase de almacenamiento denominada local-storage y el tipo de servicio NodePort. Si le resulta aceptable, puede omitir las instrucciones que se indican a continuación para establecer la clase de almacenamiento y el tipo de servicio que desee y ejecutar inmediatamente el comando az arcdata dc create siguiente.

Si desea personalizar el perfil de implementación para especificar una clase de almacenamiento o un tipo de servicio específicos, empiece por crear un nuevo archivo de perfil de implementación personalizado basado en el perfil de implementación de kubeadm. Para ello, ejecute el siguiente comando. Este comando crea un directorio custom en el directorio de trabajo actual y un archivo de perfil de implementación personalizado control.json en ese directorio.

az arcdata dc config init --source azure-arc-kubeadm --path ./custom 

Puede buscar las clases de almacenamiento disponibles mediante la ejecución del siguiente comando.

kubectl get storageclass

Ahora, establezca la clase de almacenamiento deseada reemplazando <storageclassname> en el siguiente comando por el nombre de la clase de almacenamiento que desea usar y que se determinó mediante la ejecución del comando kubectl get storageclass anterior.

az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=<storageclassname>"
az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=<storageclassname>"

#Example:
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.data.className=mystorageclass"
#az arcdata dc config replace --path ./custom/control.json --json-values "spec.storage.logs.className=mystorageclass"

De forma predeterminada, el perfil de implementación de kubeadm usa NodePort como tipo de servicio. Si usa un clúster de Kubernetes que está integrado con un equilibrador de carga, puede cambiar la configuración con el siguiente comando.

az arcdata dc config replace --path ./custom/control.json --json-values "$.spec.services[*].serviceType=LoadBalancer"

Ahora ya puede crear el controlador de datos con el siguiente comando.

Nota:

Al implementar en OpenShift Container Platform, especifique el valor del parámetro --infrastructure. Las opciones son: aws, azure, alibaba, gcp y onpremises.

az arcdata dc create --path ./custom  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect --infrastructure <infrastructure>

#Example:
#az arcdata dc create --path ./custom - --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect --infrastructure onpremises

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Creación en Elastic Kubernetes Service (EKS) de AWS

De forma predeterminada, la clase de almacenamiento de EKS es gp2 y el tipo de servicio es LoadBalancer.

Ejecute el siguiente comando para crear el controlador de datos mediante el perfil de implementación de EKS proporcionado.

az arcdata dc create --profile-name azure-arc-eks  --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-eks  --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Creación en Kubernetes Engine Service (GKE) de Google Cloud

De forma predeterminada, la clase de almacenamiento de GKE es standard y el tipo de servicio es LoadBalancer.

Ejecute el siguiente comando para crear el controlador de datos mediante el perfil de implementación de GKE proporcionado.

az arcdata dc create --profile-name azure-arc-gke --k8s-namespace <namespace> --use-k8s --name arc --subscription <subscription id> --resource-group <resource group name> --location <location> --connectivity-mode indirect

#Example:
#az arcdata dc create --profile-name azure-arc-gke --k8s-namespace <namespace> --use-k8s --name arc --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --resource-group my-resource-group --location eastus --connectivity-mode indirect

Una vez ejecutado el comando, continúe en Supervisión del estado de creación.

Supervisión del estado de creación

Se tardan algunos minutos en crear el controlador por completo. Puede supervisar el progreso en otra ventana de terminal con los siguientes comandos:

Nota:

En los siguientes comandos de ejemplo se da por hecho que ha creado un controlador de datos denominado arc-dc y un espacio de nombres de Kubernetes denominado arc. Si ha usado valores diferentes, actualice el script en consecuencia.

kubectl get datacontroller/arc-dc --namespace arc
kubectl get pods --namespace arc

También puede comprobar el estado de creación de un pod determinado ejecutando un comando como el siguiente. Esto es especialmente útil para solucionar problemas.

kubectl describe po/<pod name> --namespace arc

#Example:
#kubectl describe po/control-2g7bl --namespace arc

Solución de problemas de creación

Si tiene problemas con la creación, consulte la guía de solución de problemas.