5.3. 使用工作区提供 secret
您可以使用工作区为 secret 提供 Git 存储库和容器存储库身份验证。
您可以在任务中配置指定工作区,指定挂载工作区的路径。运行任务时,将 secret 提供为带有此名称的工作区。当 OpenShift Pipelines 执行任务时,secret 中的信息可供任务使用。
如果您使用工作区提供身份验证 secret,则不需要 secret 的注解。
5.3.1. 使用工作区为 Git 配置 SSH 身份验证 复制链接链接已复制到粘贴板!
若要让管道从配置了 SSH 密钥的存储库检索资源,您必须为该管道配置基于 SSH 的身份验证。
要为管道配置基于 SSH 的身份验证,请使用 SSH 私钥创建身份验证 secret,在任务中为此 secret 配置命名工作区,并在运行任务时指定 secret。
流程
输入以下命令从现有
.ssh
目录中的文件创建 Git SSH 身份验证 secret: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
命令中包含 the-workspace
参数来指定命名工作区的 secret: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
> 替换为您创建的 secret 的名称。
使用 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. 使用工作区配置容器 registry 身份验证 复制链接链接已复制到粘贴板!
要使管道从 registry 检索容器镜像,您必须为该 registry 配置身份验证。
要为容器 registry 配置身份验证,请使用 Docker 配置文件创建身份验证 secret,在任务中为此 secret 配置名为 workspace,并在运行任务时指定 secret。
流程
输入以下命令,从现有
config.json
文件创建容器 registry 身份验证 secret,该文件包含身份验证信息: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
命令中包含 the-workspace
参数来指定命名工作区的 secret: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
> 替换为您创建的 secret 的名称。
使用 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. 使用工作区将 secret 限制到特定步骤 复制链接链接已复制到粘贴板!
当您使用工作区提供身份验证 secret 并在任务中定义工作区时,默认情况下工作区可用于任务中的所有步骤。
要将 secret 限制到特定的步骤,请在任务规格和步骤规格中定义工作区。