Delen via


Configuratie van Cloud Ingest Edge Volumes

Dit artikel beschrijft de configuratie van Cloud Ingest Edge Volumes (blob upload met lokale opschoning).

Wat zijn Cloud Ingest Edge Volumes?

Cloud Ingest Edge Volumes vergemakkelijkt onbeperkte data-opname van edge naar blob-opslag, inclusief ADLSgen2. Bestanden die naar dit opslagtype worden geschreven, worden naadloos overgebracht naar blob-opslag en zodra de upload is bevestigd, worden ze vervolgens lokaal verwijderd. Deze verwijdering zorgt ervoor dat er ruimte beschikbaar is voor nieuwe gegevens. Bovendien ondersteunt deze opslagoptie gegevensintegriteit in omgevingen zonder verbinding, waardoor lokale opslag en synchronisatie na heraansluiting op het netwerk mogelijk zijn.

Bijvoorbeeld, je kunt een bestand naar je cloud-ingestie-PVC schrijven, en een proces voert elke minuut een scan uit om te controleren op nieuwe bestanden. Zodra het bestand is geïdentificeerd, wordt het verzonden voor uploaden naar uw aangewezen blob-bestemming. Na bevestiging van een succesvolle upload wacht Cloud Ingest Edge Volume vijf minuten en verwijdert vervolgens de lokale versie van uw bestand.

Vereiste voorwaarden

  1. Maak een opslagaccount volgens de instructies hier.

    Opmerking

    Wanneer je je opslagaccount aanmaakt, is het aanbevolen om deze te creëren onder dezelfde resourcegroep en regio/locatie als je Kubernetes-cluster.

  2. Maak een container aan in de opslagaccount die je eerder hebt gemaakt, volg de instructies hier.

Extensie-identiteit configureren

Edge Volumes maakt het mogelijk om een systeem-toegewezen extensie-identiteit te gebruiken voor toegang tot blobopslag. In dit gedeelte wordt beschreven hoe u de systeemtoegewezen extensie-identiteit gebruikt om toegang te verlenen tot uw opslagaccount, zodat u cloud-ingevolumes naar deze opslagsystemen kunt uploaden.

Het wordt aanbevolen dat u Extension Identity gebruikt. Als je eindbestemming blob-opslag of ADLSgen2 is, zie dan de volgende instructies. Als uw eindbestemming OneLake is, volg dan de instructies in OneLake configureren voor Extension Identity.

Hoewel dit niet wordt aanbevolen, volgt u de instructies in verificatie op basis van sleutels als u liever gebruikmaakt van verificatie op basis van sleutels.

Verkrijg extensie-identiteit

Azure Portal

  1. Navigeer naar uw Arc-ingeschakelde cluster.
  2. Kies Extensies.
  3. Selecteer uw Azure Container Storage ingeschakeld door Azure Arc-extensie.
  4. Noteer de principal-id onder Details van clusterextensie.

Configureer blobopslagaccount voor Extensie-identiteit

Machtigingen voor extensie-identiteit toevoegen aan een opslagaccount

  1. Navigeer naar opslagaccount in de Azure portal.
  2. Selecteer Toegangsbeheer (IAM).
  3. Selecteer Toevoegen+ -> Rol toewijzen.
  4. Kies Storage Blob Data Owner en selecteer daarna Next.
  5. Selecteer +Leden selecteren.
  6. Om uw hoofdid aan de Geselecteerde leden: lijst toe te voegen, plak de ID en selecteer + naast de identiteit.
  7. Klik op Selecteren.
  8. Als u machtigingen wilt controleren en toewijzen, selecteert u Volgende en selecteert u Beoordelen en toewijzen.

Maak een Cloud Ingest Persistent Volume Claim (PVC)

  1. Maak een bestand met de naam cloudIngestPVC.yaml met de volgende inhoud. Bewerk de metadata.name regel en maak een naam voor uw permanente volumeclaim. Deze naam wordt genoemd op de laatste regel van deploymentExample.yaml in de volgende stap. Werk ook de metadata.namespace-waarde bij met de beoogde verbruikspod. Als u geen beoogde pod hebt, is de metadata.namespacedefault-waarde. De spec.resources.requests.storage-parameter bepaalt de grootte van het persistent volume. Het is 2 GB in dit voorbeeld, maar kan worden aangepast aan uw behoeften.

    Opmerking

    Gebruik alleen kleine letters en streepjes. Voor meer informatie, zie de documentatie over het benoemen van Kubernetes-objecten.

    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. Om cloudIngestPVC.yaml toe te passen, voert u het volgende uit:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Verbind subvolume met Edge Volume

nl-NL: Om een subvolume te maken met behulp van de extensie-identiteit om verbinding te maken met uw opslagaccountcontainer, volgt u het volgende proces:

  1. Krijg de naam van uw Ingest Edge Volume met behulp van de volgende opdracht:

    kubectl get edgevolumes
    
  2. Maak een bestand met de naam edgeSubvolume.yaml en kopieer de volgende inhoud. Deze variabelen moeten worden bijgewerkt met jouw informatie:

    Opmerking

    Gebruik alleen kleine letters en streepjes. Voor meer informatie, zie de documentatie over het benoemen van Kubernetes-objecten.

    • metadata.name: Maak een naam voor uw subvolume.
    • spec.edgevolume: Deze naam is opgehaald uit de vorige stap met behulp van kubectl get edgevolumes.
    • spec.path: Maak uw eigen subdirectory naam aan onder het mountpad. Het volgende voorbeeld bevat al een voorbeeldnaam (exampleSubDir). Als u deze padnaam wijzigt, moet regel 33 in deploymentExample.yaml worden bijgewerkt met de nieuwe padnaam. Als u ervoor kiest om het pad te hernoemen, gebruik dan geen voorafgaande schuine streep.
    • spec.container: De containernaam in uw opslagaccount.
    • spec.storageaccountendpoint: Navigeer naar uw opslagaccount in de Azure-portal. Op de Overzicht pagina, selecteer JSON-weergave rechtsboven in het scherm. Je kunt de storageaccountendpoint link vinden onder properties.primaryEndpoints.blob. Kopieer de hele link; bijvoorbeeld, 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.
      subvolumeType: INGEST 
      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. Om edgeSubvolume.yaml toe te passen, voert u het volgende uit:

    kubectl apply -f "edgeSubvolume.yaml"
    

Optioneel: Wijzig de ingestPolicy van de standaardinstelling

  1. Als u de ingestPolicy wilt wijzigen van de standaard edgeingestpolicy-default, maak dan een bestand genaamd myedgeingest-policy.yaml met de volgende inhoud. De volgende variabelen moeten worden bijgewerkt met uw voorkeuren:

    Opmerking

    Gebruik alleen kleine letters en streepjes. Voor meer informatie, zie de documentatie over het benoemen van Kubernetes-objecten.

    • metadata.name: Geef een naam aan uw ingestPolicy. Deze naam moet worden bijgewerkt en opgenomen in de spec.ingestPolicy sectie van uw edgeSubvolume.yaml.
    • spec.ingest.order: De volgorde waarin vuile bestanden worden geüpload. Dit is het beste wat we kunnen doen, geen garantie (standaard oudste eerst). Opties voor volgorde zijn: oudste-eerst of nieuwste-eerst.
    • spec.ingest.minDelaySec: Het minimum aantal seconden voordat een gewijzigd bestand in aanmerking komt voor opname (standaard is 60). Dit getal kan variëren tussen 0 en 31536000.
    • spec.eviction.order: Hoe bestanden worden verwijderd (standaard naar ongeordend). Opties voor ontruimingsvolgorde zijn: unordered of never.
    • spec.eviction.minDelaySec: Het aantal seconden voordat een schoon bestand in aanmerking komt voor verwijdering (standaard ingesteld op 300). Dit getal kan variëren tussen 0 en 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>
    

    Zie Opnamebeleid instellen voor meer informatie over deze specificaties.

  2. Om myedgeingest-policy.yaml toe te passen, voert u het volgende uit:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Bevestig je app (Kubernetes-native applicatie)

  1. Om een generieke enkele pod (native Kubernetes-applicatie) te configureren tegen de Persistent Volume Claim (PVC), maakt u een bestand genaamd deploymentExample.yaml met de volgende inhoud. Wijzig de containers.name- en volumes.persistentVolumeClaim.claimName-waarden. Als je de padnaam hebt bijgewerkt vanaf edgeSubvolume.yaml, moet exampleSubDir op regel 33 worden bijgewerkt met je nieuwe padnaam. De spec.replicas-parameter bepaalt het aantal replica-pods dat moet worden aangemaakt. Het is 2 in dit voorbeeld, maar kan worden aangepast aan uw behoeften:

    Opmerking

    Gebruik alleen kleine letters en streepjes. Voor meer informatie, zie de documentatie over het benoemen van Kubernetes-objecten.

    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. Om deploymentExample.yaml toe te passen, voert u het volgende uit:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Gebruik kubectl get pods om de naam van uw pod te vinden. Kopieer deze naam voor gebruik in de volgende stap.

    Opmerking

    Omdat spec.replicas van deploymentExample.yaml is opgegeven als 2, worden twee pods weergegeven met behulp van kubectl get pods. Je kunt een van beide pod-namen kiezen voor de volgende stap.

  4. Voer het volgende commando uit en vervang POD_NAME_HERE door de gekopieerde waarde uit de laatste stap:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Verander de directory naar het /data-mountpad zoals gespecificeerd in uw deploymentExample.yaml.

  6. U zou een directory moeten zien met de naam die u hebt opgegeven als uw path in Stap 2 van de sectie Subvolume koppelen aan Edge Volume. Wijzig mappen in /YOUR_PATH_NAME_HERE, waarbij u de YOUR_PATH_NAME_HERE waarde vervangt door uw gegevens.

  7. Als voorbeeld, maak een bestand aan met de naam file1.txt en schrijf erin met behulp van echo "Hello World" > file1.txt.

  8. In de Azure-portal navigeer je naar je opslagaccount en vind je de container die is gespecificeerd in stap 2 van Subvolume koppelen aan Edge Volume. Wanneer u uw container selecteert, moet u file1.txt gevuld vinden binnen de container. Als het bestand nog niet is verschenen, wacht dan ongeveer 1 minuut; Edge Volumes wacht een minuut voordat het gaat uploaden.

Volgende stappen

Nadat je deze stappen hebt voltooid, kun je beginnen met het monitoren van je implementatie met behulp van Azure Monitor en Kubernetes Monitoring of monitoring door derden met Prometheus en Grafana.

Controleer uw implementatie