クラウド取り込みエッジ ボリュームの代替 OneLake 構成
この記事では、OneLake レイクハウス用のクラウド取り込みエッジ ボリューム (ローカル消去を使用した BLOB アップロード) の代替構成について説明します。
拡張機能 ID 用に OneLake を構成する
OneLake ワークスペースに拡張機能 ID を追加する
- OneLake ポータルに移動します (例:
https://youraccount.powerbi.com
)。 - ワークスペースを作成するか、そこに移動します。
- [アクセスの管理] を選びます。
- [ユーザーまたはグループの追加] を選択します。
- Azure Arc 対応 Azure コンテナー ストレージのインストールから拡張機能名を入力します。 この名前はテナント内で一意である必要があります。
- アクセス許可のドロップダウンを [閲覧者] から [共同作成者] に変更します。
- [追加] を選択します。
クラウド取り込み永続ボリューム要求 (PVC) を作成する
次の内容を含む
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
cloudIngestPVC.yaml
を適用するには、以下を実行します。kubectl apply -f "cloudIngestPVC.yaml"
サブボリュームをエッジ ボリュームにアタッチする
OneLake レイクハウスに接続するための拡張機能 ID を使い、次のプロセスのようにしてサブボリュームを作成できます。
次のコマンドを使用して、エッジ ボリュームの名前を取得します。
kubectl get edgevolumes
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
edgeSubvolume.yaml
を適用するには、以下を実行します。kubectl apply -f "edgeSubvolume.yaml"
省略可能: ingestPolicy
を既定値から変更する
ingestPolicy
を既定のedgeingestpolicy-default
から変更する場合は、次のような内容でmyedgeingest-policy.yaml
という名前のファイルを作成します。 次の変数は、ユーザー設定で更新する必要があります。Note
使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください。
metadata.name
:ingestPolicy
の名前を作成します。 この名前を更新し、edgeSubvolume.yaml
のspec.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>
myedgeingest-policy.yaml
を適用するには、以下を実行します。kubectl apply -f "myedgeingest-policy.yaml"
アプリをアタッチする (Kubernetes ネイティブ アプリケーション)
永続ボリューム要求 (PVC) に対して汎用単一ポッド (Kubernetes ネイティブ アプリケーション) を構成するには、次のような内容で
deploymentExample.yaml
という名前のファイルを作成します。containers.name
とvolumes.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>
deploymentExample.yaml
を適用するには、以下を実行します。kubectl apply -f "deploymentExample.yaml"
kubectl get pods
を使用して、ポッドの名前を検索します。 次のステップで必要になるので、この名前をコピーしておきます。Note
deploymentExample.yaml
ではspec.replicas
が2
と指定されていたため、kubectl get pods
を使うと 2 つのポッドが表示されます。 次のステップで使うポッド名を選択できます。次のコマンドを実行し、
POD_NAME_HERE
を前の手順でコピーした値に置き換えます。kubectl exec -it POD_NAME_HERE -- sh
ディレクトリを、
deploymentExample.yaml
で指定した/data
マウント パスに変更します。「サブボリュームをエッジ ボリュームにアタッチする」セクションのステップ 2 で
path
として指定した名前でディレクトリが表示されるはずです。 次に、cd
を使って/YOUR_PATH_NAME_HERE
に移動します。YOUR_PATH_NAME_HERE
は、ご自分の詳細に置き換えます。たとえば、
file1.txt
という名前のファイルを作成し、echo "Hello World" > file1.txt
を使用してそこに書き込みます。Azure portal でストレージ アカウントに移動し、「サブボリュームをエッジ ボリュームにアタッチする」のステップ 2 で指定したコンテナーを検索します。 コンテナーを選ぶと、コンテナー内に
file1.txt
が設定されていることがわかります。 ファイルがまだ表示されない場合は、約 1 分待ちます。エッジ ボリュームは、アップロードの前に 1 分間待機します。
次のステップ
以上の手順を終えたら、Azure Monitor と Kubernetes の監視、またはサード パーティの監視と Prometheus および Grafana を使って、デプロイの監視を始めます。