Dela via


Alternativ: Nyckelbaserad autentiseringskonfiguration för Cloud Ingest Edge-volymer

Den här artikeln beskriver en alternativ konfiguration för Cloud Ingest Edge-volymer (blobuppladdning med lokal rensning) med nyckelbaserad autentisering.

Den här konfigurationen är ett alternativ för användning med nyckelbaserade autentiseringsmetoder. Du bör granska den rekommenderade konfigurationen med hjälp av systemtilldelade hanterade identiteter i konfigurationen för Cloud Ingest Edge-volymer.

Förutsättningar

  1. Skapa ett lagringskonto enligt dessa instruktioner.

    Kommentar

    När du skapar ett lagringskonto rekommenderar vi att du skapar det under samma resursgrupp och region/plats som ditt Kubernetes-kluster.

  2. Skapa en container i lagringskontot som du skapade i föregående steg, enligt dessa instruktioner.

Skapa en Kubernetes-hemlighet

Edge-volymer stöder följande tre autentiseringsmetoder:

  • Sas-autentisering (signatur för delad åtkomst) (rekommenderas)
  • Autentisering med anslutningssträng
  • Autentisering av lagringsnyckel

När du har slutfört autentiseringen för någon av dessa metoder fortsätter du till avsnittet Create a Cloud Ingest Persistent Volume Claim (PVC).

Skapa en Kubernetes-hemlighet med hjälp av SAS-autentisering (Signatur för delad åtkomst)

Du kan konfigurera SAS-autentisering med YAML och kubectl, eller med hjälp av Azure CLI.

Utför följande procedur för att hitta din storageaccountsas:

  1. Navigera till ditt lagringskonto i Azure-portalen.
  2. Expandera Säkerhet + nätverk på det vänstra bladet och välj sedan Signatur för delad åtkomst.
  3. Under Tillåtna resurstyper väljer du Tjänstcontainerobjekt > >.
  4. Under Tillåtna behörigheter avmarkerar du Oföränderlig lagring och Permanent borttagning.
  5. Under Start- och förfallodatum/-tid väljer du önskat slutdatum och tid.
  6. Längst ned väljer du Generera SAS och anslutningssträng.
  7. Värdena som anges under SAS-token används för variablerna storageaccountsas i nästa avsnitt.

SAS-autentisering (Signatur för delad åtkomst) med YAML och kubectl

  1. Skapa en fil med namnet sas.yaml med följande innehåll. Ersätt metadata::name, metadata::namespace och storageaccountconnectionstring med dina egna värden.

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    apiVersion: v1
    kind: Secret
    metadata:
      ### This name should look similar to "kharrisStorageAccount-secret" where "kharrisStorageAccount" is replaced with your storage account name
      name: <your-storage-acct-name-secret>
      # Use a namespace that matches your intended consuming pod, or "default" 
      namespace: <your-intended-consuming-pod-or-default>
    stringData:
      authType: SAS
      # Container level SAS (must have ? prefixed)
      storageaccountsas: "?..."
    type: Opaque
    
  2. Om du vill tillämpa sas.yamlkör du:

    kubectl apply -f "sas.yaml"
    

SAS-autentisering (Signatur för delad åtkomst) med CLI

  • Om du vill begränsa SAS-autentiseringen på containernivå använder du följande kommandon. Du måste uppdatera YOUR_CONTAINER_NAME från det första kommandot och YOUR_NAMESPACE, YOUR_STORAGE_ACCT_NAMEoch YOUR_SECRET från det andra kommandot:

    az storage container generate-sas [OPTIONAL auth via --connection-string "..."] --name YOUR_CONTAINER_NAME --permissions acdrw --expiry '2025-02-02T01:01:01Z'
    kubectl create secret generic -n "YOUR_NAMESPACE" "YOUR_STORAGE_ACCT_NAME"-secret --from-literal=storageaccountsas="YOUR_SAS" 
    

Skapa ett cloud Ingest Persistent Volume Claim (PVC)

  1. Skapa en fil med namnet cloudIngestPVC.yaml med följande innehåll. Du måste redigera värdet metadata::name och lägga till ett namn för ditt beständiga volymanspråk. Det här namnet refereras till på den sista raden deploymentExample.yaml i i nästa steg. Du måste också uppdatera metadata::namespace värdet med din avsedda förbrukningspodd. Om du inte har en avsedd förbrukningspodd metadata::namespace är defaultvärdet :

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      ### Create a name for the PVC ###
      name: <your-storage-acct-name-secret>
      ### Use a namespace that matches your intended consuming pod, or "default" ###
      namespace: <your-intended-consuming-pod-or-default>
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 2Gi
      storageClassName: cloud-backed-sc
    
  2. Om du vill tillämpa cloudIngestPVC.yamlkör du:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Koppla undervolym till Edge-volym

  1. Hämta namnet på din Edge-volym med hjälp av följande kommando:

    kubectl get edgevolumes
    
  2. Skapa en fil med namnet edgeSubvolume.yaml och kopiera följande innehåll. Uppdatera variablerna med din information:

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    • metadata::name: Skapa ett namn för undervolymen.
    • spec::edgevolume: Det här namnet hämtades från föregående steg med hjälp av kubectl get edgevolumes.
    • spec::path: Skapa ett eget underkatalognamn under monteringssökvägen. Observera att följande exempel redan innehåller ett exempelnamn (exampleSubDir). Om du ändrar det här sökvägsnamnet måste rad 33 i deploymentExample.yaml uppdateras med det nya sökvägsnamnet. Om du väljer att byta namn på sökvägen ska du inte använda ett föregående snedstreck.
    • spec::auth::authType: Beror på vilken autentiseringsmetod du använde i föregående steg. Godkända indata inkluderar sas, connection_stringoch key.
    • spec::auth::secretName: Om du använde autentisering med lagringsnyckeln är {your_storage_account_name}-secretdin secretName . Om du använde anslutningssträng- eller SAS-autentisering har du secretName angett det.
    • spec::auth::secretNamespace: Matchar din avsedda förbrukande podd eller default.
    • spec::container: Containernamnet i ditt lagringskonto.
    • spec::storageaccountendpoint: Gå till ditt lagringskonto i Azure Portal. På sidan Översikt väljer du JSON-vy längst upp till höger på skärmen. Du hittar länken storageaccountendpoint under properties::p rimaryEndpoints::blob. Kopiera hela länken (till exempel 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
        secretName: <your-secret-name>
        secretNamespace: <your_namespace>
      storageaccountendpoint: <your_storage_account_endpoint>
      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 du vill tillämpa edgeSubvolume.yamlkör du:

    kubectl apply -f "edgeSubvolume.yaml"
    

Valfritt: Ändra ingestPolicy från standardvärdet

  1. Om du vill ändra ingestPolicy från standardvärdet edgeingestpolicy-defaultskapar du en fil med namnet myedgeingest-policy.yaml med följande innehåll. Uppdatera följande variabler med dina inställningar.

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    • metadata::name: Skapa ett namn för din ingestPolicy. Det här namnet måste uppdateras och refereras till i avsnittet spec::ingestPolicy i .edgeSubvolume.yaml
    • spec::ingest::order: I vilken ordning smutsiga filer laddas upp. Det här är bästa ansträngningen, inte en garanti (standardvärdet är äldsta-först). Alternativ för beställning är: äldsta eller nyaste först.
    • spec::ingest::minDelaySec: Det minsta antalet sekunder innan en smutsig fil är berättigad till inmatning (standardvärdet är 60). Det här talet kan vara mellan 0 och 31536000.
    • spec::eviction::order: Hur filer tas bort (standardvärdet är oordnad). Alternativ för borttagningsordning är: osorterade eller aldrig.
    • spec::eviction::minDelaySec: Antalet sekunder innan en ren fil är berättigad till borttagning (standardvärdet är 300). Det här talet kan vara mellan 0 och 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. Om du vill tillämpa myedgeingest-policy.yamlkör du:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Bifoga din app (kubernetes-inbyggt program)

  1. Om du vill konfigurera en allmän enskild podd (kubernetes-inbyggt program) mot PVC (Persistent Volume Claim) skapar du en fil med namnet deploymentExample.yaml med följande innehåll. Ersätt containers::name och volumes::persistentVolumeClaim::claimName med dina värden. Om du har uppdaterat sökvägsnamnet från edgeSubvolume.yamlexampleSubDir måste rad 33 uppdateras med det nya sökvägsnamnet.

    Kommentar

    Använd endast gemener och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cloudingestedgevol-deployment ### This will need to be unique for every volume 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 will be attached to the pod's filesystem ###
                  mountPath: "/data"
          volumes:
             ### User-defined 'name' that is 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. Om du vill tillämpa deploymentExample.yamlkör du:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Använd kubectl get pods för att hitta namnet på din podd. Kopiera det här namnet; du använder den i nästa steg.

    Kommentar

    Eftersom spec::replicas från deploymentExample.yaml har angetts som 2visas två poddar med .kubectl get pods Du kan välja vilket poddnamn som ska användas för nästa steg.

  4. Kör följande kommando och ersätt POD_NAME_HERE med det kopierade värdet från det senaste steget:

    kubectl exec -it pod_name_here -- sh
    
  5. Ändra kataloger (cd) till monteringssökvägen enligt beskrivningen /data i din deploymentExample.yaml.

  6. Du bör se en katalog med det namn som du angav som i path steg 2 i avsnittet Koppla undervolym till Edge-volym . cd Gå nu till /your_path_name_hereoch ersätt your_path_name_here med dina respektive uppgifter.

  7. Skapa till exempel en fil med namnet file1.txt och skriv till den med hjälp av echo "Hello World" > file1.txt.

  8. I Azure Portal går du till ditt lagringskonto och letar reda på containern som angetts från steg 2 i Koppla undervolym till Edge-volym. När du väljer din container bör du se file1.txt ifylld i containern. Om filen ännu inte har dykt upp väntar du ungefär 1 minut. Edge-volymer väntar en minut innan de laddas upp.

Nästa steg

När du har slutfört de här stegen börjar du övervaka distributionen med Azure Monitor och Kubernetes Monitoring, eller övervakning från tredje part med Prometheus och Grafana.

Övervaka distributionen