第6章 ワークスペースでのクレデンシャルと設定の使用


ワークスペースでクレデンシャルと設定を使用できます。

これを行うには、組織の OpenShift Dev Spaces インスタンスの OpenShift クラスター内の DevWorkspace コンテナーにクレデンシャルと設定をマウントします。

  • クレデンシャルと機密性の高い設定を Kubernetes シークレット としてマウントします。
  • 機密性のない設定を Kubernetes ConfigMaps としてマウントします。

クラスター内の DevWorkspace Pod が認証を必要とするコンテナーレジストリーにアクセスできるようにする必要がある場合は、DevWorkspace Pod の イメージプルシークレット を作成します。

マウントプロセスでは、標準の Kubernetes マウントメカニズムを使用し、既存のリソースに追加のラベルとアノテーションを適用する必要があります。新しいワークスペースを開始するとき、または既存のワークスペースを再起動するときに、リソースがマウントされます。

さまざまなコンポーネントの永続的なマウントポイントを作成できます。

  • ユーザー固有settings.xml ファイルなどの Maven 設定
  • SSH キーペア
  • AWS 認証トークン
  • 設定ファイル
  • 永続ストレージ
  • Git 認証情報

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 クレデンシャルストアをワークスペースで利用できるようになります。

前提条件

  • OpenShift クラスターへの管理権限を持つアクティブな oc セッション。CLI の使用方法 を参照してください。
  • base64 コマンドラインツールは、使用しているオペレーティングシステムにインストールされている。

手順

  1. すでにある場合は、ホームディレクトリーで .git-credentials ファイルを見つけて開きます。または、このファイルがない場合は、Git クレデンシャルストレージ形式 を使用して、新しい .git-credentials ファイルを保存します。各クレデンシャルは、ファイル内の独自の行に保存されます。

    https://<username>:<token>@<git_server_hostname>

    例6.1 .git-credentials ファイルの行

    https://trailblazer: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@github.com
  2. シークレットの .git-credentials ファイルからクレデンシャルを選択します。次の手順のために、選択したクレデンシャルを Base64 にエンコードします。

    ヒント
    • ファイル内のすべての行をエンコードするには:

      $ cat .git-credentials | base64 | tr -d '\n'

    • 選択した行をエンコードするには:

      $ echo -n '<copied_and_pasted_line_from_.git-credentials>' | base64

  3. ユーザープロジェクトに新しい 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
    1
    controller.devfile.io/git-credential ラベルは、シークレットに Git クレデンシャルが含まれていることを示します。
    2
    DevWorkspace コンテナーのカスタム絶対パス。シークレットは、このパスに credentials ファイルとしてマウントされます。デフォルトのパスは / です。
    3
    前の手順で Base64 にエンコードした .git-credentials から選択したコンテンツ。
    ヒント

    ユーザープロジェクトで複数の Git クレデンシャルシークレットを作成して適用できます。それらはすべて、DevWorkspace コンテナーにマウントされる 1 つのシークレットにコピーされます。たとえば、マウントパスを /etc/secret に設定すると、すべての Git クレデンシャルを持つ 1 つのシークレットが /etc/secret/credentials にマウントされます。ユーザープロジェクトのすべての Git クレデンシャルシークレットを同じマウントパスに設定する必要があります。マウントパスは /etc/gitconfig で設定された Git 設定ファイルで自動的に設定されるため、マウントパスを任意のパスに設定できます。

  4. シークレットを適用します。

    $ 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 プロバイダーごとに複数のアクセストークンシークレットを作成して適用できます。

前提条件

  • OpenShift クラスターへの管理権限を持つアクティブな oc セッション。CLI の使用方法 を参照してください。
  • base64 コマンドラインツールは、使用しているオペレーティングシステムにインストールされている。

手順

  1. アクセストークンをコピーし、Base64 にエンコードします。

    $ echo -n '<your_access_token>' | base64
  2. ユーザープロジェクトで新しい 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 ドキュメントに従ってユーザーオブジェクトを取得します。
  3. シークレットを適用します。

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.