Alternatywna: Konfiguracja uwierzytelniania oparta na kluczach dla woluminów brzegowych pozyskiwania w chmurze
W tym artykule opisano alternatywną konfigurację woluminów usługi Cloud Ingest Edge (przekazywanie obiektów blob z lokalnym przeczyszczeniem) przy użyciu uwierzytelniania opartego na kluczach.
Ta konfiguracja jest alternatywną opcją do użycia z metodami uwierzytelniania opartymi na kluczach. Zapoznaj się z zalecaną konfiguracją przy użyciu tożsamości zarządzanych przypisanych przez system w konfiguracji woluminów brzegowych pozyskiwania chmury.
Wymagania wstępne
Utwórz konto magazynu zgodnie z tymi instrukcjami.
Uwaga
Podczas tworzenia konta magazynu zaleca się utworzenie go w tej samej grupie zasobów i regionie/lokalizacji co klaster Kubernetes.
Utwórz kontener na koncie magazynu utworzonym w poprzednim kroku, postępując zgodnie z tymi instrukcjami.
Tworzenie wpisu tajnego platformy Kubernetes
Woluminy brzegowe obsługują następujące trzy metody uwierzytelniania:
- Uwierzytelnianie sygnatury dostępu współdzielonego (zalecane)
- Uwierzytelnianie parametrów połączenia
- Uwierzytelnianie klucza magazynu
Po zakończeniu uwierzytelniania dla jednej z tych metod przejdź do sekcji Tworzenie trwałego oświadczenia woluminu pozyskiwania chmury (PVC).
- Uwierzytelnianie sygnatury dostępu współdzielonego (SAS)
- Uwierzytelnianie parametrów połączenia
- Uwierzytelnianie klucza magazynu
Tworzenie wpisu tajnego kubernetes przy użyciu uwierzytelniania sygnatury dostępu współdzielonego (SAS)
Uwierzytelnianie sygnatury dostępu współdzielonego można skonfigurować przy użyciu języków YAML i kubectl
, lub przy użyciu interfejsu wiersza polecenia platformy Azure.
Aby znaleźć element storageaccountsas
, wykonaj następującą procedurę:
- W witrynie Azure Portal przejdź do swojego konta magazynu.
- Rozwiń węzeł Zabezpieczenia i sieć w bloku po lewej stronie, a następnie wybierz pozycję Sygnatura dostępu współdzielonego.
- W obszarze Dozwolone typy zasobów wybierz pozycję Obiekt kontenera > usługi>.
- W obszarze Dozwolone uprawnienia usuń zaznaczenie niezmiennego magazynu i trwałego usuwania.
- W obszarze Data/godzina rozpoczęcia i wygaśnięcia wybierz żądaną datę i godzinę zakończenia.
- W dolnej części wybierz pozycję Generuj sygnaturę dostępu współdzielonego i parametry połączenia.
- Wartości wymienione w obszarze tokenu SAS są używane dla
storageaccountsas
zmiennych w następnej sekcji.
Uwierzytelnianie sygnatury dostępu współdzielonego (SAS) przy użyciu języka YAML i kubectl
Utwórz plik o nazwie z
sas.yaml
następującą zawartością. Zastąp wartościmetadata::name
,metadata::namespace
istorageaccountconnectionstring
własnymi.Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
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
Aby zastosować
sas.yaml
polecenie , uruchom polecenie:kubectl apply -f "sas.yaml"
Uwierzytelnianie sygnatury dostępu współdzielonego (SAS) przy użyciu interfejsu wiersza polecenia
Jeśli chcesz ograniczyć zakres uwierzytelniania sas na poziomie kontenera, użyj następujących poleceń. Należy zaktualizować
YOUR_CONTAINER_NAME
z pierwszego polecenia iYOUR_NAMESPACE
,YOUR_STORAGE_ACCT_NAME
iYOUR_SECRET
z drugiego polecenia: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"
Tworzenie oświadczenia trwałego woluminu pozyskiwania w chmurze (PVC)
Utwórz plik o nazwie z
cloudIngestPVC.yaml
następującą zawartością. Musisz edytowaćmetadata::name
wartość i dodać nazwę trwałego oświadczenia woluminu. Ta nazwa jest przywołyowana w ostatnim wierszudeploymentExample.yaml
w następnym kroku. Należy również zaktualizowaćmetadata::namespace
wartość za pomocą przeznaczonego zasobnika zużywania. Jeśli nie masz zamierzonego zasobnika zużywanego,metadata::namespace
wartość todefault
:Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
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
Aby zastosować
cloudIngestPVC.yaml
polecenie , uruchom polecenie:kubectl apply -f "cloudIngestPVC.yaml"
Dołączanie woluminu podrzędnego do woluminu brzegowego
Pobierz nazwę woluminu usługi Edge przy użyciu następującego polecenia:
kubectl get edgevolumes
Utwórz plik o nazwie
edgeSubvolume.yaml
i skopiuj następującą zawartość. Zaktualizuj zmienne przy użyciu informacji:Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
metadata::name
: Utwórz nazwę pod woluminu podrzędnego.spec::edgevolume
: Ta nazwa została pobrana z poprzedniego kroku przy użyciu poleceniakubectl get edgevolumes
.spec::path
: Utwórz własną nazwę podkatalogu pod ścieżką instalacji. Zwróć uwagę, że poniższy przykład zawiera już przykładową nazwę (exampleSubDir
). Jeśli zmienisz tę nazwę ścieżki, wiersz 33 wdeploymentExample.yaml
pliku musi zostać zaktualizowany o nową nazwę ścieżki. Jeśli zdecydujesz się zmienić nazwę ścieżki, nie używaj poprzedniego ukośnika.spec::auth::authType
: zależy od metody uwierzytelniania użytej w poprzednich krokach. Zaakceptowane dane wejściowe obejmująsas
,connection_string
ikey
.spec::auth::secretName
: Jeśli użyto uwierzytelniania za pomocą klucza magazynu, twójsecretName
element to{your_storage_account_name}-secret
. Jeśli użyto parametry połączenia lub uwierzytelniania sygnatury dostępu współdzielonego,secretName
użytkownik został określony przez Ciebie.spec::auth::secretNamespace
: pasuje do zamierzonego zasobnika zużywania lubdefault
.spec::container
: nazwa kontenera na koncie magazynu.spec::storageaccountendpoint
: przejdź do konta magazynu w witrynie Azure Portal. Na stronie Przegląd w prawym górnym rogu ekranu wybierz pozycję Widok JSON. Link można znaleźćstorageaccountendpoint
w obszarze properties::p rimaryEndpoints::blob. Skopiuj cały link (na przykładhttps://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
Aby zastosować
edgeSubvolume.yaml
polecenie , uruchom polecenie:kubectl apply -f "edgeSubvolume.yaml"
Opcjonalnie: zmodyfikuj element ingestPolicy
z domyślnego
Jeśli chcesz zmienić wartość z
ingestPolicy
domyślnejedgeingestpolicy-default
, utwórz plik o nazwie zmyedgeingest-policy.yaml
następującą zawartością. Zaktualizuj następujące zmienne przy użyciu preferencji.Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
metadata::name
: Utwórz nazwę elementu ingestPolicy. Ta nazwa musi zostać zaktualizowana i odwołana w sekcji spec::ingestPolicy elementuedgeSubvolume.yaml
.spec::ingest::order
: kolejność przekazywania zanieczyszczonych plików. Jest to najlepsze rozwiązanie, a nie gwarancja (domyślnie jest to wartość domyślna najstarszego pierwszego). Opcje kolejności to: pierwszy lub najnowszy.spec::ingest::minDelaySec
: minimalna liczba sekund, po których zanieczyszczony plik kwalifikuje się do pozyskiwania (wartość domyślna to 60). Ta liczba może mieścić się w zakresie od 0 do 31536000.spec::eviction::order
: jak pliki są eksmitowane (domyślnie nieurządkowane). Opcje kolejności eksmisji to: nieurządkowane lub nigdy.spec::eviction::minDelaySec
: liczba sekund, po których czysty plik kwalifikuje się do eksmisji (wartość domyślna to 300). Ta liczba może mieścić się w zakresie od 0 do 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>
Aby zastosować
myedgeingest-policy.yaml
polecenie , uruchom polecenie:kubectl apply -f "myedgeingest-policy.yaml"
Dołączanie aplikacji (aplikacja natywna Kubernetes)
Aby skonfigurować ogólny pojedynczy zasobnik (aplikacja natywna Kubernetes) względem oświadczenia trwałego woluminu (PVC), utwórz plik o nazwie
deploymentExample.yaml
z następującą zawartością. Zastąpcontainers::name
wartości ivolumes::persistentVolumeClaim::claimName
wartościami. W przypadku zaktualizowania nazwy ścieżki zedgeSubvolume.yaml
wierszaexampleSubDir
33 należy zaktualizować przy użyciu nowej nazwy ścieżki.Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
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>
Aby zastosować
deploymentExample.yaml
polecenie , uruchom polecenie:kubectl apply -f "deploymentExample.yaml"
Użyj polecenia
kubectl get pods
, aby znaleźć nazwę zasobnika. Skopiuj tę nazwę; użyjesz go w następnym kroku.Uwaga
Ponieważ
spec::replicas
parametr zdeploymentExample.yaml
został określony jako2
, zostaną wyświetlone dwa zasobniki używające poleceniakubectl get pods
. Możesz wybrać nazwę zasobnika do użycia w następnym kroku.Uruchom następujące polecenie i zastąp
POD_NAME_HERE
wartość skopiowaną z ostatniego kroku:kubectl exec -it pod_name_here -- sh
Zmień katalogi (
cd
) na ścieżkę/data
instalacji, jak określono w plikudeploymentExample.yaml
.Powinien zostać wyświetlony katalog o nazwie określonej w
path
kroku 2 sekcji Dołączanie pod woluminu do woluminu usługi Edge. Teraz wcd
pliku i/your_path_name_here
zastąpyour_path_name_here
element odpowiednimi szczegółami.Na przykład utwórz plik o nazwie
file1.txt
i zapisz go przy użyciu poleceniaecho "Hello World" > file1.txt
.W witrynie Azure Portal przejdź do konta magazynu i znajdź kontener określony w kroku 2 sekcji Dołączanie pod woluminu do woluminu usługi Edge. Po wybraniu kontenera powinno zostać
file1.txt
wyświetlone wypełnienie w kontenerze. Jeśli plik nie został jeszcze wyświetlony, zaczekaj około 1 minutę; Woluminy brzegowe czekają minutę przed przekazaniem.
Następne kroki
Po wykonaniu tych kroków rozpocznij monitorowanie wdrożenia przy użyciu usług Azure Monitor i Kubernetes Monitoring lub monitorowania innych firm przy użyciu rozwiązań Prometheus i Grafana.