准备 Git 凭证
本指南展示了如何创建一个 git 凭证 Secret,帮助您运行 Tekton Tasks 和 Pipelines。
本文档将以 git-clone Task 的配置为例。
如果您使用的是其他 Task,可以参考此处的步骤,并修改 taskRef.name 和 workspaces 以匹配您 Task 中定义的内容。
目录
前提条件
- 已安装并配置 kubectl 以访问集群。
- 具有读取和写入 Secrets 的权限。
步骤
可选 1:使用 ssh 凭证
此 Task 支持访问私有仓库。认证方式有三种:
-
最简单的方法是将一个
ssh-directoryworkspace 绑定到此 Task。该 workspace 应包含私钥(例如id_rsa)、config和known_hosts文件——任何您通过 SSH 与 git 远程交互所需的内容。强烈建议您使用 KubernetesSecrets来保存凭证并绑定到此 workspace。在 TaskRun 中示例如下:
在 Pipeline 和 PipelineRun 中示例如下:
该
Secret在两种情况下的结构相同——类似.ssh目录:包含
known_hosts是可选的,但强烈推荐。没有它,git-cloneTask 会盲目接受远程服务器的身份。 -
另一种方法是将一个
ssl-ca-directoryworkspace 绑定到此 Task。该 workspace 应包含 crt 证书文件(例如ca-bundle.crt)——任何您通过自定义 CA 与 git 远程交互所需的内容。强烈建议您使用 KubernetesSecrets来保存凭证并绑定到此 workspace。在 TaskRun 中示例如下:
在 Pipeline 和 PipelineRun 中示例如下:
该
Secret如下所示:
可选 2:使用 basic-auth 凭证
注意:强烈建议您在可用时优先使用 ssh 凭证,而非 basic auth。您可以从 WebVCS 平台(Github、Gitlab、Bitbucket 等)生成短期令牌作为密码,并通常使用 git 作为用户名。
在 bitbucket server 上,令牌可能包含 /,因此您需要在 Secret 中对其进行 URL 编码,详见此 Stack Overflow 答案:
https://stackoverflow.com/a/24719496
为支持 basic-auth,此 Task 暴露了一个可选的 basic-auth Workspace。
绑定的 Workspace 应包含 .gitconfig 或 .git-credentials 文件。
该 Workspace 上的其他文件将被忽略。一个典型的包含这些凭证的 Secret 如下:
可选 3:使用 Git Connector
该 Task 可与 Git Connector 配合使用以增强安全性。
您需要先创建 Git Connector,然后在 TaskRun 中使用 CSI 配置 basic-auth workspace。
Git Connector 目前仅支持使用 basic-auth 克隆,不支持 ssh。
以下是 git-clone TaskRun 中使用 Git Connector 的示例:
创建 Git Connector
创建 TaskRun
更多关于 Connector 的信息,请参阅 Alauda DevOps Connectors Doc。