機械学習モデルのコードをJupyterノートブックで開発していると、環境変数や、ユーザー名・パスワードといったシークレット、構成プロパティを参照したい場面が出てきます。
Kubernetesでは、シークレットや構成プロパティは「etcd」データベースに格納されますが、Kubeflow Notebook Serverからこれらを参照するにはどうすればよいのでしょうか。
本ガイドでは、ノートブック内から環境変数・シークレット・構成プロパティを参照する方法を、ステップごとに解説します。

Kubeflow Notebook ServerのPodDefaults設定
前提条件: KubernetesおよびKubeflowに関する基本的な知識があり、Kubeflowのインストールが完了していること。
Kubeflowは、Kubernetes Engine上で機械学習パイプラインの実験とデプロイを行うために設計されています。Kubeflowのインストールを実行すると、以下の9つのnamespaceが作成されます。

Kubeflowのコンポーネントの1つであるNotebook Serverは、デフォルトで「kubeflow-

手順は以下のとおりです。
- kubeflow-
namespaceに、DB_USERおよびDB_PASSWORD環境変数用のシークレットを作成します。

2. 以下の内容で「db-root-secret.yaml」を作成します。

続いて、kubeflow-
kubectl apply -n kubeflow-vinay -f db-root-secret.yaml
3. 「max_allowed_packet.cnf」というファイル名で、データベース構成を含むconfigMapを作成します。マップのキーは「db-config」、namespaceはkubeflow-

上記3つの手順が完了すると、Kubernetesの構成に以下が反映されているはずです。

4. 以下の内容で「add-db-info-poddefaults.yaml」を作成します。

続いて、以下のようにkubectl applyコマンドを実行します。
kubectl apply -f kubeflow-poddefaults.yaml
「add-database-info」のpod defaultに紐づくKubernetesオブジェクトを確認します。

5. Kubeflowで新しいNotebook Serverを作成します。追加したpod defaultが構成のドロップダウンに表示されていることが確認できます。

6. 最後に、作成したNotebook Serverに接続し、サンプルコードを実行して動作を確認します。

環境変数

マウントしたパス上の構成ファイル
参考資料:
本記事に登場するコマンドとファイルのテキスト版は、以下からダウンロードできます: https://bit.ly/3k8B08d