Alternativa: configuração OneLake para Cloud Ingest Edge Volumes
Este artigo descreve uma configuração alternativa para Cloud Ingest Edge Volumes (carregamento de blob com limpeza local) para OneLake Lakehouses.
Configurar o OneLake para identidade de extensão
Adicionar identidade de extensão ao espaço de trabalho do OneLake
- Navegue até o portal OneLake; por exemplo,
https://youraccount.powerbi.com
. - Crie ou navegue até o seu espaço de trabalho.
- Selecione Gerenciar acesso.
- Selecione Adicionar pessoas ou grupos.
- Insira o nome da extensão do Armazenamento de Contêiner do Azure habilitado pela instalação do Azure Arc. Esse nome deve ser exclusivo dentro do seu locatário.
- Altere a lista suspensa de permissões de Visualizador para Colaborador.
- Selecione Adicionar.
Criar uma declaração de volume persistente (PVC) de ingestão de nuvem
Crie um arquivo nomeado
cloudIngestPVC.yaml
com o seguinte conteúdo. Modifique ometadata.name
valor com um nome para sua Declaração de Volume Persistente. Esse nome é referenciado na última linha dadeploymentExample.yaml
próxima etapa. Você também deve atualizar o valor com ometadata.namespace
pod de consumo pretendido. Se você não tem um pod de consumo pretendido, ometadata.namespace
valor édefault
.Nota
Use apenas letras minúsculas e traços. Para obter mais informações, consulte a documentação de nomeação 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 se candidatar
cloudIngestPVC.yaml
, execute:kubectl apply -f "cloudIngestPVC.yaml"
Anexar 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 à sua OneLake LakeHouse.
Obtenha o nome do seu Volume de Borda usando o seguinte comando:
kubectl get edgevolumes
Crie um arquivo chamado
edgeSubvolume.yaml
e copie/cole o conteúdo a seguir. As seguintes variáveis devem ser atualizadas com suas informações:Nota
Use apenas letras minúsculas e traços. Para obter mais informações, consulte a documentação de nomeação de objetos do Kubernetes.
metadata.name
: Crie um nome para o subvolume.spec.edgevolume
: Este nome foi recuperado da etapa anterior usandokubectl get edgevolumes
.spec.path
: Crie seu próprio nome de subdiretório sob o caminho de montagem. O exemplo a seguir já contém um nome de exemplo (exampleSubDir
). Se você alterar esse nome de caminho, a linha 33 emdeploymentExample.yaml
deverá ser atualizada com o novo nome de caminho. Se você optar por renomear o caminho, não use uma barra anterior.spec.container
: Detalhes do seu One Lake Data Lake Lakehouse (por exemplo,<WORKSPACE>/<DATA_LAKE>.Datalake/Files
).spec.storageaccountendpoint
: Seu ponto de extremidade da conta de armazenamento é o prefixo do seu link da Web do Power BI. Por exemplo, se sua página do OneLake forhttps://contoso-motors.powerbi.com/
, seu 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 se candidatar
edgeSubvolume.yaml
, execute:kubectl apply -f "edgeSubvolume.yaml"
Opcional: Modificar o ingestPolicy
a partir do padrão
Se você quiser alterar o
ingestPolicy
do padrãoedgeingestpolicy-default
, crie um arquivo nomeadomyedgeingest-policy.yaml
com o seguinte conteúdo. As seguintes variáveis devem ser atualizadas com as suas preferências:Nota
Use apenas letras minúsculas e traços. Para obter mais informações, consulte a documentação de nomeação de objetos do Kubernetes.
metadata.name
: Crie um nome para o seuingestPolicy
. Este nome deve ser atualizado e referenciadospec.ingestPolicy
na seção do seuedgeSubvolume.yaml
.spec.ingest.order
: A ordem em que os arquivos sujos são carregados. Este é o melhor esforço, não uma garantia (inadimplência paraoldest-first
). As opções de encomenda são:oldest-first
ounewest-first
.spec.ingest.minDelaySec
: O número mínimo de segundos antes de um arquivo sujo é elegível para ingestão (o padrão é 60). Este 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 despejo são:unordered
ounever
.spec.eviction.minDelaySec
: O número de segundos antes de um arquivo limpo ser elegível para remoção (o padrão é 300). Este 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 se candidatar
myedgeingest-policy.yaml
, execute:kubectl apply -f "myedgeingest-policy.yaml"
Anexe seu aplicativo (aplicativo nativo do Kubernetes)
Para configurar um pod único genérico (aplicativo nativo do Kubernetes) em relação à Declaração de Volume Persistente (PVC), crie um arquivo nomeado
deploymentExample.yaml
com o seguinte conteúdo. Substitua os valores paracontainers.name
evolumes.persistentVolumeClaim.claimName
pelos seus. Se você atualizou o nome do caminho de ,exampleSubDir
na linha 33 deve ser atualizado com seu novo nome deedgeSubvolume.yaml
caminho.Nota
Use apenas letras minúsculas e traços. Para obter mais informações, consulte a documentação de nomeação 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 se candidatar
deploymentExample.yaml
, execute:kubectl apply -f "deploymentExample.yaml"
Use
kubectl get pods
para encontrar o nome do seu pod. Copie este nome, conforme necessário na próxima etapa.Nota
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 seguinte comando e substitua
POD_NAME_HERE
pelo valor copiado da etapa anterior:kubectl exec -it POD_NAME_HERE -- sh
Altere os diretórios para o
/data
caminho de montagem conforme especificado emdeploymentExample.yaml
.Você verá um diretório com o nome especificado como seu
path
na Etapa 2 da seção Anexar subvolume ao Volume de Borda. Agora,cd
em/YOUR_PATH_NAME_HERE
, substituindoYOUR_PATH_NAME_HERE
por seus detalhes.Como exemplo, crie um arquivo chamado
file1.txt
e grave nele usandoecho "Hello World" > file1.txt
o .No portal do Azure, navegue até sua conta de armazenamento e localize o contêiner especificado na etapa 2 de Anexar subvolume ao Volume de Borda. Ao selecionar seu contêiner, você deve encontrar
file1.txt
preenchido dentro do contêiner. Se o ficheiro ainda não tiver aparecido, aguarde aproximadamente 1 minuto; O Edge Volumes aguarda um minuto antes de carregar.
Próximos passos
Depois de concluir essas etapas, comece a monitorar sua implantação usando o Azure Monitor e o Kubernetes Monitoring, ou o monitoramento de terceiros com o Prometheus e o Grafana.