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
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.
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).
- Sas-autentisering (signatur för delad åtkomst)
- Autentisering av anslutningssträng
- Autentisering av lagringsnyckel
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
:
- Navigera till ditt lagringskonto i Azure-portalen.
- Expandera Säkerhet + nätverk på det vänstra bladet och välj sedan Signatur för delad åtkomst.
- Under Tillåtna resurstyper väljer du Tjänstcontainerobjekt > >.
- Under Tillåtna behörigheter avmarkerar du Oföränderlig lagring och Permanent borttagning.
- Under Start- och förfallodatum/-tid väljer du önskat slutdatum och tid.
- Längst ned väljer du Generera SAS och anslutningssträng.
- 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
Skapa en fil med namnet
sas.yaml
med följande innehåll. Ersättmetadata::name
,metadata::namespace
ochstorageaccountconnectionstring
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
Om du vill tillämpa
sas.yaml
kö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 ochYOUR_NAMESPACE
,YOUR_STORAGE_ACCT_NAME
ochYOUR_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)
Skapa en fil med namnet
cloudIngestPVC.yaml
med följande innehåll. Du måste redigera värdetmetadata::name
och lägga till ett namn för ditt beständiga volymanspråk. Det här namnet refereras till på den sista radendeploymentExample.yaml
i i nästa steg. Du måste också uppdaterametadata::namespace
värdet med din avsedda förbrukningspodd. Om du inte har en avsedd förbrukningspoddmetadata::namespace
ärdefault
vä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
Om du vill tillämpa
cloudIngestPVC.yaml
kör du:kubectl apply -f "cloudIngestPVC.yaml"
Koppla undervolym till Edge-volym
Hämta namnet på din Edge-volym med hjälp av följande kommando:
kubectl get edgevolumes
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 avkubectl 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 ideploymentExample.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 inkluderarsas
,connection_string
ochkey
.spec::auth::secretName
: Om du använde autentisering med lagringsnyckeln är{your_storage_account_name}-secret
dinsecretName
. Om du använde anslutningssträng- eller SAS-autentisering har dusecretName
angett det.spec::auth::secretNamespace
: Matchar din avsedda förbrukande podd ellerdefault
.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änkenstorageaccountendpoint
under properties::p rimaryEndpoints::blob. Kopiera hela länken (till exempelhttps://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
Om du vill tillämpa
edgeSubvolume.yaml
kör du:kubectl apply -f "edgeSubvolume.yaml"
Valfritt: Ändra ingestPolicy
från standardvärdet
Om du vill ändra
ingestPolicy
från standardvärdetedgeingestpolicy-default
skapar du en fil med namnetmyedgeingest-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>
Om du vill tillämpa
myedgeingest-policy.yaml
kör du:kubectl apply -f "myedgeingest-policy.yaml"
Bifoga din app (kubernetes-inbyggt program)
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ättcontainers::name
ochvolumes::persistentVolumeClaim::claimName
med dina värden. Om du har uppdaterat sökvägsnamnet frånedgeSubvolume.yaml
exampleSubDir
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>
Om du vill tillämpa
deploymentExample.yaml
kör du:kubectl apply -f "deploymentExample.yaml"
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åndeploymentExample.yaml
har angetts som2
visas två poddar med .kubectl get pods
Du kan välja vilket poddnamn som ska användas för nästa steg.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
Ändra kataloger (
cd
) till monteringssökvägen enligt beskrivningen/data
i dindeploymentExample.yaml
.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_here
och ersättyour_path_name_here
med dina respektive uppgifter.Skapa till exempel en fil med namnet
file1.txt
och skriv till den med hjälp avecho "Hello World" > file1.txt
.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.