クラウド取り込みエッジ ボリュームの代替 OneLake 構成

この記事では、OneLake レイクハウス用のクラウド取り込みエッジ ボリューム (ローカル消去を使用した BLOB アップロード) の代替構成について説明します。

拡張機能 ID 用に OneLake を構成する

OneLake ワークスペースに拡張機能 ID を追加する

  1. OneLake ポータルに移動します (例: https://youraccount.powerbi.com)。
  2. ワークスペースを作成するか、そこに移動します。 ポータルのワークスペース リボンを示すスクリーンショット。
  3. [アクセスの管理] を選びます。 ポータルでのアクセス管理画面を示すスクリーンショット。
  4. [ユーザーまたはグループの追加] を選択します。
  5. Azure Arc 対応 Azure コンテナー ストレージのインストールから拡張機能名を入力します。 この名前はテナント内で一意である必要があります。 拡張機能名の追加画面を示すスクリーンショット。
  6. アクセス許可のドロップダウンを [閲覧者] から [共同作成者] に変更します。 共同作成者設定画面を示すスクリーンショット。
  7. [追加] を選択します。

クラウド取り込み永続ボリューム要求 (PVC) を作成する

  1. 次の内容を含む cloudIngestPVC.yaml という名前のファイルを作成します。 永続ボリューム要求の名前で metadata.name の値を変更します。 この名前は、次の手順の deploymentExample.yaml の最後の行で参照します。 また、metadata.namespace 値は、使用する予定のポッドに更新する必要があります。 使用する予定のポッドがない場合、metadata.namespace の値は default です。

    Note

    使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      ### Create a nane for your PVC ###
      name: <create-a-pvc-name-here>
      ### Use a namespace that matches your intended consuming pod, or "default" ###
      namespace: <intended-consuming-pod-or-default-here>
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 2Gi
      storageClassName: cloud-backed-sc
    
  2. cloudIngestPVC.yaml を適用するには、以下を実行します。

    kubectl apply -f "cloudIngestPVC.yaml"
    

サブボリュームをエッジ ボリュームにアタッチする

OneLake レイクハウスに接続するための拡張機能 ID を使い、次のプロセスのようにしてサブボリュームを作成できます。

  1. 次のコマンドを使用して、エッジ ボリュームの名前を取得します。

    kubectl get edgevolumes
    
  2. edgeSubvolume.yaml という名前でファイルを作成し、次の内容をコピーして貼り付けます。 次の変数は、ご自分の情報で更新する必要があります。

    Note

    使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください

    • metadata.name: サブボリュームの名前を作成します。
    • spec.edgevolume: この名前は、前の手順で kubectl get edgevolumes を使って取得しました。
    • spec.path: マウント パスの下に独自のサブディレクトリ名を作成します。 次の例には、例の名前 (exampleSubDir) が既に含まれています。 このパス名を変更する場合は、deploymentExample.yaml の 33 行目を新しいパス名に更新する必要があります。 パスの名前を変更する場合は、前にスラッシュを付けないでください。
    • spec.container: OneLake データ レイク レイクハウスの詳細 (例: <WORKSPACE>/<DATA_LAKE>.Datalake/Files)。
    • spec.storageaccountendpoint: ストレージ アカウントのエンドポイントが、Power BI Web リンクのプレフィックスです。 たとえば、OneLake ページが https://contoso-motors.powerbi.com/ である場合、エンドポイントは https://contoso-motors.dfs.fabric.microsoft.com になります。
    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 to be updated. Don't use a preceding slash.
      auth:
        authType: MANAGED_IDENTITY
      storageaccountendpoint: "https://<Your AZ Site>.dfs.fabric.microsoft.com/" # Your AZ site is the root of your Power BI OneLake interface URI, such as https://contoso-motors.powerbi.com
      container: "<WORKSPACE>/<DATA_LAKE>.Datalake/Files" # Details of your One Lake Data Lake Lakehouse
      ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
    
  3. edgeSubvolume.yaml を適用するには、以下を実行します。

    kubectl apply -f "edgeSubvolume.yaml"
    

省略可能: ingestPolicy を既定値から変更する

  1. ingestPolicy を既定の edgeingestpolicy-default から変更する場合は、次のような内容で myedgeingest-policy.yaml という名前のファイルを作成します。 次の変数は、ユーザー設定で更新する必要があります。

    Note

    使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください

    • metadata.name: ingestPolicy の名前を作成します。 この名前を更新し、edgeSubvolume.yamlspec.ingestPolicy セクションで参照する必要があります。
    • spec.ingest.order: ダーティ ファイルがアップロードされる順序。 これはベスト エフォートであり、保証ではありません (既定値は oldest-first)。 順序のオプションは、oldest-first または newest-first です。
    • spec.ingest.minDelaySec: ダーティ ファイルが取り込みの対象になるまでの最小秒数 (既定値は 60)。 この数値の範囲は 0 から 31536000 です。
    • spec.eviction.order: ファイルの削除方法 (既定値は unordered)。 削除順序のオプションは、unordered または never です。
    • spec.eviction.minDelaySec: クリーン ファイルが削除対象になるまでの秒数 (既定値は 300)。 この数値の範囲は 0 から 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. myedgeingest-policy.yaml を適用するには、以下を実行します。

    kubectl apply -f "myedgeingest-policy.yaml"
    

アプリをアタッチする (Kubernetes ネイティブ アプリケーション)

  1. 永続ボリューム要求 (PVC) に対して汎用単一ポッド (Kubernetes ネイティブ アプリケーション) を構成するには、次のような内容で deploymentExample.yaml という名前のファイルを作成します。 containers.namevolumes.persistentVolumeClaim.claimName の値を、ご自分のものに置き換えます。 パス名を edgeSubvolume.yaml から更新した場合は、33 行目の exampleSubDir を新しいパス名に更新する必要があります。

    Note

    使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cloudingestedgevol-deployment ### This must be unique for each deployment 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 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: wyvern-volume
              persistentVolumeClaim:
                ### This claimName must refer to your PVC metadata.name
                claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
    
  2. deploymentExample.yaml を適用するには、以下を実行します。

    kubectl apply -f "deploymentExample.yaml"
    
  3. kubectl get pods を使用して、ポッドの名前を検索します。 次のステップで必要になるので、この名前をコピーしておきます。

    Note

    deploymentExample.yaml では spec.replicas2 と指定されていたため、kubectl get pods を使うと 2 つのポッドが表示されます。 次のステップで使うポッド名を選択できます。

  4. 次のコマンドを実行し、POD_NAME_HERE を前の手順でコピーした値に置き換えます。

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. ディレクトリを、deploymentExample.yaml で指定した /data マウント パスに変更します。

  6. サブボリュームをエッジ ボリュームにアタッチする」セクションのステップ 2 で path として指定した名前でディレクトリが表示されるはずです。 次に、cd を使って /YOUR_PATH_NAME_HERE に移動します。YOUR_PATH_NAME_HERE は、ご自分の詳細に置き換えます。

  7. たとえば、file1.txt という名前のファイルを作成し、echo "Hello World" > file1.txt を使用してそこに書き込みます。

  8. Azure portal でストレージ アカウントに移動し、「サブボリュームをエッジ ボリュームにアタッチする」のステップ 2 で指定したコンテナーを検索します。 コンテナーを選ぶと、コンテナー内に file1.txt が設定されていることがわかります。 ファイルがまだ表示されない場合は、約 1 分待ちます。エッジ ボリュームは、アップロードの前に 1 分間待機します。

次のステップ

以上の手順を終えたら、Azure Monitor と Kubernetes の監視、またはサード パーティの監視と Prometheus および Grafana を使って、デプロイの監視を始めます。

デプロイを監視する