Compartilhar via


Alternativa: configuração do OneLake para Volumes de Borda de Ingestão de Nuvem

Este artigo descreve uma configuração alternativa para Volumes de Borda de Ingestão de Nuvem (upload de blob com limpeza local) para o OneLake Lakehouses.

Configurar o OneLake para Identidade de Extensão

Adicionar identidade de extensão ao workspace do OneLake

  1. Navegue até o portal do OneLake; por exemplo, https://youraccount.powerbi.com.
  2. Crie ou navegue até o workspace. Captura de tela mostrando a faixa de opções do workspace no portal.
  3. Selecione Gerenciar Acesso. Captura de tela mostrando gerenciar a tela de acesso no portal.
  4. Selecione Adicionar pessoas ou grupos.
  5. Insira o nome da extensão do Armazenamento de Contêineres do Azure habilitado pela instalação do Azure Arc. Esse nome precisa ser exclusivo em seu locatário. Captura de tela mostrando a tela adicionar nome da extensão.
  6. Altere a lista suspensa para permissões do Visualizador para Colaborador. Captura de tela mostrando a tela de colaborador de conjunto.
  7. Selecione Adicionar.

Criar uma declaração de volume persistente de ingestão de nuvem (PVC)

  1. Crie um arquivo chamado cloudIngestPVC.yaml com os conteúdos a seguir. Modifique o valor metadata.name com um nome para sua Declaração de Volume Persistente. Esse nome é referenciado na última linha do deploymentExample.yaml na próxima etapa. Você também deve atualizar o valor metadata.namespace com o pod de consumo pretendido. Se você não tiver um pod de consumo pretendido, o valor de metadata.namespace será default.

    Observação

    Use apenas letras minúsculas e traços. Para obter mais informações, confira a documentação de nomenclatura de objetos do 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, execute:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Anexar um subvolume ao volume de borda

Você pode usar o processo a seguir para criar um subvolume usando a Identidade de Extensão para se conectar ao OneLake LakeHouse.

  1. Obtenha o nome do volume de borda usando o seguinte comando:

    kubectl get edgevolumes
    
  2. Crie um arquivo nomeado edgeSubvolume.yaml e copie/cole o conteúdo a seguir. As seguintes variáveis devem ser atualizadas com suas informações:

    Observação

    Use apenas letras minúsculas e traços. Para obter mais informações, confira a documentação de nomenclatura de objetos do Kubernetes.

    • metadata.name: crie um nome para o seu subvolume.
    • spec.edgevolume: esse nome foi recuperado da etapa anterior usando kubectl get edgevolumes.
    • spec.path: crie seu próprio nome de subdiretório no caminho de montagem. O exemplo a seguir já contém um exemplo de nome (exampleSubDir). Se você alterar esse nome de caminho, a linha 33 em deploymentExample.yaml precisará ser atualizada com o novo nome do caminho. Se você optar por renomear o caminho, não use uma barra precedente.
    • spec.container: detalhes do One Lake Data Lake Lakehouse (por exemplo, <WORKSPACE>/<DATA_LAKE>.Datalake/Files).
    • spec.storageaccountendpoint: o ponto de extremidade da conta de armazenamento é o prefixo do link da Web do Power BI. Por exemplo, se a página do OneLake for https://contoso-motors.powerbi.com/, o ponto de extremidade será 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, execute:

    kubectl apply -f "edgeSubvolume.yaml"
    

Opcional: modificar a ingestPolicy a partir do padrão

  1. Se você quiser alterar o ingestPolicy do padrão edgeingestpolicy-default, crie um arquivo chamado myedgeingest-policy.yaml com o conteúdo a seguir. As seguintes variáveis devem ser atualizadas com suas preferências:

    Observação

    Use apenas letras minúsculas e traços. Para obter mais informações, consulte a documentação de nomenclatura de objeto do Kubernetes.

    • metadata.name: crie um nome para sua ingestPolicy. Esse nome deve ser atualizado e referenciado na seção spec.ingestPolicy do seu edgeSubvolume.yaml.
    • spec.ingest.order: a ordem na qual arquivos sujos são carregados. Esse é o melhor esforço, não uma garantia (padrão para oldest-first). As opções de pedido são: oldest-first ou newest-first.
    • spec.ingest.minDelaySec: o número mínimo de segundos antes de um arquivo sujo ser qualificado para ingestão (padrão é 60). Esse número pode variar entre 0 e 31536000.
    • spec.eviction.order: como os arquivos são removidos (o padrão é unordered). As opções para a ordem de remoção são: unordered ou never.
    • spec.eviction.minDelaySec: o número de segundos antes que um arquivo limpo seja qualificado para remoção (por padrão, é 300). Esse número pode variar entre 0 e 31536000.
    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, execute:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Anexar seu aplicativo (aplicativo nativo do Kubernetes)

  1. Para configurar um único pod genérico (aplicativo nativo do Kubernetes) em relação à declaração de volume persistente (PVC), crie um arquivo chamado deploymentExample.yaml com o seguinte conteúdo. Substitua os valores para containers.name e volumes.persistentVolumeClaim.claimName por seus próprios. Se você atualizou o nome do caminho de edgeSubvolume.yaml, exampleSubDir na linha 33 deverá ser atualizado com seu novo nome de caminho.

    Observação

    Use apenas letras minúsculas e traços. Para obter mais informações, confira a documentação de nomenclatura de objetos do 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, execute:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Use kubectl get pods para localizar o nome do seu pod. Copie esse nome, pois você precisa dele na próxima etapa.

    Observação

    Porque spec.replicas de deploymentExample.yaml foi especificado como 2, dois pods aparecem usando kubectl get pods. Você pode escolher qualquer nome de pod para usar na próxima etapa.

  4. Execute o comando a seguir e substitua POD_NAME_HERE pelo valor copiado da etapa anterior:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Altere os diretórios para o caminho de montagem /data conforme especificado em deploymentExample.yaml.

  6. Você deverá ver um diretório com o nome que você especificou como seu path na Etapa 2 da seção Anexar um subvolume ao volume de borda. Agora, cd em /YOUR_PATH_NAME_HERE, substituindo YOUR_PATH_NAME_HERE por seus detalhes.

  7. Por exemplo, crie um arquivo nomeado file1.txt e escreva nele usando echo "Hello World" > file1.txt.

  8. No portal do Azure, navegue até sua conta de armazenamento e localize o contêiner especificado na etapa 2 da seção Anexar um subvolume ao Volume de Borda. Ao selecionar seu contêiner, você deve encontrar file1.txt preenchido dentro do contêiner. Se o arquivo ainda não tiver aparecido, aguarde aproximadamente 1 minuto; os Volumes de Borda esperam um minuto antes de serem carregados.

Próximas etapas

Depois de concluir essas etapas, comece a monitorar sua implantação usando o Monitoramento do Azure Monitor e do Kubernetes ou o monitoramento de terceiros com o Prometheus e o Grafana.

Monitorar sua implantação