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 :
- Créer l’espace de noms et le service de démarrage
- 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, oc
ou helm
si vous êtes familiarisé avec ces outils et Kubernetes yaml/json.
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 :
- Suivez les étapes pour extraire les images de conteneur de Microsoft Container Registry et les transmettre à un registre de conteneurs privé.
- Créez un secret d’extraction d’image nommé
arc-private-registry
pour votre registre de conteneurs privé. - Changez l’URL de l’image du programme d’amorçage dans le fichier bootstrap.yaml.
- Remplacez
arc-private-registry
dans le fichier bootstrap.yaml si un autre nom a été utilisé pour le secret d’extraction d’image.
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 estdefault
, ce qui suppose qu'il existe une classe de stockage nomméedefault
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.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
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.