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
- Accédez à votre portail OneLake ; par exemple,
https://youraccount.powerbi.com
. - Créez ou accédez à votre espace de travail.
- Sélectionnez Gérer l’accès.
- Sélectionnez Ajouter des personnes ou des groupes.
- 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).
- Modifiez la liste déroulante des autorisations de Lecteur en Contributeur.
- Sélectionnez Ajouter.
Créer une revendication de volume persistant (PVC) Cloud Ingest
Créez un fichier nommé
cloudIngestPVC.yaml
avec le contenu suivant. Remplacez la valeurmetadata.name
par un nom pour votre revendication de volume persistant. Ce nom est référencé sur la dernière ligne dedeploymentExample.yaml
à l’étape suivante. Vous devez également mettre à jour la valeurmetadata.namespace
avec votre pod consommateur prévu. Si vous n’avez pas de pod consommateur prévu, la valeurmetadata.namespace
estdefault
.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
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.
Obtenez le nom de votre volume Edge à l’aide de la commande suivante :
kubectl get edgevolumes
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 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
: 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 esthttps://contoso-motors.powerbi.com/
, votre point de terminaison esthttps://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
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 votreingestPolicy
. 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 estoldest-first
). Les options d’ordre sont :oldest-first
ounewest-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 estunordered
). Les options de l’ordre d’éviction sont :unordered
ounever
.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>
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. Remplacez les valeurs decontainers.name
etvolumes.persistentVolumeClaim.claimName
par vos propres valeurs. 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.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>
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 l’un ou l’autre nom de pod à utiliser lors de l’étape suivante.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
Changez de répertoire et accédez au chemin d’accès de montage
/data
, comme spécifié dans votredeploymentExample.yaml
.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çantYOUR_PATH_NAME_HERE
par vos détails.En guise d’exemple, créez un fichier nommé
file1.txt
et écrivez-y à l’aide deecho "Hello World" > file1.txt
.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.