投稿者:SASソリューション担当

こんにちは。NI+C SASソリューションチームです。
本Blogでは、SASの最新プラットフォームSAS Viyaを中心に、NI+Cで扱っているSASソリューション及びSASナレッジをご紹介していきます!

第2弾は、SAS ViyaをEKSに構築してみた(後編) です。

目次

  1. SAS ViyaをEKSに構築したみた(後編)
    1. yamlファイル準備&site.yaml作成
    2. Viyaのデプロイ
    3. sasbootログオン&IDプロバイダー設定
  2. おわりに

前回(第1弾 SAS ViyaをEKSに構築してみた(前編))につづき、最新Viyaの基盤観点でのご紹介となります。
第1弾ではViyaをEKSに構築してみた と共にSAS&SAS Viyaのご紹介も簡単にですが記載しておりますので、もし第1弾をご覧になっていなければ、ぜひ先にご覧ください!


SAS ViyaをEKSに構築してみた(後編)

はじめに、 "SAS ViyaをEKSに構築してみた" で実施した手順ですが、以下となります。

  1. EKSクラスター作成&ノードグループ追加
  2. LDAP&NFSサーバーの構築(オプション)
  3. SAS Viya Deployment Assetsの準備
  4. yamlファイル準備&site.yaml作成
  5. Viyaのデプロイ
  6. sasbootログオン&IDプロバイダー設定

後編となる第2弾では、手順4~6を順次ご紹介していきます!※実施手順はSAS HelpCenter等を参考にしています。

4.yamlファイル準備&site.yaml作成

※今回はWindows10環境より操作しているため、各種コマンドはCMDで実行したものになっています。Linux環境で実行される場合とは若干コマンドが異なりますのでご留意ください。

まず、導入したいバージョンに合わせてkustomization.yamlの内容をSAS HelpCenterよりコピーし、namespace名称やingressより取得した外部IP・DNS情報を反映した上で作成します。
作成したkustomization.yamlをアセット展開フォルダ(sas-basesと同列)に配置します。
※2021.1.3や2021.1.4といったバージョン毎にkustomization.yamlや準備するyamlフォーマットが異なります。導入バージョンをSAS HelpCenterで選択ください。

次に、構成により異なると思いますが、今回のSMPの場合必須であったTLS・postgres・storageclass用のyamlをSAS HelpCenterを参照し、準備します。
修正ポイントは環境に依存するため割愛しますが、バージョン2021.1.4の場合、ここまででアセット展開フォルダとsite-config配下は以下のようになっています。

viya1-4.png

実はここでSAS HelpCenterに明確な記述が見つけられず一度悩んでしまったのですが、Viyaではボリュームの動的プロビジョニング(Dynamic Volume Provisioning)が採用されているようです。
そのため、pvcはデプロイ時にViyaが自動で作成してくれます。
また、一部pvではRWXのaccessModeを利用しますので、EKSでデフォルトで生成されるgp2以外のscを事前に定義しておきます。

viya1-8.png

定義したscの名称を、storageclass用のyaml(storageclass.yaml)に記載します。

最後に、各種yamlの対応および準備完了後、デプロイ用のsite.yamlを作成します。※kustomizeを未導入の場合は、操作環境に導入します。
kustomization.yaml配置ディレクトリで以下を実行し、site.yamlを作成します。

viya1-9.png

5.viyaのdeploy

事前の環境やyaml準備が完了したため、Viyaのデプロイを開始します。
まず、Viyaを導入する名前空間を以下のように作成します。

kubectl create ns <namespaceName>
viya1-10.png

SAS Viya Deployment Operatorを利用したデプロイ方法もあるのですが、今回はManual Deploymentに従い、デプロイします。
以下のコマンドを順次実行していきます。

<実行コマンド>
kubectl apply --selector=""sas.com/admin=cluster-wide"" -f site.yaml
kubectl wait --for condition=established --timeout=60s -l ""sas.com/admin=cluster-wide"" crd
kubectl apply --selector=""sas.com/admin=cluster-local"" -f site.yaml --prune
kubectl apply --selector=""sas.com/admin=namespace"" -f site.yaml --prune
kubectl apply --selector=""sas.com/admin=namespace"" -f site.yaml --prune --prune-whitelist=autoscaling/v2beta2/HorizontalPodAutoscaler

コマンドにより早く完了するものもありますが、大凡5分~10分程度で各コマンドが完了します。
※もしyaml内容の編集ミスなどがあれば、対応するコマンド実行時の結果でエラーが出力されます。

全コマンド実行完了後、以下にてpodsの起動状況を確認し、全podsが起動することを確認します。

kubectl get pods -n <namespaceName>viya1-11.png※今回の場合、最終コマンド実行完了後20分程度で全podsが起動しました。

6.sasbootログオン&IDプロバイダー設定

pods起動後は、以前のViya(Viya3.x系)と同様にsasbootで初回ログインを実施します。
以下より実行sas-logonのpods名を確認します。

kubectl get pods -n <namespaceName> get pods | find "sas-logon"
viya1-12.png

確認結果の実行sas-logonのpods名(sas-logon-xxxxx)を反映し、以下を実行します。

kubectl logs sas-logon-app-558f9f7876-zkmg4 -n <namespaceName> | find "sasboot"

実行結果にsasboot用のリセットコードが表示されますので、kustomization.yamlにも記載したViya用のURLにリセットコードを反映し、ブラウザよりアクセスします。

https://<ingressの外部IporDNS>/SASLogon/reset_password?code=<resetcode>

以下のようにsasbootのパスワードを設定する画面が表示されるため、変更します。

viya1-5.png

変更完了後、sasbootユーザと設定変更したパスワードにてサインインします。

viya1-5.png
※IDプロバイダー設定(今回はLDAP)も行うため、管理者権限でサインインします。

必須ではありませんが、sasbootのパスワードがデフォルトですと24時間でリセットされますので、SAS Enviroment Managerの構成→定義よりreset.enabledを無効とします。
viya1-6.png

今回はIDプロバイダーにLDAPを利用するため、同じくSAS Enviroment Managerの構成→定義より、LDAP用に以下3つを新規作成し、LDAP情報反映の上、保存します。

■sas.identities.providers.ldap.connection
■sas.identities.providers.ldap.group
■sas.identities.providers.ldap.user
※各種設定は構築したLDAPに合わせてホスト名やポート、baseDNなどを反映します。

設定後は、sas-logonとsas-identitiesのpodsを削除して、LDAP設定を反映させます。
先にsas-logonとsas-identitiesのpods名を確認します。
viya1-13.png

再度、以下のkubectl get podsでsas-logonとsas-identitiesの起動を確認します。

kubectl -n <namespaceName> get pods | find "sas-logon"
kubectl -n <namespaceName> get pods | find "sas-identities"

sasbootユーザかつ管理者権限にてブラウザよりViyaへログインし、SAS Enviroment Managerのユーザーを表示します。
プルダウンからユーザーとグループを確認し、設定したLDAPに従ってユーザーおよびグループが反映されていることを確認します。

viya1-14.png

必須ではありませんが、カスタムグループ内のSASAdministoratorsにLDAPユーザを追加し、保存します。
サインアウトし、追加したLDAPユーザー/パスワードにて、再度viyaへログインします。

<LDAPユーザにてSASDriveを表示した例>
viya1-7.png

以上がViyaをEKSに構築し、初回ログインまで確認した流れとなります。

おわりに

NI+CSASTechBlogの第1弾と第2弾として、ViyaをEKSに構築してみた の手順をご紹介させて頂きましたが、いかがでしたでしょうか?
今回EKSへViyaデプロイのBlogを担当したものの普段はLinuxの作業が多いのですが、変更時の反映の速さや構築方法に構成の選択肢の多さ・柔軟さはクラウドネイティブな最新Viyaならではだなと感じました!
また、コンテナ化された最新Viyaはオートスケールにも柔軟に対応な基盤となっており、
処理が集中している場合や重たい処理の実行時に一時的にリソースを増加したい場合などは、ノードサイズを変更するだけで自動で同スペックのマシンが生成され、スムーズに処理を実行可能でした!
今回のデプロイを通して、本当に必要なリソースを効率的にプラットフォームに適用することが出来そうと感じております。

-----------------------------------------------------------------------------------------------

第1弾、第2弾ではViyaのEKSへの導入がメインのご紹介でしたが、k8s対応の最新Viyaは毎月新機能や既存機能のUpdateのリリースがされており、注目の機能なども多く出ています!
不定期とはなりますが、今後Viya上のSASソリューションやナレッジなども第3弾以降でご紹介させて頂く予定です。
今後Viyaのk8sのサポート対象は順次拡大する予定とのことですので、NI+Cより本Blogを参照頂いた方のお好みのk8s環境へViyaをご提供することも可能と考えています。

SASソリューションやSAS Viyaにご興味頂いた方は、お気軽にぜひ「こちら」からお問い合わせください。

御覧頂き、ありがとうございました!