NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Kubeflow on NKE での自動 Profile 作成。

Kubeflow on NKE の手順に沿って構築した Kubeflow 環境では、Kubeflow UI を利用するユーザの Profile を手動で作成する必要があります。

今回は、Kubeflow UI にユーザがログインした際に、Profile が自動作成されるように設定を変更してみます。

今回の前提

NKE による Kubernetes クラスタには、下記のように kubeflow で接続できるようにしておきます。

Kubeflow を、NKE による Kubernetes クラスタにインストールしてあります。

Kubeflow の認証を受け持つ Dex に、demo-02@example.com ユーザを作成してあります。

demo-02@example.com ユーザの Profile は未作成です。

$ kubectl get profiles.kubeflow.org
NAME                        AGE
demo-01                     19h
kubeflow-user-example-com   19h
nutanix                     19h

centraldashboard Deployment の設定変更

デフォルトでは、centraldashboard コンテナに設定される環境変数「REGISTRATION_FLOW」が false になっています。

$ kubectl get deployment centraldashboard -n kubeflow -o=jsonpath='{.spec.template.spec.containers[?(@.name=="centraldashboard")].env[?(@.name=="REGISTRATION_FLOW")].value}' | more
false

centraldashboard Deployment の YAML を保存します。

$ kubectl get deployment centraldashboard -n kubeflow -o yaml > kf_centraldashboard.yml

保存した YAML の、centraldashboard コンテナの環境変数(env)を編集します。

$ vi kf_centraldashboard.yml

REGISTRATION_FLOW の値を false → true に変更します。

    spec:
      containers:
      - env:
        - name: USERID_HEADER
          value: kubeflow-userid
        - name: USERID_PREFIX
        - name: PROFILES_KFAM_SERVICE_HOST
          value: profiles-kfam.kubeflow
        - name: REGISTRATION_FLOW
          value: "true" ★false→true
        - name: DASHBOARD_LINKS_CONFIGMAP
          value: centraldashboard-config
        - name: LOGOUT_URL
          value: /authservice/logout
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace

YAML を適用して、Deployment の設定を変更します。

$ kubectl apply -f kf_centraldashboard.yml
deployment.apps/centraldashboard configured

このとき、centraldashboard の Pod が自動的に再作成されるので、YAML 適用後に Running になっていること(例では 11秒前)を確認します。

$ kubectl -n kubeflow get pod -l app=centraldashboard
NAME                                READY   STATUS    RESTARTS   AGE
centraldashboard-57cf6cf6cd-dxwtg   2/2     Running   0          11s

Kubeflow UI へのログイン → Profile 自動作成

kubeflow UI に Profile 未作成のユーザ(demo-02@example.com)ログインします。

Welcome 画面が表示されるので、「Start Setup」をクリックします。

Namespace Name の入力内容(デフォルトではユーザ名)を確認して、「Finish」をクリックします。

これで、Profile が自動作成されます。

kubectl でも、Profile が作成されています。

$ kubectl get profiles.kubeflow.org
NAME                        AGE
demo-01                     19h
demo-02                     10s
kubeflow-user-example-com   19h
nutanix                     19h

Profile の Namespace と、その配下のリソース オブジェクトも自動作成されます。

$ kubectl -n demo-02 get all
NAME                                                   READY   STATUS    RESTARTS   AGE
pod/ml-pipeline-ui-artifact-5c4b49cff9-2gk62           2/2     Running   0          18s
pod/ml-pipeline-visualizationserver-77f48b88c7-64kvl   2/2     Running   0          18s

NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/ml-pipeline-ui-artifact           ClusterIP   172.19.108.121           80/TCP     23s
service/ml-pipeline-visualizationserver   ClusterIP   172.19.12.155            8888/TCP   23s

NAME                                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ml-pipeline-ui-artifact           1/1     1            1           23s
deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           23s

NAME                                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/ml-pipeline-ui-artifact-5c4b49cff9           1         1         1       23s
replicaset.apps/ml-pipeline-visualizationserver-77f48b88c7   1         1         1       23s

Profile の削除

Profile を削除すると、あらためてログインによる自動作成を実施できます。

$ kubectl delete profiles.kubeflow.org demo-02
profile.kubeflow.org "demo-02" deleted

Profile を削除すると、紐づけられていた Namespace も同時に削除されます。

$ kubectl -n demo-02 get all
No resources found in demo-02 namespace.

以上。

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。