Configuration de Cloud Ingest Edge Volumes
Cet article décrit la configuration de Cloud Ingest Edge Volumes (chargement d’objets blob avec vidage local).
Qu’est-ce que Cloud Ingest Edge Volumes ?
Cloud Ingest Edge Volumes facilite l’ingestion illimitée des données de la périphérie vers un objet blob, y compris ADLSgen2. Les fichiers écrits dans ce type de stockage sont directement transférés vers le stockage Blob et, une fois que leur téléchargement a été confirmé, ils sont effacés localement. Cette suppression garantit la disponibilité de l’espace pour de nouvelles données. Cette option de stockage prend également en charge l’intégrité des données dans les environnements déconnectés, ce qui permet le stockage local et la synchronisation lors de la reconnexion au réseau.
Par exemple, si vous écrivez un fichier dans votre PVC d’ingestion cloud, un processus exécute une analyse pour rechercher de nouveaux fichiers toutes les minutes. Une fois identifié, le fichier est envoyé pour chargement sur votre destination d’objet blob désignée. Après la confirmation d’un chargement réussi, Cloud Ingest Edge Volumes attend cinq minutes, puis supprime la version locale de votre fichier.
Prérequis
Créez un compte de stockage en suivant les instructions indiquées ici.
Remarque
Quand vous créez votre compte de stockage, il est recommandé de le faire sous le même groupe de ressources et la même région/localisation que votre cluster Kubernetes.
Créez un conteneur dans le compte de stockage créé précédemment en suivant les instructions indiquées ici.
Configurer l’identité d’extension
Edge Volumes permet l’utilisation d’une identité d’extension affectée par le système pour accéder au Stockage Blob. Cette section explique comment utiliser l’identité d’extension affectée par le système pour permettre d’accéder à votre compte de stockage, ce qui vous permet de charger des volumes d’ingestion cloud sur ces systèmes de stockage.
Il est recommandé d’utiliser l’identité d’extension. Si votre destination finale est le Stockage Blob ou ADLSgen2, consultez les instructions suivantes. Si votre destination finale est OneLake, suivez les instructions fournies dans Configurer OneLake pour l’identité d’extension.
Bien que cela ne soit pas recommandé, si vous préférez utiliser l’authentification par clé, suivez les instructions fournies dans Authentification basée sur une clé.
Obtenir l’identité d’extension
Portail Azure
- Accédez à votre cluster connecté à Arc.
- Sélectionnez Extensions.
- Sélectionnez votre extension Stockage de conteneurs Azure activé par Azure Arc.
- Notez l’ID de principal sous Détails de l’extension de cluster.
Configurer le compte Stockage Blob pour l’identité d’extension
Ajouter des autorisations d’identité d’extension à un compte de stockage
- Accédez au compte de stockage dans le Portail Azure.
- Sélectionnez Contrôle d’accès (IAM) .
- Sélectionnez Ajouter + -> Ajouter une attribution de rôle.
- Sélectionnez Propriétaire des données Blob du stockage, puis Suivant.
- Sélectionnez + Sélectionner des membres.
- Pour ajouter votre ID de principal à la liste Membres sélectionnés, collez l’ID et sélectionnez + en regard de l’identité.
- Cliquez sur Sélectionner.
- Pour passer en revue et attribuer des autorisations, sélectionnez Suivant, puis Vérifier + attribuer.
Créer une revendication de volume persistant (PVC) Cloud Ingest
Créez un fichier nommé
cloudIngestPVC.yaml
avec le contenu suivant. Modifiez la lignemetadata.name
et créez un nom pour votre revendication de volume persistant. Ce nom est référencé sur la dernière ligne dedeploymentExample.yaml
à l’étape suivante. Mettez également à jour la valeurmetadata.namespace
avec votre pod consommateur prévu. Si vous n’avez pas de pod consommateur prévu, la valeur demetadata.namespace
estdefault
. Le paramètrespec.resources.requests.storage
détermine la taille du volume persistant. Dans cet exemple, la taille est de 2 Go, mais vous pouvez la modifier pour l’adapter à vos besoins :Remarque
Utilisez uniquement des lettres minuscules et des tirets. Pour plus d’informations, consultez la documentation sur le nommage des objets Kubernetes.
kind: PersistentVolumeClaim apiVersion: v1 metadata: ### Create a name for your PVC ### name: <create-persistent-volume-claim-name-here> ### Use a namespace that matched your intended consuming pod, or "default" ### namespace: <intended-consuming-pod-or-default-here> spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: cloud-backed-sc
Pour appliquer
cloudIngestPVC.yaml
, exécutez :kubectl apply -f "cloudIngestPVC.yaml"
Attacher un sous-volume à un volume Edge
Pour vous connecter au conteneur de votre compte de stockage à l’aide de l’identité d’extension afin de créer un sous-volume, procédez de la manière suivante :
Obtenez le nom de votre volume Edge d’ingestion à l’aide de la commande suivante :
kubectl get edgevolumes
Créez un fichier nommé
edgeSubvolume.yaml
et copiez le contenu suivant. Vous devez mettre à jour ces variables avec vos informations :Remarque
Utilisez uniquement des lettres minuscules et des tirets. Pour plus d’informations, consultez la documentation sur le nommage des objets Kubernetes.
metadata.name
: créez un nom pour votre sous-volume.spec.edgevolume
: ce nom a été récupéré à l’étape précédente à l’aide dekubectl get edgevolumes
.spec.path
: créez votre propre nom de sous-répertoire sous le chemin d’accès de montage. L’exemple suivant contient déjà un exemple de nom (exampleSubDir
). Si vous modifiez ce nom de chemin d’accès, la ligne 33 dansdeploymentExample.yaml
doit être mise à jour avec le nouveau nom du chemin d’accès. Si vous choisissez de renommer le chemin d’accès, n’utilisez pas de barre oblique au début.spec.container
: nom du conteneur dans votre compte de stockage.spec.storageaccountendpoint
: accédez à votre compte de stockage dans le Portail Azure. Dans la page Vue d’ensemble, en haut à droite de l’écran, sélectionnez Vue JSON. Vous trouverez le lienstorageaccountendpoint
sous properties.primaryEndpoints.blob. Copiez l’intégralité du lien (par exemple,https://mytest.blob.core.windows.net/
).
apiVersion: "arccontainerstorage.azure.net/v1" kind: EdgeSubvolume metadata: name: <create-a-subvolume-name-here> spec: edgevolume: <your-edge-volume-name-here> path: exampleSubDir # If you change this path, line 33 in deploymentExample.yaml must be updated. Don't use a preceding slash. auth: authType: MANAGED_IDENTITY storageaccountendpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/" container: <your-blob-storage-account-container-name> ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
Pour appliquer
edgeSubvolume.yaml
, exécutez :kubectl apply -f "edgeSubvolume.yaml"
Facultatif : modifier la valeur par défaut de ingestPolicy
Si vous souhaitez modifier la valeur par défaut (
edgeingestpolicy-default
) deingestPolicy
, créez un fichier nommémyedgeingest-policy.yaml
avec le contenu suivant. Vous devez mettre à jour les variables suivantes avec vos préférences :Remarque
Utilisez uniquement des lettres minuscules et des tirets. Pour plus d’informations, consultez la documentation sur le nommage des objets Kubernetes.
metadata.name
: créez un nom pour votre ingestPolicy. Ce nom doit être mis à jour et référencé dans la sectionspec.ingestPolicy
de votreedgeSubvolume.yaml
.spec.ingest.order
: ordre dans lequel les fichiers à l’intégrité compromise sont chargés. Il s’agit du « meilleur effort », et non d’une garantie (la valeur par défaut est oldest-first). Les options d’ordre sont oldest-first et newest-first.spec.ingest.minDelaySec
: nombre minimal de secondes avant qu’un fichier à l’intégrité compromise soit éligible à l’ingestion (par défaut, 60). Ce nombre peut être compris entre 0 et 31 536 000.spec.eviction.order
: mode d’éviction des fichiers (la valeur par défaut est unordered). Les options d’ordre d’éviction sont unordered et never.spec.eviction.minDelaySec
: nombre de secondes avant qu’un fichier propre soit éligible à l’éviction (la valeur par défaut est 300). Ce nombre peut être compris entre 0 et 31 536 000.
apiVersion: arccontainerstorage.azure.net/v1 kind: EdgeIngestPolicy metadata: name: <create-a-policy-name-here> # This must be updated and referenced in the spec.ingestPolicy section of the edgeSubvolume.yaml spec: ingest: order: <your-ingest-order> minDelaySec: <your-min-delay-sec> eviction: order: <your-eviction-order> minDelaySec: <your-min-delay-sec>
Pour plus d’informations sur ces spécifications, consultez Définir une stratégie d’ingestion.
Pour appliquer
myedgeingest-policy.yaml
, exécutez :kubectl apply -f "myedgeingest-policy.yaml"
Attacher votre application (application native Kubernetes)
Pour configurer un seul pod générique (application native Kubernetes) sur la revendication de volume persistant (PVC), créez un fichier nommé
deploymentExample.yaml
avec le contenu suivant. Modifiez les valeurs decontainers.name
etvolumes.persistentVolumeClaim.claimName
. Si vous avez mis à jour le nom du chemin d’accès à partir deedgeSubvolume.yaml
,exampleSubDir
sur la ligne 33 doit être mis à jour avec le nouveau nom du chemin d’accès. Le paramètrespec.replicas
détermine le nombre de pods de réplica à créer. Dans cet exemple, nous avons choisis de créer 2 pods de réplicas, mais vous pouvez modifier ce nombre pour l’adapter à vos besoins :Remarque
Utilisez uniquement des lettres minuscules et des tirets. Pour plus d’informations, consultez la documentation sur le nommage des objets Kubernetes.
apiVersion: apps/v1 kind: Deployment metadata: name: cloudingestedgevol-deployment ### This must be unique for each deployment you choose to create. spec: replicas: 2 selector: matchLabels: name: wyvern-testclientdeployment template: metadata: name: wyvern-testclientdeployment labels: name: wyvern-testclientdeployment spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - wyvern-testclientdeployment topologyKey: kubernetes.io/hostname containers: ### Specify the container in which to launch the busy box. ### - name: <create-a-container-name-here> image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09 command: - "/bin/sh" - "-c" - "dd if=/dev/urandom of=/data/exampleSubDir/acsaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" volumeMounts: ### This name must match the volumes.name attribute below ### - name: wyvern-volume ### This mountPath is where the PVC is attached to the pod's filesystem ### mountPath: "/data" volumes: ### User-defined 'name' that's used to link the volumeMounts. This name must match volumeMounts.name as previously specified. ### - name: wyvern-volume persistentVolumeClaim: ### This claimName must refer to your PVC metadata.name (Line 5) claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
Pour appliquer
deploymentExample.yaml
, exécutez :kubectl apply -f "deploymentExample.yaml"
Utilisez
kubectl get pods
pour trouver le nom de votre pod. Copiez ce nom, car vous en aurez besoin à l’étape suivante.Remarque
Étant donné que
spec.replicas
dansdeploymentExample.yaml
a été spécifié avec la valeur2
, deux pods apparaissent aveckubectl get pods
. Vous pouvez choisir le nom du pod à utiliser pour l’étape suivante.Exécutez la commande suivante et remplacez
POD_NAME_HERE
par la valeur copiée à l’étape précédente :kubectl exec -it POD_NAME_HERE -- sh
Modifiez les répertoires dans le chemin d’accès de montage
/data
, comme spécifié dans votredeploymentExample.yaml
.À l’étape 2 de la section Attacher un sous-volume à un Edge Volume, vous devriez voir un répertoire portant le nom que vous avez spécifié comme étant votre
path
. Faites passer les répertoires à/YOUR_PATH_NAME_HERE
, en remplaçant la valeur deYOUR_PATH_NAME_HERE
par vos informations.En guise d’exemple, créez un fichier nommé
file1.txt
et écrivez-y avececho "Hello World" > file1.txt
.Dans le Portail Azure, accédez à votre compte de stockage et recherchez le conteneur spécifié à l’étape 2 de la section Attacher un sous-volume à un volume Edge. Lorsque vous sélectionnez votre conteneur, vous devriez constater que
file1.txt
est rempli dans le conteneur. Si le fichier n’est pas encore apparu, attendez environ 1 minute. Les volumes en périphérie mettent une minute avant de se charger.
Étapes suivantes
Une fois ces étapes effectuées, vous pouvez commencer à superviser votre déploiement en utilisant Azure Monitor et Kubernetes Monitoring ou une supervision tierce avec Prometheus et Grafana.