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
- Navegue até o portal do OneLake; por exemplo,
https://youraccount.powerbi.com
. - Crie ou navegue até o workspace.
- Selecione Gerenciar Acesso.
- Selecione Adicionar pessoas ou grupos.
- 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.
- Altere a lista suspensa para permissões do Visualizador para Colaborador.
- Selecione Adicionar.
Criar uma declaração de volume persistente de ingestão de nuvem (PVC)
Crie um arquivo chamado
cloudIngestPVC.yaml
com os conteúdos a seguir. Modifique o valormetadata.name
com um nome para sua Declaração de Volume Persistente. Esse nome é referenciado na última linha dodeploymentExample.yaml
na próxima etapa. Você também deve atualizar o valormetadata.namespace
com o pod de consumo pretendido. Se você não tiver um pod de consumo pretendido, o valor demetadata.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
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.
Obtenha o nome do volume de borda usando o seguinte comando:
kubectl get edgevolumes
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 usandokubectl 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 emdeploymentExample.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 forhttps://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
Para aplicar
edgeSubvolume.yaml
, execute:kubectl apply -f "edgeSubvolume.yaml"
Opcional: modificar a ingestPolicy
a partir do padrão
Se você quiser alterar o
ingestPolicy
do padrãoedgeingestpolicy-default
, crie um arquivo chamadomyedgeingest-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 suaingestPolicy
. Esse nome deve ser atualizado e referenciado na seçãospec.ingestPolicy
do seuedgeSubvolume.yaml
.spec.ingest.order
: a ordem na qual arquivos sujos são carregados. Esse é o melhor esforço, não uma garantia (padrão paraoldest-first
). As opções de pedido são:oldest-first
ounewest-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
ounever
.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>
Para aplicar
myedgeingest-policy.yaml
, execute:kubectl apply -f "myedgeingest-policy.yaml"
Anexar seu aplicativo (aplicativo nativo do Kubernetes)
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 paracontainers.name
evolumes.persistentVolumeClaim.claimName
por seus próprios. Se você atualizou o nome do caminho deedgeSubvolume.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>
Para aplicar
deploymentExample.yaml
, execute:kubectl apply -f "deploymentExample.yaml"
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
dedeploymentExample.yaml
foi especificado como2
, dois pods aparecem usandokubectl get pods
. Você pode escolher qualquer nome de pod para usar na próxima etapa.Execute o comando a seguir e substitua
POD_NAME_HERE
pelo valor copiado da etapa anterior:kubectl exec -it POD_NAME_HERE -- sh
Altere os diretórios para o caminho de montagem
/data
conforme especificado emdeploymentExample.yaml
.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
, substituindoYOUR_PATH_NAME_HERE
por seus detalhes.Por exemplo, crie um arquivo nomeado
file1.txt
e escreva nele usandoecho "Hello World" > file1.txt
.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.