第5章 ワークスペースでのクレデンシャルと設定の使用
ワークスペースでクレデンシャルと設定を使用できます。
これを行うには、組織の OpenShift Dev Spaces インスタンスの OpenShift クラスター内の DevWorkspace
コンテナーにクレデンシャルと設定をマウントします。
- クレデンシャルと機密性の高い設定を Kubernetes シークレット としてマウントします。1 つの例は、Git クレデンシャルストア です。
- 機密性のない設定を Kubernetes ConfigMaps としてマウントします。
クラスター内の DevWorkspace
Pod が認証を必要とするコンテナーレジストリーにアクセスできるようにする必要がある場合は、DevWorkspace
Pod の イメージプルシークレット を作成します。
マウントプロセスでは、標準の Kubernetes マウントメカニズムを使用し、既存のリソースに追加のラベルとアノテーションを適用する必要があります。新しいワークスペースを開始するとき、または既存のワークスペースを再起動するときに、リソースがマウントされます。
さまざまなコンポーネントの永続的なマウントポイントを作成できます。
-
settings.xml
ファイルなどの Maven 設定 - SSH キーペア
- AWS 認証トークン
- 設定ファイル
- 永続ストレージ
- Git 認証情報ストアファイル
5.1. Git クレデンシャルストアの使用
組織の OpenShift Dev Spaces インスタンスの管理者によって設定された GitHub、GitLab、または Bitbucket の OAuth の代わりに、Git クレデンシャルストアを Kubernetes シークレットとして適用できます。
組織の OpenShift Dev Spaces インスタンスの OpenShift クラスターのユーザープロジェクトに Kubernetes シークレットを適用します。
シークレットを適用すると、マウントされた Git クレデンシャルストアへのパスを含む Git 設定ファイルが自動的に設定され、クラスター内の /etc/gitconfig
にある DevWorkspace
コンテナーにマウントされます。これにより、Git クレデンシャルストアをワークスペースで利用できるようになります。
前提条件
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。Getting started with the CLI を参照。 -
base64
コマンドラインツールは、使用しているオペレーティングシステムにインストールされている。
手順
すでにある場合は、ホームディレクトリーで
.git-credentials
ファイルを見つけて開きます。または、このファイルがない場合は、Git クレデンシャルストレージ形式 を使用して、新しい.git-credentials
ファイルを保存します。各クレデンシャルは、ファイル内の独自の行に保存されます。https://<username>:<token>@<git_server_hostname>
例5.1
.git-credentials
ファイルの行https://trailblazer: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@github.com
シークレットの
.git-credentials
ファイルからクレデンシャルを選択します。次の手順のために、選択したクレデンシャルを Base64 にエンコードします。ヒントファイル内のすべての行をエンコードするには:
$ cat .git-credentials | base64 | tr -d '\n'
選択した行をエンコードするには:
$ echo -n '<copied_and_pasted_line_from_.git-credentials>' | base64
ユーザープロジェクトに新しい OpenShift シークレットを作成します。
apiVersion: v1 kind: Secret metadata: name: git-credentials-secret labels: controller.devfile.io/git-credential: 'true' 1 controller.devfile.io/watch-secret: 'true' annotations: controller.devfile.io/mount-path: /etc/secret 2 data: credentials: <Base64_content_of_.git-credentials> 3
ヒントユーザープロジェクトで複数の Git クレデンシャルシークレットを作成して適用できます。それらはすべて、
DevWorkspace
コンテナーにマウントされる 1 つのシークレットにコピーされます。たとえば、マウントパスを/etc/secret
に設定すると、すべての Git クレデンシャルを持つ 1 つのシークレットが/etc/secret/credentials
にマウントされます。ユーザープロジェクトのすべての Git クレデンシャルシークレットを同じマウントパスに設定する必要があります。マウントパスは/etc/gitconfig
で設定された Git 設定ファイルで自動的に設定されるため、マウントパスを任意のパスに設定できます。シークレットを適用します。
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF