Kubeflowのユーザ作成方法


1. はじめに

以下の記事でmanifestファイルを使用して、Kubeflowを構築しました。

venoda.hatenablog.com

初期のユーザとして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です。

  • email
  • 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のダッシュボードを立ち上げれば、追加したユーザでログインができます。