第6章 ワークスペースでのクレデンシャルと設定の使用
ワークスペースでクレデンシャルと設定を使用できます。
これを行うには、組織の OpenShift Dev Spaces インスタンスの OpenShift クラスター内の DevWorkspace
コンテナーにクレデンシャルと設定をマウントします。
- クレデンシャルと機密性の高い設定を Kubernetes シークレット としてマウントします。
- 機密性のない設定を Kubernetes ConfigMaps としてマウントします。
クラスター内の DevWorkspace
Pod が認証を必要とするコンテナーレジストリーにアクセスできるようにする必要がある場合は、DevWorkspace
Pod の イメージプルシークレット を作成します。
マウントプロセスでは、標準の Kubernetes マウントメカニズムを使用し、既存のリソースに追加のラベルとアノテーションを適用する必要があります。新しいワークスペースを開始するとき、または既存のワークスペースを再起動するときに、リソースがマウントされます。
さまざまなコンポーネントの永続的なマウントポイントを作成できます。
6.1. Git 資格情報の使用
組織の OpenShift Dev Spaces インスタンスの管理者によって設定された GitHub、GitLab、または Bitbucket の OAuth の代わりに、Git 認証情報、認証情報ストア、およびアクセストークンを Kubernetes シークレットとして適用できます。
6.1.1. Git クレデンシャルストアの使用
組織の OpenShift Dev Spaces インスタンスの管理者が GitHub、GitLab、または Bitbucket に対して OAuth を設定していない場合は、Git 認証情報ストアを Kubernetes Secret として適用できます。
Git 資格情報ストアを Secret としてマウントすると、DevWorkspace Operator が Git 資格情報をワークスペースコンテナー内の .gitconfig
ファイルに適用します。
組織の OpenShift Dev Spaces インスタンスの OpenShift クラスターのユーザープロジェクトに Kubernetes シークレットを適用します。
シークレットを適用すると、マウントされた Git クレデンシャルストアへのパスを含む Git 設定ファイルが自動的に設定され、クラスター内の /etc/gitconfig
にある DevWorkspace
コンテナーにマウントされます。これにより、Git クレデンシャルストアをワークスペースで利用できるようになります。
前提条件
手順
すでにある場合は、ホームディレクトリーで
.git-credentials
ファイルを見つけて開きます。または、このファイルがない場合は、Git クレデンシャルストレージ形式 を使用して、新しい.git-credentials
ファイルを保存します。各クレデンシャルは、ファイル内の独自の行に保存されます。https://<username>:<token>@<git_server_hostname>
例6.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
6.1.2. Git プロバイダーアクセストークンの使用
組織の OpenShift Dev Spaces インスタンスの管理者が GitHub、GitLab、または Bitbucket に対して OAuth を設定していない場合、個人のアクセストークンを Kubernetes Secret として適用できます。
アクセストークンを Secret としてマウントすると、OpenShift Dev Spaces サーバーは、リポジトリーの /.che
および /.vscode
フォルダーへのアクセスを含め、ワークスペースの作成中に複製されたリモートリポジトリーにアクセスできます。
組織の OpenShift Dev Spaces インスタンスの OpenShift クラスターのユーザープロジェクトに Kubernetes シークレットを適用します。
シークレットを適用したら、プライベート GitHub、GitLab、または Bitbucket-server リポジトリーから新しいワークスペースを作成できます。
ユーザープロジェクトでは、Git プロバイダーごとに複数のアクセストークンシークレットを作成して適用できます。
前提条件
手順
アクセストークンをコピーし、Base64 にエンコードします。
$ echo -n '<your_access_token>' | base64
ユーザープロジェクトで新しい OpenShift シークレットを準備します。
kind: Secret apiVersion: v1 metadata: name: personal-access-token-<your_chosen_name_for_this_token> labels: app.kubernetes.io/component: scm-personal-access-token app.kubernetes.io/part-of: che.eclipse.org annotations: che.eclipse.org/che-userid: <devspaces_user_ID> 1 che.eclipse.org/scm-personal-access-token-name: <git_provider_name> 2 che.eclipse.org/scm-url: <Git_provider_endpoint> 3 che.eclipse.org/scm-userid: <Git_provider_user_ID> 4 che.eclipse.org/scm-username: <Git_provider_username> data: token: <Base64_encoded_access_token> type: Opaque
- 1
- あなたの Che ユーザー ID。
<che-endpoint>/api/user
を取得して、Che ユーザーデータを取得できます。 - 2
- Git プロバイダー名:
github
またはgitlab
またはbitbucket-server
。 - 3
- Git プロバイダーの URL。
- 4
- Git プロバイダーのユーザー ID。API ドキュメントに従ってユーザーオブジェクトを取得します。
-
GitHub: ユーザーを取得します。レスポンスの
id
値を参照してください。 -
GitLab: ユーザーの一覧表示: 通常のユーザー の場合は、
username
フィルターを使用します:/users?username=:username
。レスポンスのid
値を参照してください。 -
Bitbucket Server: ユーザーを取得します。レスポンスの
id
値を参照してください。
-
GitHub: ユーザーを取得します。レスポンスの
シークレットを適用します。
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF