Créer un contrôleur de données activé pour Azure Arc en utilisant des outils Kubernetes

Un contrôleur de données gère les services de données activés pour Azure Arc pour un cluster Kubernetes. Cet article explique comment utiliser des outils Kubernetes pour créer un contrôleur de données.

La création du contrôleur de données se fait selon les grandes étapes suivantes :

  1. Créer l’espace de noms et le service de démarrage
  2. Créer le contrôleur de données

Remarque

Pour plus de simplicité, les étapes ci-dessous supposent que vous êtes administrateur de cluster Kubernetes. Pour les déploiements de production ou les environnements plus sécurisés, il est recommandé de suivre les meilleures pratiques de sécurité de « privilège minimum » lors du déploiement du contrôleur de données en accordant uniquement des autorisations spécifiques aux utilisateurs et aux comptes de service impliqués dans le processus de déploiement.

Consultez la rubrique Utiliser les services de données avec Arc avec des privilèges minimum pour obtenir des instructions détaillées.

Prérequis

Pour obtenir des informations générales, consultez Planifier un déploiement des services de données Azure Arc.

Pour créer le contrôleur de données en utilisant des outils Kubernetes, vous devez avoir installé ces outils. Les exemples de cet article utilisent kubectl, mais des approches similaires peuvent être utilisées avec d’autres outils Kubernetes tels que le tableau de bord Kubernetes, ocou helm si vous êtes familiarisé avec ces outils et Kubernetes yaml/json.

Installer l’outil kubectl

Créer l’espace de noms et le service de démarrage

Le service du programme d’amorçage gère les demandes entrantes pour la création, la modification et la suppression de ressources personnalisées, comme un contrôleur de données.

Enregistrez une copie de bootstrapper-unified.yaml et remplacez l’espace réservé {{NAMESPACE}} dans tous les emplacements du fichier par le nom de l’espace de noms souhaité, par exemple : arc.

Important

Le fichier de modèle bootstrapper-unified.yaml est utilisé par défaut pour extraire l’image de conteneur du programme d’amorçage de Microsoft Container Registry (MCR). Si votre environnement ne peut pas accéder directement à Microsoft Container Registry, vous pouvez effectuer les actions suivantes :

Exécutez la commande suivante pour créer l’espace de noms et le service d’amorçage avec le fichier modifié.

kubectl apply --namespace arc -f bootstrapper-unified.yaml

Vérifiez que le pod du programme d’amorçage est en cours d’exécution à l’aide de la commande suivante.

kubectl get pod --namespace arc -l app=bootstrapper

Si l’état n’est pas En cours d’exécution, exécutez la commande quelques fois jusqu’à ce que l’état soit En cours d’exécution.

Créer le contrôleur de données

Vous êtes maintenant prêt à créer le contrôleur de données lui-même.

Tout d'abord, créez une copie du fichier modèle localement sur votre ordinateur afin de pouvoir modifier certains des paramètres.

Créer les métriques et les tableaux de bord des tableaux de bord d’utilisateur et des mots de passe

Au début du fichier, vous pouvez spécifier un nom d’utilisateur et un mot de passe utilisés pour l’authentification auprès des tableaux de bord des métriques et des journaux en tant qu’administrateur. Choisissez un mot de passe sécurisé et partagez-le uniquement avec ceux qui doivent disposer de ces privilèges.

Une clé secrète Kubernetes est stockée sous la forme d’une chaîne encodée en base64, une pour le nom d’utilisateur et l’autre pour le mot de passe.

Vous pouvez utiliser un outil en ligne pour coder en base64 le nom d’utilisateur et le mot de passe souhaités, ou vous pouvez utiliser des outils d’interface de ligne de commande intégrés en fonction de votre plateforme.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/mac OS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

Créer des certificats pour les journaux et les tableaux de bord de métriques

Si vous le souhaitez, vous pouvez créer des certificats SSL/TLS pour les journaux et les tableaux de bord de métriques. Suivez les instructions indiquées dans la procédure Spécifier les certificats SSL/TLS durant un déploiement des outils natifs Kubernetes.

Modifier la configuration du contrôleur de données

Modifier la configuration du contrôleur de données selon les besoins :

OBLIGATOIRE

  • location : modifiez-le pour qu’il corresponde à l’emplacement Azure dans lequel les métadonnées relatives au contrôleur de données sont stockées. Consultez la liste des régions disponibles.
  • resourceGroup : groupe de ressources Azure dans lequel vous souhaitez créer la ressource Azure Data Controller dans Azure Resource Manager. En général, ce groupe de ressources doit déjà exister, mais il n’est pas nécessaire tant que vous n’avez pas chargé les données vers Azure.
  • subscription : GUID de l’abonnement Azure dans lequel vous souhaitez créer les ressources Azure.

RECOMMANDÉ POUR LA RÉVISION ET ÉVENTUELLEMENT LA MODIFICATION DES VALEURS PAR DÉFAUT

  • storage..className : classe de stockage à utiliser pour les fichiers de données et les fichiers journaux du contrôleur de données. En cas de doute sur les classes de stockage disponibles dans votre cluster Kubernetes, vous pouvez exécuter la commande suivante : kubectl get storageclass. La valeur par défaut est default, ce qui suppose qu'il existe une classe de stockage nommée default et non pas qu’une classe de stockage est utilisée par défaut. Remarque : Il existe deux paramètres className à définir pour la classe de stockage souhaitée, l’un pour les données et l’autre pour les journaux.
  • serviceType : définissez le type de service sur NodePort si vous n’utilisez pas de programme d’équilibrage de charge.
  • Sécurité Pour Azure Red Hat OpenShift ou Red Hat OpenShift Container Platform, remplacez les paramètres security: par les valeurs suivantes dans le fichier YAML du contrôleur de données.
  security:
    allowDumps: false
    allowNodeMetricsCollection: false
    allowPodMetricsCollection: false

FACULTATIF

  • name : le nom par défaut du contrôleur de données est arc, mais vous pouvez le modifier si vous le souhaitez.
  • displayName : affectez-lui la même valeur que l’attribut Name en haut du fichier.
  • logsui-certificate-secret : nom du secret créé sur le cluster Kubernetes pour le certificat de l’interface utilisateur des journaux.
  • metricsui-certificate-secret : nom du secret créé sur le cluster Kubernetes pour le certificat de l’interface utilisateur des métriques.

L’exemple suivant montre un fichier YAML de contrôleur de données terminé.

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.29.0_2024-04-09
    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

enregistrez le fichier modifié sur votre ordinateur local et exécutez la commande suivante pour créer le contrôleur de données :

kubectl create --namespace arc -f <path to your data controller file>

#Example
kubectl create --namespace arc -f data-controller.yaml

Surveillance de l’état de la création

La création du contrôleur prend plusieurs minutes. Vous pouvez superviser la progression dans une autre fenêtre de terminal avec les commandes suivantes :

kubectl get datacontroller --namespace arc
kubectl get pods --namespace arc

Vous pouvez également vérifier l’état de la création ou les journaux de n’importe quel pod en exécutant une commande comme celle qui figure ci-dessous. C’est particulièrement pratique pour résoudre les éventuels problèmes.

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

Résolution des problèmes de création

Si vous rencontrez des problèmes avec la création, consultez le Guide de résolution des problèmes.