Freigeben über


Alternative: Schlüsselbasierte Authentifizierungskonfiguration für Edgevolumes für die Clouderfassung

In diesem Artikel wird eine alternative Konfiguration für Edgevolumes für die Clouderfassung (Blobupload mit lokaler Bereinigung) mit schlüsselbasierter Authentifizierung beschrieben.

Diese Konfiguration stellt eine Alternative für die Verwendung mit schlüsselbasierten Authentifizierungsmethoden dar. Sehen Sie sich auch die empfohlene Konfiguration mithilfe von systemseitig zugewiesenen verwalteten Identitäten unter Konfigurieren von Edgevolumes für die Clouderfassung.

Voraussetzungen

  1. Erstellen Sie ein Speicherkontos, indem Sie diese Anweisungen befolgen.

    Hinweis

    Wenn Sie Ihr Speicherkonto erstellen, sollten Sie es unter derselben Ressourcengruppe und in derselben Region bzw. am selben Standort wie Ihr Kubernetes-Cluster erstellen.

  2. Erstellen Sie einen Container in dem Speicherkonto, das Sie im vorherigen Schritt erstellt haben, indem Sie diese Anweisungen befolgen.

Erstellen eines Kubernetes-Geheimnisses

Bei Edgevolumes werden die folgenden drei Authentifizierungsmethoden unterstützt:

  • SAS-Authentifizierung (Shared Access Signature) – empfohlen
  • Authentifizierung mit Verbindungszeichenfolge
  • Authentifizierung mit Speicherschlüssel

Nachdem Sie die Authentifizierung mit einer dieser Methoden abgeschlossen haben, fahren Sie mit dem Abschnitt Erstellen eines PVC (Persistent Volume Claim) für die Clouderfassung fort.

Erstellen eines Kubernetes-Geheimnisses mithilfe der SAS-Authentifizierung (Shared Access Signature)

Sie können die SAS-Authentifizierung mithilfe von YAML und kubectl oder mithilfe der Azure-Befehlszeilenschnittstelle konfigurieren.

Suchen Sie Ihre storageaccountsas, und gehen Sie wie folgt vor:

  1. Navigieren Sie zum Speicherkonto im Azure-Portal.
  2. Erweitern Sie auf dem linken Blatt Sicherheit und Netzwerk, und wählen Sie dann die SAS (Shared Access Signature) aus.
  3. Wählen Sie unter Zulässige Ressourcentypen nacheinander Dienst > Container > Objekt aus.
  4. Deaktivieren Sie unter Zulässige Berechtigungen die Option Unveränderlicher Speicher und Dauerhaft löschen.
  5. Wählen Sie unter Datum/Uhrzeit für Start und Ablauf das gewünschte Enddatum und die Uhrzeit aus.
  6. Wählen Sie dann unten SAS und Verbindungszeichenfolge generieren aus.
  7. Die unter SAS-Token aufgeführten Werte werden für die storageaccountsas-Variablen im nächsten Abschnitt verwendet.

SAS-Authentifizierung (Shared Access Signature) mit YAML und kubectl

  1. Erstellen Sie eine Datei namens sas.yaml mit folgendem Inhalt. Ersetzen Sie metadata::name, metadata::namespace und storageaccountconnectionstring durch Ihre eigenen Werte.

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    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. Führen Sie zum Anwenden von sas.yaml Folgendes aus:

    kubectl apply -f "sas.yaml"
    

SAS-Authentifizierung (Shared Access Signature) mithilfe der Befehlszeilenschnittstelle

  • Wenn Sie die SAS-Authentifizierung auf Containerebene einschränken möchten, verwenden Sie die folgenden Befehle. Sie müssen im ersten Befehl YOUR_CONTAINER_NAME und im zweiten Befehl YOUR_NAMESPACE, YOUR_STORAGE_ACCT_NAME und YOUR_SECRET aktualisieren:

    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" 
    

Erstellen eines persistenten Volumenanspruchs (Persistent Volume Claim, PVC) für die Clouderfassung

  1. Erstellen Sie eine Datei namens cloudIngestPVC.yaml mit folgendem Inhalt. Sie müssen den metadata::name-Wert bearbeiten und einen Namen für Ihren persistenten Volumeanspruch (PVC) hinzufügen. Auf diesen Namen wird in der letzten Zeile von deploymentExample.yaml im nächsten Schritts verwiesen. Sie müssen außerdem den metadata::namespace-Wert mit Ihrem beabsichtigten verbrauchenden Pod aktualisieren. Wenn Sie nicht über einen beabsichtigten, verbrauchenden Pod verfügen, hat metadata::namespace den Wert default:

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    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. Führen Sie zum Anwenden von cloudIngestPVC.yaml Folgendes aus:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Anfügen eines Untervolumes an ein Edgevolume

  1. Rufen Sie den Namen Ihres Edgevolumes mit dem folgenden Befehl ab:

    kubectl get edgevolumes
    
  2. Erstellen Sie eine Datei namens edgeSubvolume.yaml, und kopieren Sie den folgenden Inhalt. Aktualisieren Sie die Variablen mit Ihren Informationen:

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    • metadata::name: Legen Sie einen Namen für Ihr Untervolume fest.
    • spec::edgevolume: Dieser Name wurde im vorherigen Schritt mit kubectl get edgevolumes abgerufen.
    • spec::path: Erstellen Sie einen eigenen Unterverzeichnisnamen unter dem Bereitstellungspfad. Beachten Sie, dass das folgende Beispiel bereits einen Beispielnamen (exampleSubDir) enthält. Wenn Sie diesen Pfadnamen ändern, muss deploymentExample.yaml in Zeile 33 mit dem neuen Pfadnamen aktualisiert werden. Wenn Sie den Pfad umbenennen möchten, verwenden Sie keinen vorangestellten Schrägstrich.
    • spec::auth::authType: Der Wert hängt davon ab, welche Authentifizierungsmethode Sie in den vorherigen Schritten verwendet haben. Zu den akzeptierten Eingaben gehören sas, connection_string und key.
    • spec::auth::secretName: Wenn Sie die Authentifizierung mit Speicherschlüssel verwendet haben, hat secretName den Wert {your_storage_account_name}-secret. Wenn Sie Authentifizierung mit einer Verbindungszeichenfolge oder SAS verwenden, haben Sie secretName selbst angegeben.
    • spec::auth::secretNamespace: Dieser Wert entspricht Ihrem beabsichtigten, verbrauchenden Pod oder default.
    • spec::container: Der Containername in Ihrem Speicherkonto.
    • spec::storageaccountendpoint: Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto. Wählen Sie auf der Seite Übersicht rechts oben auf dem Bildschirm JSON-Ansicht aus. Sie finden den storageaccountendpoint-Link unter properties::primaryEndpoints::blob. Kopieren Sie den gesamten Link (z. B. 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. Führen Sie zum Anwenden von edgeSubvolume.yaml Folgendes aus:

    kubectl apply -f "edgeSubvolume.yaml"
    

Optional: Ändern Sie den Standardwert von ingestPolicy.

  1. Wenn Sie für ingestPolicy den Standardwert edgeingestpolicy-default ändern möchten, erstellen Sie eine Datei namens myedgeingest-policy.yaml mit folgendem Inhalt. Aktualisieren Sie die folgenden Variablen mit Ihren Werten.

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    • metadata::name: Legen Sie einen Namen für Ihre ingestPolicy fest. Dieser Name muss im Abschnitt „spec::ingestPolicy“ Ihrer Datei edgeSubvolume.yaml aktualisiert und referenziert werden.
    • spec::ingest::order: Reihenfolge, in der geänderte Dateien hochgeladen werden. Dies ist ein Versuch, keine Garantie (Standardwert oldest-first). Optionen für die Reihenfolge: oldest-first oder newest-first.
    • spec::ingest::minDelaySec: Mindestanzahl von Sekunden, bevor eine geänderte Datei erfasst werden kann (Standardwert 60). Diese Zahl kann zwischen 0 und 31.536.000 liegen.
    • spec::eviction::order: Reihenfolge für die Dateibereinigung (Standardwert unordered). Optionen für die Bereinigungsreihenfolge: unordered oder never.
    • spec::eviction::minDelaySec: Anzahl der Sekunden, bevor eine abgeglichene Datei bereinigt werden darf (Standardwert 300). Diese Zahl kann zwischen 0 und 31.536.000 liegen.
    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. Führen Sie zum Anwenden von myedgeingest-policy.yaml Folgendes aus:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Anfügen Ihrer App (native Kubernetes-Anwendung)

  1. Erstellen Sie zum Konfigurieren eines generischen einzelnen Pods (native Kubernetes-Anwendung) für den persistenten Volumeanspruch (PVC) eine Datei mit dem Namen deploymentExample.yaml und folgendem Inhalt. Ersetzen Sie containers::name und volumes::persistentVolumeClaim::claimName durch Ihre eigenen Werte. Wenn Sie den Pfadnamen von edgeSubvolume.yaml geändert haben, müssen Sie exampleSubDir in Zeile 33 mit dem neuen Pfadnamen aktualisieren.

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    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. Führen Sie zum Anwenden von deploymentExample.yaml Folgendes aus:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Verwenden Sie kubectl get pods, um den Namen Ihres Pods zu finden. Kopieren Sie diesen Namen, Sie verwenden ihn im nächsten Schritt.

    Hinweis

    Da spec::replicas von deploymentExample.yaml als 2 angegeben wurde, werden mit kubectl get pods zwei Pods angezeigt. Sie können einen der beiden Podnamen für den nächsten Schritt auswählen.

  4. Führen Sie den folgenden Befehl aus, und ersetzen Sie POD_NAME_HERE durch den im vorherigen Schritt kopierten Wert:

    kubectl exec -it pod_name_here -- sh
    
  5. Wechseln Sie mit cd in den Bereitstellungspfad /data, wie in Ihrer Datei deploymentExample.yaml angegeben.

  6. Es sollte ein Verzeichnis mit dem Namen angezeigt werden, den Sie in Schritt 2 im Abschnitt Anfügen eines Untervolumes an ein Edgevolume in path angegeben haben. Wechseln Sie jetzt mit cd in /your_path_name_here, und ersetzen Sie your_path_name_here durch Ihre jeweiligen Daten.

  7. Erstellen Sie z. B. eine Datei mit dem Namen file1.txt, und schreiben Sie darin mithilfe von echo "Hello World" > file1.txt.

  8. Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto, und suchen Sie den Container aus Schritt 2 im Abschnitt Anfügen eines Untervolumes an ein Edgevolume. Wenn Sie Ihren Container auswählen, sollte file1.txt im Container ausgefüllt werden. Wenn die Datei noch nicht angezeigt wurde, warten Sie ungefähr 1 Minute – die Wartezeit von Edgevolumes beim Upload.

Nächste Schritte

Nachdem Sie diese Schritte ausgeführt haben, beginnen Sie mit der Überwachung Ihrer Bereitstellung mit Azure Monitor und Kubernetes Monitoring oder einer Überwachung von Drittanbietern mit Prometheus und Grafana.

Überwachen der Bereitstellung