5.3. ワークスペースを使用したシークレットの提供
ワークスペースを使用して、Git リポジトリーおよびコンテナーリポジトリー向けの認証シークレットを提供できます。
タスク名前付き Workspace を Task に設定し、ワークスペースのマウント先となるパスを指定できます。タスクを実行するときに、この名前のワークスペースとしてシークレットを指定します。OpenShift Pipelines がタスクを実行すると、シークレット内の情報がタスクで利用できるようになります。
ワークスペースを使用して認証シークレットを指定する場合は、シークレットのアノテーションは必要ありません。
5.3.1. ワークスペースを使用した Git の SSH 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
パイプラインが SSH キーで設定されたリポジトリーからリソースを取得するには、そのパイプラインの SSH ベースの認証を設定する必要があります。
パイプラインの SSH ベースの認証を設定するには、SSH 秘密鍵を使用して認証シークレットを作成し、タスクでこのシークレットの名前付きワークスペースを設定し、タスクの実行時にシークレットを指定します。
手順
次のコマンドを入力して、既存の
.ssh
ディレクトリー内のファイルから Git SSH 認証シークレットを作成します。oc create secret generic my-github-ssh-credentials \ --from-file=id_ed25519=/home/user/.ssh/id_ed25519 \ --from-file=known_hosts=/home/user/.ssh/known_hosts
$ oc create secret generic my-github-ssh-credentials \
1 --from-file=id_ed25519=/home/user/.ssh/id_ed25519 \
2 --from-file=known_hosts=/home/user/.ssh/known_hosts
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow タスク定義で、Git 認証用の名前付きワークスペース (例:
ssh-directory)
を設定します。ワークスペースの定義例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
タスクの手順では、
$(workspaces.<workspace_name>.path)
環境変数のパスを使用してディレクトリーにアクセスします (例:$(workspaces.ssh-directory.path))
。 タスクを実行するときは、
tkn task start
コマンドに--workspace
引数を含めて、名前付きワークスペースのシークレットを指定します。tkn task start <task_name>
$ tkn task start <task_name> --workspace name=<workspace_name>,secret=<secret_name>
1 # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<workspace_name>
は、設定したワークスペースの名前に、<secret_name>
は、作成したシークレットの名前に置き換えます。
認証に SSH 鍵を使用して Git リポジトリーをクローンするタスクの例
- 1
- スクリプトは、シークレットの内容 (フォルダー形式) を
${HOME}/.ssh
にコピーします。これは、ssh
が認証情報を検索する標準フォルダーです。
タスクを実行するためのコマンドの例
tkn task start git-clone
$ tkn task start git-clone
--param url=git@github.com:example-github-user/buildkit-tekton
--workspace name=output,emptyDir=""
--workspace name=ssh-directory,secret=my-github-ssh-credentials
--use-param-defaults --showlog
5.3.2. ワークスペースを使用したコンテナーレジストリー認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
パイプラインがレジストリーからコンテナーイメージを取得するには、そのレジストリーの認証を設定する必要があります。
コンテナーレジストリーの認証を設定するには、Docker 設定ファイルを使用して認証シークレットを作成し、タスクでこのシークレットの名前付きワークスペースを設定し、タスクの実行時にシークレットを指定します。
手順
次のコマンドを入力して、認証情報を含めて、既存の
config.json
ファイルからコンテナーレジストリー認証シークレットを作成します。oc create secret generic my-registry-credentials \ --from-file=config.json=/home/user/credentials/config.json
$ oc create secret generic my-registry-credentials \
1 --from-file=config.json=/home/user/credentials/config.json
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow タスク定義で、Git 認証用の名前付きワークスペース (例:
ssh-directory)
を設定します。ワークスペースの定義例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
タスクの手順では、
$(workspaces.<workspace_name>.path)
環境変数のパス (例:$(workspaces.dockerconfig.path))
を使用してディレクトリーにアクセスします。 タスクを実行するには、
tkn task start
コマンドに--workspace
引数を含めて、名前付きワークスペースのシークレットを指定します。tkn task start <task_name>
$ tkn task start <task_name> --workspace name=<workspace_name>,secret=<secret_name>
1 # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<workspace_name>
は、設定したワークスペースの名前に、<secret_name>
は、作成したシークレットの名前に置き換えます。
Skopeo を使用してコンテナーリポジトリーからイメージをコピーするタスクの例
タスクを実行するためのコマンドの例
tkn task start skopeo-copy
$ tkn task start skopeo-copy
--workspace name=dockerconfig,secret=my-registry-credentials
--use-param-defaults --showlog
5.3.3. ワークスペースを使用してシークレットを特定のステップのみに限定する手順 リンクのコピーリンクがクリップボードにコピーされました!
ワークスペースを使用して認証シークレットを提供し、タスクでワークスペースを定義すると、デフォルトでは、そのワークスペースはタスク内のすべてのステップで使用できるようになります。
シークレットを特定のステップに制限するには、タスク仕様とステップ仕様の両方でワークスペースを定義します。
手順
次の例のように、タスク仕様とステップ仕様の両方の下に、
workspaces:
定義を追加します。1 つのステップのみが認証情報ワークスペースにアクセスできるタスク定義の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow