Udostępnij za pośrednictwem


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

  1. 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.

  2. 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).

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ę:

  1. W witrynie Azure Portal przejdź do swojego konta magazynu.
  2. Rozwiń węzeł Zabezpieczenia i sieć w bloku po lewej stronie, a następnie wybierz pozycję Sygnatura dostępu współdzielonego.
  3. W obszarze Dozwolone typy zasobów wybierz pozycję Obiekt kontenera > usługi>.
  4. W obszarze Dozwolone uprawnienia usuń zaznaczenie niezmiennego magazynu i trwałego usuwania.
  5. W obszarze Data/godzina rozpoczęcia i wygaśnięcia wybierz żądaną datę i godzinę zakończenia.
  6. W dolnej części wybierz pozycję Generuj sygnaturę dostępu współdzielonego i parametry połączenia.
  7. 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

  1. Utwórz plik o nazwie z sas.yaml następującą zawartością. Zastąp wartości metadata::name, metadata::namespace i storageaccountconnectionstring 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
    
  2. Aby zastosować sas.yamlpolecenie , 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 i YOUR_NAMESPACE, YOUR_STORAGE_ACCT_NAMEi YOUR_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)

  1. 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 wierszu deploymentExample.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ść to default:

    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
    
  2. Aby zastosować cloudIngestPVC.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Dołączanie woluminu podrzędnego do woluminu brzegowego

  1. Pobierz nazwę woluminu usługi Edge przy użyciu następującego polecenia:

    kubectl get edgevolumes
    
  2. 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 polecenia kubectl 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 w deploymentExample.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_stringi key.
    • spec::auth::secretName: Jeśli użyto uwierzytelniania za pomocą klucza magazynu, twój secretName 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 lub default.
    • 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ład 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. Aby zastosować edgeSubvolume.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "edgeSubvolume.yaml"
    

Opcjonalnie: zmodyfikuj element ingestPolicy z domyślnego

  1. Jeśli chcesz zmienić wartość z ingestPolicy domyślnej edgeingestpolicy-default, utwórz plik o nazwie z myedgeingest-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 elementu edgeSubvolume.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>
    
  2. Aby zastosować myedgeingest-policy.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Dołączanie aplikacji (aplikacja natywna Kubernetes)

  1. 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ąp containers::name wartości i volumes::persistentVolumeClaim::claimName wartościami. W przypadku zaktualizowania nazwy ścieżki z edgeSubvolume.yamlwiersza exampleSubDir 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>
    
  2. Aby zastosować deploymentExample.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "deploymentExample.yaml"
    
  3. 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 z deploymentExample.yaml został określony jako 2, zostaną wyświetlone dwa zasobniki używające polecenia kubectl get pods. Możesz wybrać nazwę zasobnika do użycia w następnym kroku.

  4. Uruchom następujące polecenie i zastąp POD_NAME_HERE wartość skopiowaną z ostatniego kroku:

    kubectl exec -it pod_name_here -- sh
    
  5. Zmień katalogi (cd) na ścieżkę /data instalacji, jak określono w pliku deploymentExample.yaml.

  6. Powinien zostać wyświetlony katalog o nazwie określonej w path kroku 2 sekcji Dołączanie pod woluminu do woluminu usługi Edge. Teraz w cd pliku i /your_path_name_herezastąp your_path_name_here element odpowiednimi szczegółami.

  7. Na przykład utwórz plik o nazwie file1.txt i zapisz go przy użyciu polecenia echo "Hello World" > file1.txt.

  8. 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.

Monitorowanie wdrożenia