Creación de un controlador de datos habilitado para Azure Arc mediante las herramientas de Kubernetes
Un controlador de datos administra los servicios de datos habilitados para Azure Arc para un clúster de Kubernetes. En este artículo se describe cómo usar las herramientas de Kubernetes para crear un controlador de datos.
Para crear el controlador de datos, hay que seguir estos pasos de alto nivel:
- Creación del espacio de nombres y el servicio de programa previo
- Creación del controlador de datos
Nota:
Para simplificar, en los pasos siguientes se da por hecho que es administrador de clústeres de Kubernetes. En el caso de las implementaciones de producción o entornos más seguros, se recomienda seguir los procedimientos recomendados de seguridad de "privilegios mínimos" al implementar el controlador de datos concediéndoles solo permisos específicos a usuarios y cuentas de servicio implicadas en el proceso de implementación.
Consulte el tema Operación de servicios de datos habilitados para Arc con privilegios mínimos para obtener instrucciones detalladas.
Requisitos previos
Revise el tema Planeamiento de una implementación de servicios de datos habilitados para Azure Arc para obtener información general.
Para crear el controlador de datos mediante las herramientas de Kubernetes, debe tener instaladas dichas herramientas. En los ejemplos de este artículo se usará kubectl
, pero se podrían emplear enfoques similares con otras herramientas de Kubernetes como el panel de Kubernetes, oc
o helm
si está familiarizado con esas herramientas y los formatos YAML y JSON de Kubernetes.
Instalación de la herramienta kubectl
Creación del espacio de nombres y el servicio de programa previo
El servicio de arranque controla las solicitudes entrantes para crear, editar y eliminar recursos personalizados, como un controlador de datos.
Guarde una copia de bootstrapper-unified.yaml y reemplace el marcador {{NAMESPACE}}
de posición en todos los lugares del archivo por el nombre de espacio de nombres deseado, por ejemplo: arc
.
Importante
El archivo de plantilla bootstrapper-unified.yaml tiene como valor predeterminado extraer la imagen del contenedor de arranque de Microsoft Container Registry (MCR). Si su entorno no puede acceder directamente a Microsoft Container Registry, puede hacer lo siguiente:
- Siga los pasos para extraer las imágenes de contenedor de Microsoft Container Registry y enviarlas a un registro de contenedor privado.
- Cree un secreto de extracción de imágenes denominado
arc-private-registry
para el registro de contenedor privado. - Cambie la dirección URL de la imagen del programa previo en el archivo bootstrap.yaml.
- Reemplace
arc-private-registry
en el archivo bootstrap.yaml si se ha utilizado un nombre diferente para el secreto de extracción de imágenes.
Ejecute el siguiente comando para crear el espacio de nombres y el servicio de programa previo con el archivo editado.
kubectl apply --namespace arc -f bootstrapper-unified.yaml
Compruebe que el pod de arranque se está ejecutando con el siguiente comando.
kubectl get pod --namespace arc -l app=bootstrapper
Si el estado no es En ejecución, ejecute el comando varias veces hasta que el estado sea En ejecución.
Creación del controlador de datos
Ya puede crear su propio controlador de datos.
En primer lugar, cree una copia del archivo de plantilla localmente en el equipo para que pueda modificar algunos de los valores de la configuración.
Creación de las métricas y registros de los paneles de nombres de usuario y contraseñas
En la parte superior del archivo, puede especificar un nombre de usuario y una contraseña para autenticarse en los paneles de métricas y registros como administrador. Elija una contraseña segura y compártala solo con aquellos usuarios que necesiten tener estos privilegios.
Un secreto de Kubernetes se almacena como una cadena codificada en Base64, una para el nombre de usuario y otra para la contraseña.
Puede usar una herramienta en línea para codificar en Base64 el nombre de usuario y la contraseña que desee, o bien puede usar las herramientas integradas de la CLI, en función de la plataforma.
PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))
#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))
Linux/macOS
echo -n '<your string to encode here>' | base64
#Example
# echo -n 'example' | base64
Creación de certificados para los paneles de registros y métricas
Opcionalmente, puede crear certificados SSL/TLS para los paneles de registros y métricas. Siga las instrucciones en Especificar certificados SSL/TLS durante el despliegue de las herramientas nativas de Kubernetes.
Edición de la configuración del controlador de datos
Edición de la configuración del controlador de datos según sea necesario:
OBLIGATORIO
- location: cámbiela por la ubicación de Azure donde se almacenarán los metadatos sobre el controlador de datos. Revise la lista de regiones disponibles.
- resourceGroup: el grupo de recursos de Azure donde desea crear el recurso de Azure del controlador de datos en Azure Resource Manager. Normalmente, este grupo de recursos ya debería existir, pero no se necesita hasta el momento en que se cargan los datos en Azure.
- subscription: el GUID de suscripción de Azure de la suscripción en la que desea crear los recursos de Azure.
SE RECOMIENDA REVISAR Y POSIBLEMENTE CAMBIAR LOS VALORES PREDETERMINADOS
- storage..className: la clase de almacenamiento que se va a utilizar para los archivos de registro y datos del controlador de datos. Si no sabe con seguridad cuáles son las clases de almacenamiento disponibles en el clúster de Kubernetes, puede ejecutar el siguiente comando:
kubectl get storageclass
. El valor predeterminado esdefault
, que da por sentado que hay una clase de almacenamiento que existe y que se denominadefault
, y no que hay una clase de almacenamiento que es la predeterminada. Nota: Hay dos configuraciones de className que se deben establecer en la clase de almacenamiento deseada: una para los datos y otra para los registros. - serviceType: cambie el tipo de servicio a
NodePort
si no usa un equilibrador de carga. - Seguridad: para Red Hat OpenShift en Azure o Red Hat OpenShift Container Platform, reemplace la configuración
security:
por los siguientes valores en el archivo .yaml del controlador de datos.
security:
allowDumps: false
allowNodeMetricsCollection: false
allowPodMetricsCollection: false
OPCIONAL
- name: el nombre predeterminado del controlador de datos es
arc
, pero puede cambiarlo si lo desea. - displayName: establézcalo en el mismo valor que el atributo de nombre de la parte superior del archivo.
- logsui-certificate-secret: el nombre del secreto creado en el clúster de Kubernetes para el certificado de interfaz de usuario de registros.
- metricsui-certificate-secret: el nombre del secreto creado en el clúster de Kubernetes para el certificado de interfaz de usuario de métricas.
En el ejemplo siguiente se muestra un .yaml del controlador de datos completado.
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: metricsui-admin-secret
type: Opaque
---
apiVersion: v1
data:
password: <your base64 encoded password>
username: <your base64 encoded username>
kind: Secret
metadata:
name: logsui-admin-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v5
kind: DataController
metadata:
name: arc-dc
spec:
credentials:
dockerRegistry: arc-private-registry # Create a registry secret named 'arc-private-registry' if you are going to pull from a private registry instead of MCR.
serviceAccount: sa-arc-controller
docker:
imagePullPolicy: Always
imageTag: v1.34.0_2024-10-08
registry: mcr.microsoft.com
repository: arcdata
infrastructure: other # Must be a value in the array [alibaba, aws, azure, gcp, onpremises, other]
security:
allowDumps: true # Set this to false if deploying on OpenShift
allowNodeMetricsCollection: true # Set this to false if deploying on OpenShift
allowPodMetricsCollection: true # Set this to false if deploying on OpenShift
services:
- name: controller
port: 30080
serviceType: LoadBalancer # Modify serviceType based on your Kubernetes environment
settings:
ElasticSearch:
vm.max_map_count: "-1"
azure:
connectionMode: indirect # Only indirect is supported for Kubernetes-native deployment for now.
location: eastus # Choose a different Azure location if you want
resourceGroup: <your resource group>
subscription: <your subscription GUID>
controller:
displayName: arc-dc
enableBilling: true
logs.rotation.days: "7"
logs.rotation.size: "5000"
storage:
data:
accessMode: ReadWriteOnce
className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 15Gi
logs:
accessMode: ReadWriteOnce
className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
size: 10Gi
Guarde el archivo editado en el equipo local y ejecute el siguiente comando para crear el controlador de datos:
kubectl create --namespace arc -f <path to your data controller file>
#Example
kubectl create --namespace arc -f data-controller.yaml
Supervisión del estado de creación
La creación del controlador tardará unos minutos en completarse. Puede supervisar el progreso en otra ventana de terminal con los siguientes comandos:
kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc
También puede comprobar el estado de creación o logs de un pod determinado ejecutando un comando como el siguiente. Esto es especialmente útil para solucionar problemas.
kubectl describe pod/<pod name> --namespace arc
kubectl logs <pod name> --namespace arc
#Example:
#kubectl describe pod/control-2g7bl --namespace arc
#kubectl logs control-2g7b1 --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.