1. はじめに
以下の記事でmanifestファイルを使用して、Kubeflowを構築しました。
初期のユーザとしてuser@example.com
がいるのですが、ユーザを作成する際にKubernetes周りの操作が必要で、いろいろ調べたのでこちらの記事でシェアできればと思います。
今回の記事では、ユーザのProfileの作成や権限周りの設定は行いません。
あくまでもユーザを作成して、Kubeflowのダッシュボードにアクセスできるところまでを扱います。
2. ユーザ作成
1. ConfigMapの出力
パスワードの管理方法がConfigMapに記載されていて良いのか?という疑問はありますが、ユーザ情報はConfigMapで管理されているようです。
そのため、まずはConfigMapの情報を出力します。
$ kubectl get configmap dex -n auth -o yaml > dex.yaml
2. ユーザ情報の追加
出力されたファイルの中身を確認します。(一部を記載しています)
staticPasswords
に追加したいユーザの情報を追記すればユーザを追加できます。
apiVersion: v1 kind: ConfigMap data: config.yaml: | ~~~ (省略) ~~~ staticPasswords: - email: user@example.com hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72 # https://github.com/dexidp/dex/pull/1601/commits # FIXME: Use hashFromEnv instead username: user userID: "15841185641784" ~~~ (省略) ~~~ ~~~ (省略) ~~~
基本的には下記の情報を追記すればOKです。
- hash
- username
hash
がパスワードに相当しており、パスワードの作成方法はbcrypt
でハッシュ化された値を使用します。
下記のスクリプトを使用すれば、ハッシュ化された値を取得できます。
from passlib.hash import bcrypt password = 'passw0rd!' print(bcrypt.using(rounds=12, ident="2y").hash(password))
今回はtest-user
というユーザを追加したいと思います。
パスワードはpassw0rd!
として、上記のスクリプトでハッシュ化しています。
下記のようにユーザ情報を追加しました。
apiVersion: v1 kind: ConfigMap data: config.yaml: | ~~~ (省略) ~~~ staticPasswords: - email: user@example.com hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72 # https://github.com/dexidp/dex/pull/1601/commits # FIXME: Use hashFromEnv instead username: user userID: "15841185641784" # 今回追加分のユーザ - email: test-user@example.com hash: $2y$12$ZlmdAKd08pRi1QV2vAOWte6wrYEqRx/ppHif3pwkTQnehXYA3ZwUy username: test-user ~~~ (省略) ~~~ ~~~ (省略) ~~~
3. 設定の適用
まずは修正したConfigMapの情報を適用します。
$ kubectl apply -f dex.yaml
configmap/dex configured
次に修正した結果をデプロイします。
$ kubectl rollout restart deployment dex -n auth deployment.apps/dex restarted
これでユーザの追加が完了です。
Kubeflowのダッシュボードを立ち上げれば、追加したユーザでログインができます。