SAS Viya Blog ~Azure Fileを利用したWindowsとSAS Viya間のデータ共有方法の紹介~

0

背景の紹介

これまでのSAS製品は、SAS 9でもSAS Viya 3.5でも、ほとんどがWindowsやLinuxのプラットフォームで動作していました。 そのため、Windowsクライアントを持つユーザーは、SMBサービスやWindowsのファイル共有機能を介して、これらのプラットフォームに保存されたファイルに簡単にアクセスすることができていたのです。

SASが開発した最新のクラウドネイティブ・データアナリティクス・プラットフォーム「SAS Viya」は、WindowsやLinuxなどのOS上で直接動作するのではなく、コンテナ/ポッドの形でKubernetes(以下、K8s)上で動作し、従来の製品とはアーキテクチャが大きく変わっています。K8s上で動作するサービスのコンテナ内のデータは一時的なものなので消えてしまう特徴があります。この点に対して、お客様は最新の製品を使用する際に、K8sに保存したデータをローカルのWindowsシステムからどのようにアクセスするのか、SASで作成したレポートなどのデータをどこに保存するのかという疑問を持つことが多いようです。

今回は、下記の図の構造のような、K8sに保存されているファイルを、比較的簡単な方法でWindowsクライアントと共有する方法をご紹介したいと思います。

本記事の内容は、Microsoft Azure上にデプロイされたSAS Viya Stable 2021.2.3に基づいています。centos 7.9上で、kubectl、kustomization、azure cliなどのコマンドラインツールを利用する作業が含まれているので、Linux、Kubernetes、SAS ViyaのデプロイメントとAzureに関する一定の知識が必要です。また、お使いのクラウドベンダーや製品のバージョンによって、設定方法が異なる場合もありますので、詳細は各ドキュメントをご確認ください。

SAS Viya on Kubernetesが利用するストレージの紹介

まず、K8s上にデプロイされたSAS Viyaサービスを使用した場合のデータの保存方法について簡単に説明します。 例えば、SAS Studioを利用する場合、ユーザーがセッションを作成するたびに、SAS ViyaはK8s上に一つのコンテナを作成します。これは、ユーザーがセッションで実行したすべてのコードや操作がこのコンテナに入っているミニLinux内で実行されます。 ご存知のように、コンテナの最大の利点は、インストール作業や設定などが一切いらず、配置したらすぐに使えることです。コンテナが提供するサービスや機能を使用するために設定を行う必要はありませんが、同時に、コンテナ内のデータに加えた変更も保存されず、新しいセッションを作成するたびに、まったく同じ設定を持つまったく新しいコンテナが作成されます。 そのため、SAS Studioで作成した新しいデータを保存したい場合は、コンテナの外部にあるストレージに保存する必要があります。K8sではこの外部ストレージは永続ボリュームと呼びます。

永続ボリュームを利用することにより、SAS Studioのセッションが終了しても、作業中にユーザーが作成した新しいデータはちゃんと保存されています。次にユーザーが新しいセッションを作成する時、以前使用していた永続ボリュームが新しいセッションに自動的にマウントされ、ユーザーが永続ボリュームに保存されていたデータを使って引き続き作業できます。この記事で紹介するデータ共有方法も、こちらの永続ボリュームを利用しています。

データ共有するための設定方法

次に、K8sで作成したファイルをWindowsと共有する方法を紹介します。前述したように、作業中に発生したデータを永続ボリュームに保存することができるので、永続ボリュームをWindowsにマウントするだけで、作業用PCとK8sの間でデータを共有することができますが、実現方法は使用する永続ボリュームの外部ストレージの種類によって異なります。

AzureのK8sサービス上でSAS Viyaを利用する場合、使用する外部ストレージは、大体以下の3種類です。Azure Fileを共有ストレージとして使用する場合、追加のサーバは必要なく、使い方も比較的簡単なので、本記事ではAzure Fileを外部ストレージとして使用する場合の共有方法を紹介します。

- ネットワークファイルシステム(以下NFS)
- Azure Disk
- Azure File(本記事で紹介する方法)

データを共有するためには、次のような手順が必要です。 これらの手順には、AzureとK8sの管理者権限と関連する知識が必要なため、一般的にはサーバ管理者やSAS Viya導入の担当者が行うことになることに注意してください。

1.ストレージクラスの作成
2.永続ボリューム要求の作成
3.SAS Viyaのデプロイメントファイルの修正
4.デプロイメントのマニフェストファイルkustomazation.yamlの修正
5.デプロイ開始
6.ストレージアカウントの確認
7.ストレージのマウント(マウント用コマンドの確認)
8.ストレージのマウント(Windows上でコマンドを実行)

1.ストレージクラスの作成

永続ボリュームを作成する前に、Azure Fileをストレージの種類として定義する必要があります。K8s上でこのストレージの種類定義はストレージクラスと呼びます。まず、下記の画像の記載内容を含むyamlファイルを作成し、storageClass-RWX.yamlとして保存します。

最後に、kubectlコマンドを使って、このファイルをK8sクラスターにデプロイします。

kubectl apply -f StorageClass-RWX.yaml

もちろん、使用しているK8s環境でAzureファイルのStorageClassがすでに定義されている場合は、このステップは省略できます。 こちらの情報は、以下のコマンドで確認できます。

kubectl get sc

2.永続ボリューム要求の作成

ストレージクラスを定義した後は、永続ボリューム要求(以下、PVC)を作成する必要があります。PVCでは使用する永続ボリュームの名前、サイズ、アクセスモードなどを定義します。ストレージクラスの定義と同様に、yamlファイルを作成する必要があります。下記の画像の記載内容を含む新しいpvc-viya4.yamlファイルを作り、name、namespaceとstroageの部分をご利用の環境に応じて修正したうえで保存します。

その後、この定義ファイルの内容を、以下の同じコマンドを使ってK8sクラスターにデプロイします。

kubectl apply -f pvc-viya4.yaml

もし複数のストレージが必要な場合は、このような定義ファイルを複数用意するか、同じyamlファイルにコピー&ペーストし、名前とストレージの部分を修正しコピーしてもかまいません。

3.SAS Viyaのデプロイメントファイルの修正

PVCを作成し終わったら、次はどのサービス・コンテナが外部ストレージを使用する必要があるか、外部ストレージのマウント・パスをシステムが認識できるように、SAS Viyaのデプロイファイルを変更する必要があります。 まず、デプロイメントフォルダにある$deploy/sas-bases/examples/compute-server/configure/compute-server-add-nfs-mount.yamlファイルを$deploy/site-config/にコピーして、そのファイルをvimなどのエディタで開き、内容を修正します。 以下は、修正後のファイルの内容の一例です。

修正内容は大きく2つに分かれており、①では使用するPVCを定義し、②では永続ボリュームのマウント先のパスを定義します。一つの定義において、①と②のnameが同一であること。 また、複数の永続ボリュームを定義する必要がある場合、nameとmountPathは他のストア定義と重複してはならないので、nameとmountPathの部分を修正したうえで、patchのブロック下に追加する必要があることに注意してください。

4.デプロイメントのマニフェストファイルkustomazation.yamlの修正

Viya4のデプロイメントマニフェストファイルkustomazation.yamlを開き、transformersのブロックの下にステップ3で修正したcompute-server-add-nfs-mount.yamlの相対パスを追加し、ファイルを保存します。

5.デプロイ開始

最後に、デプロイ用のManifestファイルが再コンパイルされ、デプロイされます。

kustomize build -o site.yaml
kubectl apply --selector="sas.com/admin=cluster-api" -f site.yaml
kubectl wait --for condition=established --timeout=60s -l "sas.com/admin=cluster-api" crd
kubectl apply --selector="sas.com/admin=cluster-wide" -f site.yaml
kubectl apply --selector="sas.com/admin=cluster-local" -f site.yaml –prune
kubectl apply --selector="sas.com/admin=namespace" -f site.yaml –prune

6.ストレージアカウントの確認

デプロイが完了したら、以下のコマンドで先ほどyamlファイルで定義したPVCの名前を使って、永続ボリュームがデプロイされたことを確認します。

kubectl get pv | grep sas-programming-envrionment-storage

すると、下記の画像のように表示されます。

図の中の赤枠の部分内の”pvc-d678fae-daa0-449f-9037-90efd9e6e873”を保存する必要があります。 Azureでは、永続ボリュームがストレージアカウントサービスに管理されているので、このストレージの場所を知りたいので、ストレージアカウントの名称を確認する必要があり、以下のコマンドで確認できます。 なお、以下のコマンドを使用するには、azure cliコマンドラインクライアントがインストールされている必要があります。
まず、以下のコマンドでazureアカウントにログインします。 コマンドが実行されると、リンクと検証コードが表示されます。このリンクをブラウザで開き、検証を入力してください。

az login

次に、以下のコマンドを実行してストレージアカウント情報を取得します。f089fb1eeae3a4c51b523a1のような文字列で、この文字列はストレージを作成したストレージアカウントの名前であり、これをコピーする必要があります。

PVNAME= pvc-d678fae-daa0-449f-9037-90efd9e6e873
MYSHARE=`kubectl get pv $PVNAME -o json | jq -r '.spec.azureFile.shareName' `.
STORAGEACCT=`kubectl get pv $PVNAME -o json | jq -r '.spec.azureFile.secretName' | awk -F- '{print $4}'`。
echo $STORAGEACCT

7.ストレージのマウント(マウント用コマンドの確認)

ストレージアカウント名を取得したら、次はブラウザでAzure Portalを開き、上部の検索欄に先ほどコピーしたストレージアカウントを貼り付けて検索して開きます。

ストレージアカウントの画面が開きましたら、左側のデータストレージの欄で「ファイル共有」を選択すると、画面右側にストレージアカウント内の全ストレージの一覧が表示されます。

検索機能を使って、今作ったばかりの永続ボリュームを探します。 なお、この検索で使用する名前は、先ほど保存したpvcの名前の前に「kubernetes-dynamic-」が付いている必要があります。 例えば、PVCの名前が「pvc-d67b8fae-daa0-449f-9037-90efd9e6e873」であれば、「kubernetes-dynamic-pvc-d67b8fae-daa0-449f-9037-90efd9e6e873」で検索しなければなりません。

永続ボリュームを開くと、ファイルが作成されていないため空の状態であることがわかります。 上部に接続オプションがあり、右側に新しいウィンドウが開き、クライアントにストアをマウントするコマンドが表示されます。 一番上のタブでは、Windows、Linux、macOSのいずれを使用しているかを選択できます。Windowsを選択した後、一番下のオプションでは、マウントするドライブの名前を選択できます。 選択すると、下部のボックスにマウントするためのコマンドが表示されます。 それを直接コピーして保存し、必要なユーザーに教えれば、ユーザー自身で永続ボリュームをWindowsまた他のOSにマウントすることができます。

8.ストレージのマウント(Windows上でコマンドを実行)

最後は、パソコンのWindows上でPowerShellを開いて、コピーしたコマンドをそのまま貼り付けて実行すれば、永続ボリュームが設定されたドライブとしてマウントされます。これで、K8s上で実行しているSAS ViyaとWindows間のデータの共有ができました。

参考用リンク

SAS Viya Stable 2021.2.3のデプロイメントドキュメント:
https://go.documentation.sas.com/doc/en/sasadmincdc/v_023/itopscon/titlepage.htm/
K8sのストレージ説明のドキュメント:
https://kubernetes.io/ja/docs/concepts/storage/
Azure Fileのドキュメント:
https://docs.microsoft.com/en-us/azure/aks/azure-files-dynamic-pv/
Azure Fileのデータ共有のドキュメント:
https://docs.microsoft.com/en-us/azure/storage/files/storage-files-quick-create-use-windows/

Share

About Author


SAS Viya Business Promotion & OSS Innovation推進室 Analytical Consultant

半導体業界でデータ分析による異常予兆検知システムを開発した経験を持つ。現在、業務課題解決ためにAIプラットフォーム上にオープンソースなどを活用したアナリティカルソリューションの構築や提案を担当している。さらに、アナリティクスハッカソンなどのイベントの企画に従事している。

Leave A Reply

Back to Top