Kubeflow のデモ用に、nutanix ユーザを追加してみます。
今回の環境
Kubeflow は、下記のように Nutanix Kubernetes Engine(NKE)の Kubernetes クラスタに構築してあります。
1. パスワード ハッシュの作成
1-1. 作業環境の準備
Linux マシンを利用します。
$ cat /etc/redhat-release Red Hat Enterprise Linux release 9.3 (Plow)
Python 3 を利用します。
$ python3 -V Python 3.9.18
pip のバージョンです。
$ pip3 -V pip 21.2.3 from /home/gowatana/pw/lib64/python3.9/site-packages/pip (python 3.9)
venv(Python の仮想環境)を作成します。
$ python3 -m venv pw
venv に切り替えます。
$ source pw/bin/activate
pip で passlib をインストールします。
$ pip3 install passlib Collecting passlib Downloading passlib-1.7.4-py2.py3-none-any.whl (525 kB) |????????????????????????????????| 525 kB 3.6 MB/s Installing collected packages: passlib Successfully installed passlib-1.7.4 WARNING: You are using pip version 21.2.3; however, version 24.0 is available. You should consider upgrading via the '/home/gowatana/pw/bin/python3 -m pip install --upgrade pip' command.
1-2. パスワード ハッシュの生成
パスワード ハッシュを生成します。
- Password: nutanix/4u
$ python3 -c 'from passlib.hash import bcrypt; import getpass; print(bcrypt.using(rounds=12, ident="2y").hash(getpass.getpass()))' Password: ★ハッシュ化するパスワードを入力 $2y$12$RH1gnEFhlSAApuypmw6cXeywowYus.EwPfZMh.hbPkkqGpnplaBO2
1-3. 作業環境の削除
venv から抜けておきます。
$ deactivate
venv を削除しておきます。
$ rm -rf pw
2. Dex へのユーザ追加
Kubeflow の認証で利用されている、Dex にユーザを追加します。
ConfigMap の YAML を取得します。
$ kubectl -n auth get configmap dex -o jsonpath='{.data.config\.yaml}' > kf_dex_config.yaml
ConfigMap に、ユーザ情報を追記します。
kf_dex_config.yaml
今回は、ユーザを3つ登録しておきます。ユーザ情報は、下記の 21行目~29行目のように追記しておきます。
- L21-23: nutanix
- L24-26: demo-01@example.com
- L27-29: demo-02@example.com
- hash は、さきほどの手順で生成したものです。
ConfigMap を更新します。
$ kubectl -n auth create configmap dex --from-file=config.yaml=kf_dex_config.yaml --dry-run=client -o yaml | kubectl apply -f - configmap/dex configured
dex Deployment の Pod を再起動します。
$ kubectl -n auth rollout restart deployment dex deployment.apps/dex restarted
Pod が Running になったことを確認します。
$ kubectl -n auth get pods NAME READY STATUS RESTARTS AGE dex-54b99b7998-46rm8 1/1 Running 0 30s
3. Kubeflow Profile の作成
ユーザが Kubeflow を利用できるように、Profile リソース オブジェクトを作成します。
3-1. nutanix ユーザ
nutanix ユーザむけに、Profile の YAML を作成します。
kf_profile_nutanix.yml
- L5: ここで指定した Profile 名と同名の Namespace が作成される
- L9: 通常はメールアドレス形式で入力します。
YAML を適用します。
$ kubectl apply -f kf_profile_nutanix.yml profile.kubeflow.org/nutanix created
Profile が作成されました。
$ kubectl get profiles.kubeflow.org NAME AGE kubeflow-user-example-com 9h nutanix 6s
「nutanix」Namespace と、Kubeflow 関連オブジェクトが自動作成されます。
$ kubectl -n nutanix get all NAME READY STATUS RESTARTS AGE pod/ml-pipeline-ui-artifact-5c4b49cff9-98z4p 2/2 Running 0 117s pod/ml-pipeline-visualizationserver-77f48b88c7-d7hrl 2/2 Running 0 117s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/ml-pipeline-ui-artifact ClusterIP 172.19.236.49 < none> 80/TCP 117s service/ml-pipeline-visualizationserver ClusterIP 172.19.1.111 < none> 8888/TCP 117s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/ml-pipeline-ui-artifact 1/1 1 1 117s deployment.apps/ml-pipeline-visualizationserver 1/1 1 1 117s NAME DESIRED CURRENT READY AGE replicaset.apps/ml-pipeline-ui-artifact-5c4b49cff9 1 1 1 117s replicaset.apps/ml-pipeline-visualizationserver-77f48b88c7 1 1 1 117s
Kubeflow UI に nutanix ユーザでログインすると・・・
「nutanix」Namespace が利用できるようになっています。
ただし、Google Chrome だと以前にパスワード侵害があったユーザとして認識されてしまうので、デモで利用するには微妙そうです。
Kubeflow UI の画面右上のボタンでログアウトします。
3-2. demo-01@example.com ユーザ
demo-01@example.com ユーザむけに、Profile の YAML を作成します。
kf_profile_demo-01.yml
- L5: ここで指定した Profile 名と同名の Namespace が作成される
- L9: ユーザはメールアドレス形式で指定
YAML を適用します。
$ kubectl apply -f kf_profile_demo-01.yml profile.kubeflow.org/demo-01 created
Profile が作成されました。
$ kubectl get profiles.kubeflow.org NAME AGE demo-01 5s kubeflow-user-example-com 9h nutanix 4m21s
「demo-01」Namespace と、Kubeflow 関連オブジェクトが自動作成されます。
$ kubectl -n demo-01 get all NAME READY STATUS RESTARTS AGE pod/ml-pipeline-ui-artifact-5c4b49cff9-xh2bv 2/2 Running 0 13s pod/ml-pipeline-visualizationserver-77f48b88c7-xsm67 2/2 Running 0 13s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/ml-pipeline-ui-artifact ClusterIP 172.19.131.133 < none> 80/TCP 15s service/ml-pipeline-visualizationserver ClusterIP 172.19.4.209 < none> 8888/TCP 15s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/ml-pipeline-ui-artifact 1/1 1 1 14s deployment.apps/ml-pipeline-visualizationserver 1/1 1 1 14s NAME DESIRED CURRENT READY AGE replicaset.apps/ml-pipeline-ui-artifact-5c4b49cff9 1 1 1 14s replicaset.apps/ml-pipeline-visualizationserver-77f48b88c7 1 1 1 14s
Kubeflow UI に demo-01@example.com ユーザ(パスワード: nutanix/4u)でログインすると・・・
「demo-01」Namespace が利用できるようになっています。
以上。