This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.15. git シークレットを使用したパイプラインの認証
Git シークレットは、Git リポジトリーと安全に対話するための認証情報で設定されており、認証の自動化に使用されることが多いです。Red Hat OpenShift Pipelines では、Git シークレットを使用して、実行時に Git リポジトリーと対話するパイプライン実行およびタスク実行を認証できます。
パイプライン実行またはタスク実行は、関連付けられたサービスアカウントを介してシークレットにアクセスできます。Pipeline は、Git シークレットの Basic 認証および SSH ベースの認証のアノテーション (キーと値のペア) としての使用をサポートします。
4.15.1. 認証情報の選択 リンクのコピーリンクがクリップボードにコピーされました!
パイプライン実行またはタスク実行には、異なる Git リポジトリーにアクセスするために複数の認証が必要になる場合があります。Pipeline がその認証情報を使用できるドメインで各シークレットにアノテーションを付けます。
Git シークレットの認証情報アノテーションキーは tekton.dev/git-
で開始する必要があり、その値は Pipeline がその認証情報を使用するホストの URL になります。
以下の例では、Pipeline はユーザー名とパスワードに依存する basic-auth
シークレットを使用して github.com
および gitlab.com
のリポジトリーにアクセスします。
例: Basic 認証用の複数の認証情報
ssh-auth
シークレット (秘密鍵) を使用して Git リポジトリーにアクセスすることもできます。
例: SSH ベースの認証の秘密鍵
- 1
- SSH 秘密鍵の文字列を含むファイルの名前。
4.15.2. Git の Basic 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
パイプラインが、パスワードで保護されたリポジトリーからリソースを取得するには、そのパイプラインの Basic 認証を設定する必要があります。
パイプラインの Basic 認証を設定するには、secret.yaml
、serviceaccount.yaml
、および run.yaml
ファイルを指定されたリポジトリーの Git シークレットからの認証情報で更新します。このプロセスが完了すると、Pipeline はその情報を使用して指定されたパイプラインリソースを取得できます。
GitHub では、プレーンパスワードを使用した認証は非推奨になりました。代わりに、パーソナルアクセストークン を使用します。
手順
secret.yaml
ファイルで、ターゲット Git リポジトリーにアクセスするためのユーザー名とパスワードまたは GitHub パーソナルアクセストークン を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow serviceaccount.yaml
ファイルで、シークレットを適切なサービスアカウントに関連付けます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow run.yaml
ファイルで、サービスアカウントをタスク実行またはパイプライン実行に関連付けます。サービスアカウントをタスク実行に関連付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントを
PipelineRun
リソースに関連付けます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
変更を適用します。
oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
$ oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.15.3. Git の SSH 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
パイプラインが SSH キーで設定されたリポジトリーからリソースを取得するには、そのパイプラインの SSH ベースの認証を設定する必要があります。
パイプラインの SSH ベースの認証を設定するには、secret.yaml
、serviceaccount.yaml
、および run.yaml
ファイルを、指定されたリポジトリーの SSH 秘密鍵からの認証情報を使用して更新します。このプロセスが完了すると、Pipeline はその情報を使用して指定されたパイプラインリソースを取得できます。
Basic 認証ではなく SSH ベースの認証を使用することを検討してください。
手順
-
SSH 秘密鍵 を生成するか、既存の秘密鍵をコピーします。これは通常
~/.ssh/id_rsa
ファイルで入手できます。 secret.yaml
ファイルで、ssh-privatekey
の値を SSH 秘密鍵ファイルの名前に設定し、known_hosts
の値を既知のホストファイルの名前に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Important秘密鍵を省略すると、Pipelines は任意のサーバーの公開鍵を受け入れます。
-
オプション: カスタム SSH ポートを指定するには、
annotation
値の最後に:<port number>
を追加します。たとえば、tekton.dev/git-0: github.com:2222
などになります。 serviceaccount.yaml
ファイルで、ssh-key
シークレットをbuild-bot
サービスアカウントに関連付けます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow run.yaml
ファイルで、サービスアカウントをタスク実行またはパイプライン実行に関連付けます。サービスアカウントをタスク実行に関連付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントをパイプライン実行に関連付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
変更を適用します。
oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
$ oc apply --filename secret.yaml,serviceaccount.yaml,run.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.15.4. git タイプのタスクでの SSH 認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
Git コマンドを呼び出す際には、タスクの手順で直接 SSH 認証を使用できます。SSH 認証は $HOME
変数を無視し、/etc/passwd
ファイルで指定されたユーザーのホームディレクトリーのみを使用します。そのため、タスクの各手順では、/tekton/home/.ssh
ディレクトリーを、関連付けられたユーザーのホームディレクトリーにシンボリックリンクする必要があります
ただし、git
タイプのパイプラインリソースまたは Tekton カタログで利用可能な git-clone
タスクを使用する場合は、明示的なシンボリックリンクは必要ありません。
git
タイプのタスクで SSH 認証を使用する例として、authenticating-git-commands.yaml を参照してください。
4.15.5. root 以外のユーザーとしてのシークレットの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下のような特定のシナリオでは、root 以外のユーザーとしてシークレットを使用する必要がある場合があります。
- コンテナーが実行するために使用するユーザーとグループは、プラットフォームによってランダム化されます。
- タスクの手順では、root 以外のセキュリティーコンテキストを定義します。
- タスクは、root 以外のグローバルセキュリティーコンテキストを指定します。これは、タスクのすべての手順に適用されます。
このようなシナリオでは、root 以外のユーザーとしてタスク実行とパイプライン実行を実行する際の次の側面を考慮してください。
-
Git の SSH 認証では、ユーザーが
/etc/passwd
ディレクトリーに有効なホームディレクトリーを設定している必要があります。有効なホームディレクトリーのない UID を指定すると、認証に失敗します。 -
SSH 認証は
$HOME
環境変数を無視します。そのため、Pipelines (/tekton/home
) で定義される$HOME
ディレクトリーから、root 以外のユーザーの有効なホームディレクトリーに、適切なシークレットファイルをシンボリックリンクする必要があります。
さらに、root 以外のセキュリティーコンテキストで SSH 認証を設定するには、git コマンドを認証する例 を参照してください。
4.15.6. 特定の手順へのシークレットアクセスの制限 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、Pipeline のシークレットは $HOME/tekton/home
ディレクトリーに保存され、タスクのすべての手順で利用できます。
シークレットを特定の手順に制限するには、シークレット定義を使用してボリュームを指定し、特定の手順でボリュームをマウントします。