4.5.2. Bitbucket サーバーでの認証

Red Hat CodeReady Workspaces ユーザーは、パブリックリポジトリー Bitbucket SCM(Source Code Management)システムをプロジェクトのソースとして使用できます。リポジトリーのルートで devfile を使用する標準のファクトリーフローは、Red Hat CodeReady Workspaces の 7.24 バージョンを開始できます。

プライベートリポジトリーを使用するには、以下で説明されている追加の設定が必要です。

Bitbucket 認証は、個人アクセストークンの使用をベースとします。各 Bitbucket ユーザーは、異なる名前、パーミッション、有効期限などを持つ一定量の個人アクセストークンを要求できます。これらのトークンを使用して、Bitbucket REST API 呼び出しに署名し、Git リポジトリー操作を実行することができます。

Red Hat CodeReady Workspaces 側で Bitbucket 認証を許可するには、個人トークンをシークレット形式でユーザーの namespace に保存する必要があります。シークレットは以下のようになります。

apiVersion: v1
kind: Secret
metadata:
  name: bitbucket-personal-access-token-secret
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: scm-personal-access-token
  annotations:
    che.eclipse.org/expired-after: '-1'
    che.eclipse.org/che-userid: '355d1ce5-990e-401e-9a8c-094bca10b5b3'
    che.eclipse.org/scm-userid: '2'
    che.eclipse.org/scm-username: 'user-foo'
    che.eclipse.org/scm-url: 'https://bitbucket.apps.cluster-example.com'
data:
  token: TlRnNE1UazRORFl5TWpNeU9sMTI1aDFFT2dRbXBlTUYvbmhiLzNQUC9hT08=

シークレットの主な部分は以下のようになります。

ラベル

app.kubernetes.io/component

SCM 個人トークンシークレットであることを示します。

アノテーション

che.eclipse.org/che-userid

トークンが属するユーザーの Red Hat CodeReady Workspaces ID。

アノテーション

che.eclipse.org/scm-userid

トークンが属する Bitbucket ユーザー ID

アノテーション

che.eclipse.org/scm-username

トークンが属する Bitbucket ユーザー名

アノテーション

che.eclipse.org/scm-url

このトークンが属する Bitbucket サーバーの URL

アノテーション

che.eclipse.org/expired-after

個人アクセストークンの有効期限

データエントリー

token

個人アクセストークンの base-64 でエンコードされた値

注記

Linux マシンで base64 ツールを使用して文字列を base64 形式にエンコードすると、ソース文字列の最後に改行文字が追加され、値はデコード後の認証ヘッダー値として使用できなくなります。これを回避するには、base64 -w0 を使用します。これにより、新たに追加された行が削除されるか、または 'tr -džn' を使用して改行が明示的に削除されます。

  1. REST API URL への呼び出しを使用してシークレットからユーザー ID を取得するには、以下を実行します。

    • Bitbucket の場合:

      https://<bitbucket-hostname>/rest/api/1.0/users/<username>
    • CodeReady Workspaces の場合

      https://{che-hostname}/api/user
    • シークレットから取得したトークン認証情報に関して、別のシークレットが自動的に作成され、Git 操作に対する認証が可能になります。このシークレットは Git 認証情報ファイルとしてワークスペースコンテナーにマウントされ、プライベート Git リポジトリーと連携するために追加の設定は不要になります。
    • リモート Git リポジトリーが自己署名証明書を使用する場合は、サーバー設定を追加します。参照 : https://access.redhat.com/documentation/en-us/red_hat_codeready_workspaces/2.6/html-single/installation_guide/index#deploying-codeready-workspaces-with-support-for-git-repositories-with-self-signed-certificates_crw