Partilhar via


Configuração do Cloud Ingest Edge Volumes

Este artigo descreve a configuração para Cloud Ingest Edge Volumes (carregamento de blob com limpeza local).

O que é Cloud Ingest Edge Volumes?

O Cloud Ingest Edge Volumes facilita a ingestão ilimitada de dados da borda ao blob, incluindo o ADLSgen2. Os arquivos gravados nesse tipo de armazenamento são transferidos diretamente para o armazenamento de blob e, uma vez confirmado o upload, são limpos localmente. Essa remoção garante disponibilidade de espaço para novos dados. Além disso, essa opção de armazenamento suporta a integridade dos dados em ambientes desconectados, o que permite o armazenamento local e a sincronização após a reconexão com a rede.

Por exemplo, você pode gravar um arquivo em sua nuvem ingerir PVC, e um processo executa uma varredura para verificar novos arquivos a cada minuto. Uma vez identificado, o arquivo é enviado para upload para o seu destino de blob designado. Após a confirmação de um carregamento bem-sucedido, o Cloud Ingest Edge Volume aguarda cinco minutos e, em seguida, exclui a versão local do seu arquivo.

Pré-requisitos

  1. Crie uma conta de armazenamento seguindo as instruções aqui.

    Nota

    Ao criar sua conta de armazenamento, é recomendável criá-la no mesmo grupo de recursos e região/local que o cluster do Kubernetes.

  2. Crie um contêiner na conta de armazenamento que você criou anteriormente, seguindo as instruções aqui.

Configurar identidade de extensão

Os Volumes de Borda permitem o uso de uma identidade de extensão atribuída pelo sistema para acesso ao armazenamento de blobs. Esta seção descreve como usar a identidade de extensão atribuída ao sistema para conceder acesso à sua conta de armazenamento, permitindo que você carregue volumes de ingestão de nuvem para esses sistemas de armazenamento.

É recomendável usar a Identidade de Extensão. Se o seu destino final for o armazenamento de blob ou ADLSgen2, consulte as instruções a seguir. Se o seu destino final for OneLake, siga as instruções em Configurar o OneLake para identidade de extensão.

Embora não seja recomendado, se preferir usar a autenticação baseada em chave, siga as instruções em Autenticação baseada em chave.

Obter identidade de extensão

Portal do Azure

  1. Navegue até o cluster conectado ao Arc.
  2. Selecione Extensões.
  3. Selecione seu Armazenamento de Contêiner do Azure habilitado pela extensão Azure Arc.
  4. Observe a ID Principal em Detalhes da Extensão de Cluster.

Configurar conta de armazenamento de blob para Identidade de Extensão

Adicionar permissões de Identidade de Extensão a uma conta de armazenamento

  1. Navegue até a conta de armazenamento no portal do Azure.
  2. Selecione Controlo de Acesso (IAM).
  3. Selecione Adicionar+ -> Adicionar atribuição de função.
  4. Selecione Proprietário de Dados de Blob de Armazenamento e, em seguida, selecione Avançar.
  5. Selecione +Selecionar membros.
  6. Para adicionar seu ID principal à lista Membros selecionados: , cole o ID e selecione + ao lado da identidade.
  7. Clique em Selecionar.
  8. Para rever e atribuir permissões, selecione Seguinte e, em seguida, selecione Rever + Atribuir.

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

  1. Crie um arquivo nomeado cloudIngestPVC.yaml com o seguinte conteúdo. Edite a metadata.name linha e crie um nome para sua Declaração de Volume Persistente. Esse nome é referenciado na última linha da deploymentExample.yaml próxima etapa. Além disso, atualize o valor com o metadata.namespace pod de consumo pretendido. Se você não tem um pod de consumo pretendido, o metadata.namespace valor é default. O spec.resources.requests.storage parâmetro determina o tamanho do volume persistente. É de 2 GB neste exemplo, mas pode ser modificado para atender às suas necessidades:

    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 name for your PVC ###
      name: <create-persistent-volume-claim-name-here>
      ### Use a namespace that matched 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 se candidatar cloudIngestPVC.yaml, execute:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Anexar subvolume ao Volume de Borda

Para criar um subvolume usando a identidade de extensão para se conectar ao contêiner da conta de armazenamento, use o seguinte processo:

  1. Obtenha o nome do seu Volume de Borda de Ingestão usando o seguinte comando:

    kubectl get edgevolumes
    
  2. Crie um arquivo chamado edgeSubvolume.yaml e copie o conteúdo a seguir. Estas variáveis devem ser atualizadas com as 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 usando kubectl 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 em deploymentExample.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: O nome do contêiner em sua conta de armazenamento.
    • spec.storageaccountendpoint: Navegue até sua conta de armazenamento no portal do Azure. Na página Visão geral, perto do canto superior direito da tela, selecione Exibição JSON. Você pode encontrar o storageaccountendpoint link em properties.primaryEndpoints.blob. Copie o link inteiro; por exemplo, https://mytest.blob.core.windows.net/.
    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 be updated. Don't use a preceding slash.
      auth:
        authType: MANAGED_IDENTITY
      storageaccountendpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/"
      container: <your-blob-storage-account-container-name>
      ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
    
  3. Para se candidatar edgeSubvolume.yaml, execute:

    kubectl apply -f "edgeSubvolume.yaml"
    

Opcional: Modificar o ingestPolicy a partir do padrão

  1. Se você quiser alterar o ingestPolicy do padrão edgeingestpolicy-default, crie um arquivo nomeado myedgeingest-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 a sua ingestPolicy. Este nome deve ser atualizado e referenciado spec.ingestPolicy na seção do seu edgeSubvolume.yaml.
    • spec.ingest.order: A ordem em que os arquivos sujos são carregados. Este é o melhor esforço, não uma garantia (padrão para o mais antigo primeiro). As opções de encomenda são: mais antigo-primeiro ou mais novo-primeiro.
    • 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 é não ordenado). As opções para ordem de despejo são: não ordenada ou nunca.
    • 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 must 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 obter mais informações sobre essas especificações, consulte Definir política de ingestão.

  2. Para se candidatar myedgeingest-policy.yaml, execute:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Anexe seu aplicativo (aplicativo nativo do Kubernetes)

  1. 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. Modifique os containers.name valores e volumes.persistentVolumeClaim.claimName . Se você atualizou o nome do caminho de , exampleSubDir na linha 33 deve ser atualizado com seu novo nome de edgeSubvolume.yamlcaminho. O spec.replicas parâmetro determina o número de pods de réplica a serem criados. É 2 neste exemplo, mas pode ser modificado para atender às suas necessidades:

    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/acsaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done"
              volumeMounts:
                ### This name must match the volumes.name attribute below ###
                - 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 (Line 5)
                claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
    
  2. Para se candidatar deploymentExample.yaml, execute:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Use kubectl get pods para encontrar o nome do seu pod. Copie esse nome para usar na próxima etapa.

    Nota

    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 seguinte comando e substitua POD_NAME_HERE pelo valor copiado da última etapa:

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

  6. Você verá um diretório com o nome especificado como seu path na Etapa 2 da seção Anexar subvolume ao Volume de Borda. Altere os diretórios para /YOUR_PATH_NAME_HERE, substituindo o YOUR_PATH_NAME_HERE valor pelos seus detalhes.

  7. Como exemplo, crie um arquivo chamado file1.txt e grave nele usando echo "Hello World" > file1.txto .

  8. 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, você pode começar a monitorar sua implantação usando o Azure Monitor e o Kubernetes Monitoring ou o monitoramento de terceiros com Prometheus e Grafana.

Monitore sua implantação