Partager via


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

  1. 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.

  2. 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

  1. Accédez à votre cluster connecté à Arc.
  2. Sélectionnez Extensions.
  3. Sélectionnez votre extension Stockage de conteneurs Azure activé par Azure Arc.
  4. 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

  1. Accédez au compte de stockage dans le Portail Azure.
  2. Sélectionnez Contrôle d’accès (IAM) .
  3. Sélectionnez Ajouter + -> Ajouter une attribution de rôle.
  4. Sélectionnez Propriétaire des données Blob du stockage, puis Suivant.
  5. Sélectionnez + Sélectionner des membres.
  6. Pour ajouter votre ID de principal à la liste Membres sélectionnés, collez l’ID et sélectionnez + en regard de l’identité.
  7. Cliquez sur Sélectionner.
  8. 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

  1. Créez un fichier nommé cloudIngestPVC.yaml avec le contenu suivant. Modifiez la ligne metadata.name et créez un nom pour votre revendication de volume persistant. Ce nom est référencé sur la dernière ligne de deploymentExample.yaml à l’étape suivante. Mettez également à jour la valeur metadata.namespace avec votre pod consommateur prévu. Si vous n’avez pas de pod consommateur prévu, la valeur de metadata.namespace est default. Le paramètre spec.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
    
  2. 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 :

  1. Obtenez le nom de votre volume Edge d’ingestion à l’aide de la commande suivante :

    kubectl get edgevolumes
    
  2. 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 de kubectl 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 dans deploymentExample.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 lien storageaccountendpoint 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
    
  3. Pour appliquer edgeSubvolume.yaml, exécutez :

    kubectl apply -f "edgeSubvolume.yaml"
    

Facultatif : modifier la valeur par défaut de ingestPolicy

  1. Si vous souhaitez modifier la valeur par défaut (edgeingestpolicy-default) de ingestPolicy, 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 section spec.ingestPolicy de votre edgeSubvolume.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.

  2. Pour appliquer myedgeingest-policy.yaml, exécutez :

    kubectl apply -f "myedgeingest-policy.yaml"
    

Attacher votre application (application native Kubernetes)

  1. 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 de containers.name et volumes.persistentVolumeClaim.claimName . Si vous avez mis à jour le nom du chemin d’accès à partir de edgeSubvolume.yaml, exampleSubDir sur la ligne 33 doit être mis à jour avec le nouveau nom du chemin d’accès. Le paramètre spec.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>
    
  2. Pour appliquer deploymentExample.yaml, exécutez :

    kubectl apply -f "deploymentExample.yaml"
    
  3. 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 dans deploymentExample.yaml a été spécifié avec la valeur 2, deux pods apparaissent avec kubectl get pods. Vous pouvez choisir le nom du pod à utiliser pour l’étape suivante.

  4. 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
    
  5. Modifiez les répertoires dans le chemin d’accès de montage /data, comme spécifié dans votre deploymentExample.yaml.

  6. À 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 de YOUR_PATH_NAME_HERE par vos informations.

  7. En guise d’exemple, créez un fichier nommé file1.txt et écrivez-y avec echo "Hello World" > file1.txt.

  8. 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.

Surveiller votre déploiement