3.10.3. GitHub サーバーでの認証

GitHub システムでの認証の設定は GitLab に似ています。

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

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

例3.9 GitHub 個人アクセストークンシークレット

apiVersion: v1
kind: Secret
metadata:
  name: github-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: '1651062'
    che.eclipse.org/scm-username: 'user-foo'
    che.eclipse.org/scm-url: 'https://github.com'
data:
  token: Yzh5cEt6cURxUWVCa3FKazhtaHg=

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

ラベル

app.kubernetes.io/component

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

アノテーション

che.eclipse.org/che-userid

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

アノテーション

che.eclipse.org/scm-userid

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

アノテーション

che.eclipse.org/scm-username

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

アノテーション

che.eclipse.org/scm-url

このトークンが属する GitHub サーバーの URL通常、これは https://github.comになります。

アノテーション

che.eclipse.org/expired-after

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

データエントリー

token

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

注記

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

  1. シークレットからユーザー ID を取得するには、REST API URL を呼び出します。

    https://api.github.com/user
    • CodeReady Workspaces の場合

      \https://codeready-<openshift_deployment_name>.<domain_name>/api/user
    • シークレットから取得したトークン認証情報に関して、別のシークレットが自動的に作成され、Git 操作に対する認証が可能になります。このシークレットは Git 認証情報ファイルとしてワークスペースコンテナーにマウントされ、プライベート Git リポジトリーと連携するために追加の設定は不要になります。
    • リモート Git リポジトリーが自己署名証明書を使用する場合は、サーバー設定を追加します。自己署名証明書を使用した Git リポジトリーをサポートする CodeReady Workspaces のデプロイを参照してください。