Partager via


Alternative : Configuration OneLake pour Cloud Ingest Edge Volumes

Cet article décrit une configuration alternative pour Cloud Ingest Edge Volumes (chargement d’objets blob avec vidage locale) pour les lakehouses OneLake.

Configurer OneLake pour l’identité d’extension

Ajouter l’identité d’extension à l’espace de travail OneLake

  1. Accédez à votre portail OneLake ; par exemple, https://youraccount.powerbi.com.
  2. Créez ou accédez à votre espace de travail. Capture d’écran montrant le ruban de l’espace de travail dans le portail.
  3. Sélectionnez Gérer l’accès. Capture d’écran montrant l’écran Gérer l’accès dans le portail.
  4. Sélectionnez Ajouter des personnes ou des groupes.
  5. Entrez le nom de votre extension à partir de votre installation Stockage de conteneurs Azure avec Azure Arc. Ce nom doit être unique dans votre tenant (locataire). Capture d’écran montrant l’écran Ajouter un nom d’extension.
  6. Modifiez la liste déroulante des autorisations de Lecteur en Contributeur. Capture d’écran montrant l’écran de définition de contributeur.
  7. Sélectionnez Ajouter.

Créer une revendication de volume persistant (PVC) Cloud Ingest

  1. Créez un fichier nommé cloudIngestPVC.yaml avec le contenu suivant. Remplacez la valeur metadata.name par 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. Vous devez également mettre à jour la valeur metadata.namespace avec votre pod consommateur prévu. Si vous n’avez pas de pod consommateur prévu, la valeur metadata.namespace est default.

    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 nane for your PVC ###
      name: <create-a-pvc-name-here>
      ### Use a namespace that matches 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 en périphérie

Vous pouvez utiliser le processus suivant pour créer un sous-volume à l’aide de l’identité d’extension afin de vous connecter à votre LakeHouse OneLake.

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

    kubectl get edgevolumes
    
  2. Créez un fichier nommé edgeSubvolume.yaml et copiez/collez le contenu suivant. Les variables suivantes doivent être mises à jour 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 : détails de votre lakehouse OneLake (par exemple, <WORKSPACE>/<DATA_LAKE>.Datalake/Files).
    • spec.storageaccountendpoint : votre point de terminaison de compte de stockage est le préfixe de votre lien web Power BI. Par exemple, si votre page OneLake est https://contoso-motors.powerbi.com/, votre point de terminaison est https://contoso-motors.dfs.fabric.microsoft.com.
    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 to be updated. Don't use a preceding slash.
      auth:
        authType: MANAGED_IDENTITY
      storageaccountendpoint: "https://<Your AZ Site>.dfs.fabric.microsoft.com/" # Your AZ site is the root of your Power BI OneLake interface URI, such as https://contoso-motors.powerbi.com
      container: "<WORKSPACE>/<DATA_LAKE>.Datalake/Files" # Details of your One Lake Data Lake Lakehouse
      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 ou 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 : comment les fichiers sont supprimés (la valeur par défaut est unordered). Les options de l’ordre d’éviction sont : unordered ou 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 will need to 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>
    
  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. Remplacez les valeurs de containers.name et volumes.persistentVolumeClaim.claimName par vos propres valeurs. 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.

    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/esaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done"
              volumeMounts:
                ### This name must match the following volumes.name attribute ###
                - 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
                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 l’un ou l’autre nom de pod à utiliser lors de l’étape suivante.

  4. Exécutez la commande suivante et remplacez POD_NAME_HERE par votre valeur copiée de l’étape précédente :

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Changez de répertoire et accédez au chemin d’accès de montage /data, comme spécifié dans votre deploymentExample.yaml.

  6. Vous devez voir un répertoire portant le nom que vous avez spécifié en tant que path à l’étape 2 de la section Attacher un sous-volume à un volume en périphérie. Maintenant, cd dans /YOUR_PATH_NAME_HERE, en remplaçant YOUR_PATH_NAME_HERE par vos détails.

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

  8. Dans le portail Azure, accédez à votre compte de stockage, puis recherchez le conteneur spécifié à l’étape 2 de la section Attacher un sous-volume à un volume en périphérie. 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, commencez à superviser votre déploiement en utilisant Azure Monitor et la supervision Kubernetes, ou une supervision tierce avec Prometheus et Grafana.

Superviser votre déploiement