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
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.
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.
- SAS-Authentifizierung (Shared Access Signature)
- Authentifizierung der Verbindungszeichenfolge
- Authentifizierung mit Speicherschlüssel
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:
- Navigieren Sie zum Speicherkonto im Azure-Portal.
- Erweitern Sie auf dem linken Blatt Sicherheit und Netzwerk, und wählen Sie dann die SAS (Shared Access Signature) aus.
- Wählen Sie unter Zulässige Ressourcentypen nacheinander Dienst > Container > Objekt aus.
- Deaktivieren Sie unter Zulässige Berechtigungen die Option Unveränderlicher Speicher und Dauerhaft löschen.
- Wählen Sie unter Datum/Uhrzeit für Start und Ablauf das gewünschte Enddatum und die Uhrzeit aus.
- Wählen Sie dann unten SAS und Verbindungszeichenfolge generieren aus.
- 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
Erstellen Sie eine Datei namens
sas.yaml
mit folgendem Inhalt. Ersetzen Siemetadata::name
,metadata::namespace
undstorageaccountconnectionstring
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
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 BefehlYOUR_NAMESPACE
,YOUR_STORAGE_ACCT_NAME
undYOUR_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
Erstellen Sie eine Datei namens
cloudIngestPVC.yaml
mit folgendem Inhalt. Sie müssen denmetadata::name
-Wert bearbeiten und einen Namen für Ihren persistenten Volumeanspruch (PVC) hinzufügen. Auf diesen Namen wird in der letzten Zeile vondeploymentExample.yaml
im nächsten Schritts verwiesen. Sie müssen außerdem denmetadata::namespace
-Wert mit Ihrem beabsichtigten verbrauchenden Pod aktualisieren. Wenn Sie nicht über einen beabsichtigten, verbrauchenden Pod verfügen, hatmetadata::namespace
den Wertdefault
: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
Führen Sie zum Anwenden von
cloudIngestPVC.yaml
Folgendes aus:kubectl apply -f "cloudIngestPVC.yaml"
Anfügen eines Untervolumes an ein Edgevolume
Rufen Sie den Namen Ihres Edgevolumes mit dem folgenden Befehl ab:
kubectl get edgevolumes
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 mitkubectl 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, mussdeploymentExample.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örensas
,connection_string
undkey
.spec::auth::secretName
: Wenn Sie die Authentifizierung mit Speicherschlüssel verwendet haben, hatsecretName
den Wert{your_storage_account_name}-secret
. Wenn Sie Authentifizierung mit einer Verbindungszeichenfolge oder SAS verwenden, haben SiesecretName
selbst angegeben.spec::auth::secretNamespace
: Dieser Wert entspricht Ihrem beabsichtigten, verbrauchenden Pod oderdefault
.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 denstorageaccountendpoint
-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
Führen Sie zum Anwenden von
edgeSubvolume.yaml
Folgendes aus:kubectl apply -f "edgeSubvolume.yaml"
Optional: Ändern Sie den Standardwert von ingestPolicy
.
Wenn Sie für
ingestPolicy
den Standardwertedgeingestpolicy-default
ändern möchten, erstellen Sie eine Datei namensmyedgeingest-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 DateiedgeSubvolume.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>
Führen Sie zum Anwenden von
myedgeingest-policy.yaml
Folgendes aus:kubectl apply -f "myedgeingest-policy.yaml"
Anfügen Ihrer App (native Kubernetes-Anwendung)
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 Siecontainers::name
undvolumes::persistentVolumeClaim::claimName
durch Ihre eigenen Werte. Wenn Sie den Pfadnamen vonedgeSubvolume.yaml
geändert haben, müssen SieexampleSubDir
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>
Führen Sie zum Anwenden von
deploymentExample.yaml
Folgendes aus:kubectl apply -f "deploymentExample.yaml"
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
vondeploymentExample.yaml
als2
angegeben wurde, werden mitkubectl get pods
zwei Pods angezeigt. Sie können einen der beiden Podnamen für den nächsten Schritt auswählen.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
Wechseln Sie mit
cd
in den Bereitstellungspfad/data
, wie in Ihrer DateideploymentExample.yaml
angegeben.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 mitcd
in/your_path_name_here
, und ersetzen Sieyour_path_name_here
durch Ihre jeweiligen Daten.Erstellen Sie z. B. eine Datei mit dem Namen
file1.txt
, und schreiben Sie darin mithilfe vonecho "Hello World" > file1.txt
.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.