Compartir a través de


Configuración alternativa de OneLake para volúmenes perimetrales de ingesta en la nube

En este artículo se describe una configuración alternativa para volúmenes perimetrales de ingesta en la nube (carga de blobs con purga local) para almacenes de lago de datos de OneLake.

Configuración de OneLake para la identidad de extensión

Agregar identidad de extensión al área de trabajo de OneLake

  1. Vaya al portal de OneLake; por ejemplo, https://youraccount.powerbi.com.
  2. Cree o vaya al área de trabajo. Captura de pantalla que muestra la cinta de opciones del área de trabajo en el portal.
  3. Seleccione Administrar acceso. Captura de pantalla que muestra la pantalla para administrar el acceso en el portal.
  4. Seleccione Agregar personas o grupos.
  5. Escriba el nombre de la extensión desde la instalación del Almacenamiento de contenedores de Azure habilitado por Azure Arc. Este nombre debe ser único dentro del inquilino. Captura de pantalla que muestra la pantalla Agregar nombre de extensión.
  6. Cambie la lista desplegable de permisos de Espectador a Colaborador. Captura de pantalla que muestra la pantalla para establecer un colaborador.
  7. Seleccione Agregar.

Creación de una notificación de volumen persistente de ingesta en la nube (PVC)

  1. Cree un nuevo archivo denominado cloudIngestPVC.yaml con el contenido siguiente. Modifique el valor metadata.name con un nombre para la notificación de volumen persistente. Se hace referencia a este nombre en la última línea de deploymentExample.yaml en el paso siguiente. También debe actualizar el valor metadata.namespace con el pod de consumo previsto. Si no tiene un pod de consumo previsto, el valor metadata.namespace es default.

    Nota:

    Use solo letras minúsculas y guiones. Para más información, consulte la documentación de nomenclatura de objetos de 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. Para aplicar cloudIngestPVC.yaml, ejecute:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Adjuntar subvolumen al volumen perimetral

Puede usar el siguiente proceso para crear un subvolumen mediante la identidad de extensión para conectarse a un almacén de lago de datos de OneLake.

  1. Obtenga el nombre del volumen perimetral con el comando siguiente:

    kubectl get edgevolumes
    
  2. Cree un archivo denominado edgeSubvolume.yaml y copie y pegue el siguiente contenido. Las variables siguientes deben actualizarse con su información:

    Nota:

    Use solo letras minúsculas y guiones. Para más información, consulte la documentación de nomenclatura de objetos de Kubernetes.

    • metadata.name: cree un nombre para el subvolumen.
    • spec.edgevolume: este nombre se recuperó del paso anterior mediante kubectl get edgevolumes.
    • spec.path: cree su propio nombre de subdirectorio en la ruta de acceso de montaje. El siguiente ejemplo ya contiene un nombre de ejemplo (exampleSubDir). Si cambia este nombre de ruta de acceso, la línea 33 de deploymentExample.yaml debe actualizarse con el nuevo nombre de ruta de acceso. Si decide cambiar el nombre de la ruta de acceso, no use una barra diagonal precedente.
    • spec.container: detalles del almacén de lago de datos de One Lake (por ejemplo, <WORKSPACE>/<DATA_LAKE>.Datalake/Files).
    • spec.storageaccountendpoint: el punto de conexión de la cuenta de almacenamiento es el prefijo del vínculo web de Power BI. Por ejemplo, si la página de OneLake es https://contoso-motors.powerbi.com/, el punto de conexión es 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. Para aplicar edgeSubvolume.yaml, ejecute:

    kubectl apply -f "edgeSubvolume.yaml"
    

Opcional: modifique ingestPolicy a partir del valor predeterminado

  1. Si desea cambiar ingestPolicy del valor predeterminado edgeingestpolicy-default, cree un archivo denominado myedgeingest-policy.yaml con el siguiente contenido. Las siguientes variables deben actualizarse con sus preferencias:

    Nota:

    Use solo letras minúsculas y guiones. Para obtener más información, consulte la documentación de nomenclatura de objetos de Kubernetes.

    • metadata.name: cree un nombre para su ingestPolicy. Este nombre debe actualizarse y hacer referencia a este en la sección spec.ingestPolicy de edgeSubvolume.yaml.
    • spec.ingest.order: el orden en el que se cargan los archivos con modificaciones. Este es el mejor esfuerzo, no una garantía (el valor predeterminado es oldest-first). Las opciones de pedido son: oldest-first o newest-first.
    • spec.ingest.minDelaySec: el número mínimo de segundos antes de que un archivo con modificaciones sea apto para la ingesta (el valor predeterminado es 60). Este número puede oscilar entre 0 y 31 536 000.
    • spec.eviction.order: cómo se expulsan los archivos (el valor predeterminado es unordered). Las opciones para el orden de expulsión son: unordered o never.
    • spec.eviction.minDelaySec: el número de segundos antes de que un archivo limpio sea apto para la expulsión (el valor predeterminado es 300). Este número puede oscilar entre 0 y 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. Para aplicar myedgeingest-policy.yaml, ejecute:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Asociación de la aplicación (aplicación nativa de Kubernetes)

  1. Para configurar un único pod genérico (aplicación nativa de Kubernetes) en la notificación de volumen persistente (PVC), cree un archivo denominado deploymentExample.yaml con el siguiente contenido. Reemplace los valores de containers.name y volumes.persistentVolumeClaim.claimName por los suyos propios. Si ha actualizado el nombre de la ruta de acceso de edgeSubvolume.yaml, exampleSubDir en la línea 33 debe actualizarse con el nuevo nombre de ruta de acceso.

    Nota:

    Use solo letras minúsculas y guiones. Para más información, consulte la documentación de nomenclatura de objetos de 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. Para aplicar deploymentExample.yaml, ejecute:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Use kubectl get pods para buscar el nombre del pod. Copie este nombre, ya que lo necesitará para el paso siguiente.

    Nota:

    Dado que spec.replicas de deploymentExample.yaml se especificó como 2, aparecen dos pods mediante kubectl get pods. Puede elegir cualquiera de los nombres de pod para usar en el paso siguiente.

  4. Ejecute el siguiente comando y reemplace POD_NAME_HERE por el valor copiado del paso anterior:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Cambie los directorios a la ruta de acceso de montaje /data tal como se especifica en deploymentExample.yaml.

  6. Debería ver un directorio con el nombre que especificó como path en el Paso 2 de la sección Adjuntar subvolumen a un volumen perimetral. Ahora, cd en /YOUR_PATH_NAME_HERE, reemplazando YOUR_PATH_NAME_HERE por sus detalles.

  7. Por ejemplo, cree un archivo denominado file1.txt y escriba en él mediante echo "Hello World" > file1.txt.

  8. En Azure Portal, vaya a la cuenta de almacenamiento y busque el contenedor especificado en el paso 2 de Adjuntar subvolumen a un volumen perimetral. Al seleccionar el contenedor, debería ver file1.txt rellenado dentro del contenedor. Si el archivo no ha aparecido aún, espere aproximadamente 1 minuto; los volúmenes perimetrales esperan un minuto antes de cargarse.

Pasos siguientes

Después de completar estos pasos, comience a supervisar la implementación mediante Azure Monitor y la supervisión de Kubernetes o la supervisión de terceros con Prometheus y Grafana.

Supervisión de la implementación