Bulut Veri Aktarımı alt birimlerini yapılandırın (önizleme)

Bu makalede, Azure Arc tarafından etkinleştirilen Azure Container Storage'da Bulut Alma altvolumlarının (yerel temizlemeyle blob yükleme) nasıl yapılandırıldığı açıklanmaktadır. Bulut Alma altvolumu, ADLSgen2 de dahil olmak üzere uçtan bloba sınırsız veri alımını kolaylaştırır. Bu depolama türüne yazılan dosyalar sorunsuz bir şekilde blob depolamaya aktarılır ve karşıya yükleme onaylandıktan sonra yerel olarak temizlenir. Bu kaldırma işlemi, yeni veriler için alan kullanılabilirliği sağlar. Ayrıca, bu depolama seçeneği bağlantısız ortamlarda veri bütünlüğünü destekler ve bu da ağa yeniden bağlanıldığında yerel depolama ve eşitlemeyi etkinleştirir.

Örneğin, bulut ortamındaki Kalıcı Birim Talebinize (PVC) bir dosya yazabilir ve bir süreç dakikada bir yeni dosyaları kontrol etmek için bir tarama çalıştırabilir. Tanımlandıktan sonra dosya, belirlenen blob hedefinize yüklenmek üzere gönderilir. Başarılı bir yükleme onayının ardından Cloud Ingest alt birim beş dakika bekler ve dosyanızın yerel sürümünü siler.

Önkoşullar

Son hedefiniz blob depolama veya ADLSgen2 ise, bu makaledeki önkoşulları ve yönergeleri takip edin. Son hedefiniz OneLake ise, önce Bulut altvolumları için OneLake Kimliğini Yapılandırma başlığı altındaki yönergeleri izleyin.

  1. Azure depolama hesabı oluşturma başlığındaki yönergeleri izleyerek bir depolama hesabı oluşturun.

    Uyarı

    Depolama hesabınızı oluşturduğunuzda, bunu Kubernetes kümenizle aynı kaynak grubu ve bölge/konum altında oluşturmanız önerilir.

  2. Hızlı Başlangıç: Azure portalıyla > blobları karşıya yükleme, indirme ve listeleme Kapsayıcı oluşturma başlığı altındaki yönergeleri izleyerek daha önce oluşturduğunuz depolama hesabında bir kapsayıcı oluşturun.

Uzantı Kimliğini Yapılandırma

Edge Hacimler, blob depolamaya erişim için sistem tarafından atanan bir uzantı kimliği kullanılmasına olanak tanır. Bu bölümde, depolama hesabınıza erişim vermek için sistem tarafından atanan uzantı kimliğinin nasıl kullanılacağı açıklanır ve bu sayede Bulut Alma altvolumlarını bu depolama sistemlerine yükleyebilirsiniz.

Azure Arc tarafından etkinleştirilen Azure Container Storage ile İş Yükü Kimliği'ni kullanmak istiyorsanız Bulut altvolumları için İş Yükü Kimliğini Yapılandırma başlığı altındaki yönergeleri izleyin.

Azure portalı

  1. Arc özellikli kümenize gidin.
  2. Uzantılar'ı seçin.
  3. Azure Arc uzantısı tarafından etkinleştirilen Azure Container Storage'ınızı seçin.
  4. Küme Uzantısı Ayrıntıları altında Principal ID'yi not edin.

Uzantı Kimliği için blob depolama hesabını yapılandırma

Depolama hesabına Eklenti Kimliği izinleri ekleme

  1. Azure portalında depolama hesabına gidin.
  2. Erişim Denetimi (IAM) öğesini seçin.
  3. Ekle+ -> Rol ataması ekle'yi seçin.
  4. Depolama Blobu Veri Sahibi'ni seçin, ardından İleri seçeneğine tıklayın.
  5. +Üyeleri Seç'i seçin.
  6. Asıl kimliğinizi Seçili Üyeler: listesine eklemek için kimliği yapıştırın ve kimliğin yanındaki + öğesini seçin.
  7. Seç'e tıklayın.
  8. İzinleri gözden geçirmek ve atamak için İleri ve ardından Gözden Geçir + Ata seçin.

Bulut Verisi Alım Kalıcı Hacim Talebi (PVC) Oluşturun

Veri Aktarımı alt hacminizin PVC'sini oluşturmak için aşağıdaki işlemi kullanın:

  1. Aşağıdaki içeriğe sahip adlı cloudIngestPVC.yaml bir dosya oluşturun:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      ### Create a name for your PVC ###
      name: <create-persistent-volume-claim-name-here>
      ### Use a namespace that matched your intended consuming pod, or "default" ###
      namespace: <intended-consuming-pod-or-default-here>
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 2Gi
      storageClassName: cloud-backed-sc
    

    Uyarı

    Yalnızca küçük harfler ve çizgi kullanın. Daha fazla bilgi için Kubernetes nesne adlandırma belgelerine bakın.

    • metadata.name Değeri düzenleyin ve PVC'niz için bir ad oluşturun. Bu isim sonraki adımda deploymentExample.yaml dosyasının son satırında referans alınacaktır.
    • metadata.namespace değerini, hedeflediğiniz tüketim podu ile düzenleyin. Hedeflenen bir tüketici pod yoksa değerini default olarak ayarlayın.
    • spec.resources.requests.storage parametresi, kalıcı birimin boyutunu belirler. Bu örnekte 2 GB'tır, ancak gereksinimlerinize uyacak şekilde değiştirilebilir.
  2. cloudIngestPVC.yaml dosyasını uygulamak için şunu çalıştırın:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Edge Birim'e İnceleme Alt Bölümünü Bağlama

İçeri Aktarım için bir alt birim oluşturmak ve depolama hesabı kapsayıcınıza bağlanmak için uzantı kimliğini kullanarak aşağıdaki süreci izleyin:

  1. Aşağıdaki komutu çalıştırarak oluşturduğunuz Edge Biriminin adını alın:

    kubectl get edgevolumes
    
  2. Aşağıdaki içeriğe sahip adlı ingestSubvolume.yaml bir dosya oluşturun:

    apiVersion: "arccontainerstorage.azure.net/v1"
    kind: IngestSubvolume
    metadata:
      name: <create-a-subvolume-name-here>
    spec:
      edgevolume: <your-edge-volume-name-here>
      path: ingestSubDir # Don't use a preceding slash
      authentication:
        authType: MANAGED_IDENTITY
      storageAccountEndpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/"
      containerName: <your-blob-storage-account-container-name>
      ingest:
        order: newest-first
        minDelaySec: 60
      eviction:
        order: unordered
        minDelaySec: 120
      onDelete: trigger-immediate-ingest
    

    Uyarı

    Yalnızca küçük harfler ve çizgi kullanın. Daha fazla bilgi için Kubernetes nesne adlandırma belgelerine bakın.

    • metadata.name: Alt biriminiz için bir ad oluşturun.
    • spec.edgevolume: Bu ad önceki adımdan alınmıştı.
    • spec.path: Bağlama yolunun altında kendi alt dizin adınızı oluşturun. Varsayılan ad ingestSubDir.
    • spec.authentication.authType: Bu, seçilen kimlik doğrulama mekanizmasına bağlı olarak veya MANAGED_IDENTITYolmalıdırWORKLOAD_IDENTITY.
    • spec.storageAccountEndpoint: Azure portalında depolama hesabınıza gidin. Genel Bakış sayfasında, ekranın sağ üst kısmındaki JSON Görünümü'nü seçin. Bağlantıyı properties.primaryEndpoints.blob altında bulabilirsiniz. Bağlantının tamamını kopyalayın.
    • spec.containerName: Depolama hesabınızdaki kapsayıcı adı.

    Aşağıdaki değişkenler makul varsayılan değerlere sahiptir, ancak değiştirilebilir:

    • spec.ingest.order: Kirli dosyaların yükleme sırası. Bu bir garanti değil, en iyi çabadır. Sipariş seçenekleri şunlardır: oldest-first veya newest-first.
    • spec.ingest.minDelaySec: Kirli bir dosyanın alımına uygun hale gelmeden önce geçmesi gereken en az saniye sayısı. Bu sayı 0 ile 31536000 (saniye cinsinden bir yıl) arasında değişebilir.
    • spec.eviction.order: Dosyalar buluta yüklendikten sonra nasıl çıkarılır? Çıkarma sırası seçenekleri şunlardır: unordered veya never.
    • spec.eviction.minDelaySec: Temiz bir dosyanın silinmeye uygun hale gelmesi için gereken saniye sayısı. Bu sayı 0 ile 31536000 (saniye cinsinden bir yıl) arasında değişebilir.
    • spec.onDelete: Silinmesi talep edildiğinde bu IngestSubVolume üzerinde yapılacak işlem. Seçenekler, trigger-immediate-ingest tüm dosyaları hemen almaya uygun olarak işaretleyip onları almaya çalışmak veya abandon bu alma alt bölümü içindeki tüm verileri yok sayarak alt bölümü silmektir.

    Uyarı

    Değeriniz için spec.onDelete seçerseniz, altvolümdeki tüm kirli veriler kaybolur. Bunu bir seçenek olarak seçmeden önce lütfen dikkatli ve dikkatli olun.

  3. ingestSubvolume.yaml dosyasını uygulamak için şunu çalıştırın:

    kubectl apply -f "ingestSubvolume.yaml"
    

Uygulamanızı ekleme (Kubernetes yerel uygulaması)

Veri içe alma özelliklerini kullanmak üzere PVC ile uyumlu genel bir tek pod (Kubernetes'in yerel uygulaması) yapılandırmak için aşağıdaki işlemi kullanın.

  1. Aşağıdaki içeriğe sahip adlı deploymentExample.yaml bir dosya oluşturun:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cloudingestsubvol-deployment ### This must be unique for each deployment you choose to create.
    spec:
      replicas: 2
      selector:
        matchLabels:
          name: acsa-testclientdeployment
      template:
        metadata:
          name: acsa-testclientdeployment
          labels:
            name: acsa-testclientdeployment
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - acsa-testclientdeployment
                topologyKey: kubernetes.io/hostname
          containers:
            ### Specify the container in which to launch the busy box. ###
            - name: ingest-deployment-container
              image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09
              command:
                - "/bin/sh"
                - "-c"
                - "dd if=/dev/urandom of=/data/ingestSubDir/acsaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done"
              volumeMounts:
                ### This name must match the volumes.name attribute below ###
                - name: acsa-volume
                  ### This mountPath is where the PVC is attached to the pod's filesystem ###
                  mountPath: "/data"
          volumes:
              ### User-defined 'name' that's used to link the volumeMounts. This name must match volumeMounts.name as previously specified. ###
            - name: acsa-volume
              persistentVolumeClaim:
                ### This claimName must refer to your PVC metadata.name (Line 5)
                claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
    

    Uyarı

    Yalnızca küçük harfler ve çizgi kullanın. Daha fazla bilgi için Kubernetes nesne adlandırma belgelerine bakın.

    • containers.name ve volumes.persistentVolumeClaim.claimName değerlerini düzenleyin.
    • spec.path dosyasındaki değeri düzenlediyseniz, bu dosyadaki değer ingestSubDir yeni yol adınızla güncelleştirilmelidir.
    • spec.replicas parametresi oluşturulacak çoğaltma podlarının sayısını belirler. Bu örnekte 2'tir, ancak gereksinimlerinize uyacak şekilde değiştirilebilir.
  2. deploymentExample.yaml dosyasını uygulamak ve pod oluşturmak için şunu çalıştırın:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Sonraki adımda kullanılacak podunuzun adını bulun:

    kubectl get pods
    

    Uyarı

    spec.replicas deploymentExample.yaml dosyasından 2 ile belirtildiğinden iki pod oluşturulur. Sonraki adım için iki pod adını da kullanabilirsiniz.

  4. Podda exec'i başlatmak için aşağıdaki komutu çalıştırın. <name-of-pod> ifadesini bir önceki adımdaki pod adınızla değiştirin:

    kubectl exec -it <name-of-pod> -- sh
    
  5. /data dosyanızdan belirtilen bağlama yoluna dizin değiştirin:

    cd /data
    
  6. spec.path dosyasında ayarladığınız değerle eşleşen bir dizin görmeniz gerekir. Varsayılan değerleri kullandıysanız, adı ingestSubDir'dir. Bu alt dizine geçin:

    cd ingestSubDir
    
  7. Örneğin, adlı file1.txt bir dosya oluşturun ve bu dosyaya yazın:

    echo "Hello World" > file1.txt
    

    Bu dosya blob depolama hesabı kapsayıcınıza yüklenir ve beş dakika sonra yerel olarak temizlenir.

  8. Azure portalında depolama hesabınıza gidin ve spec.containerName dosyasında ayarladığınız değerle eşleşen kapsayıcıyı bulun. Kapsayıcının içinde file1.txt doldurulmuş olarak bulmalısınız. Dosya henüz orada değilse yaklaşık 1 dakika bekleyin; Edge Volumes yüklenmeden önce bir dakika bekler.

Sonraki Adımlar