第 1 章 在 OpenShift Pipelines 中使用 Tekton Hub
Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Tekton Hub 可帮助您发现、搜索和共享 CI/CD 工作流可重复使用的任务和管道。Tekton Hub 的一个公共实例位于 hub.tekton.dev 中。集群管理员还可以通过修改 TektonHub 自定义资源(CR)中的配置来安装和部署 Tekton Hub
的自定义实例。
1.1. 在 OpenShift Container Platform 集群上安装并部署 Tekton Hub
Tekton Hub 是一个可选组件 ; 集群管理员无法使用 TektonConfig
自定义资源(CR)安装它。要安装和管理 Tekton Hub,请使用 TektonHub
CR。
您可以使用以下模式在集群中安装 Tekton Hub:
- 没有 Tekton Hub 工件的登录授权和评级
- 使用 Tekton Hub 工件的登录授权和评级
如果您使用 Github Enterprise 或 Gitlab Enterprise,请在与企业服务器相同的网络中安装并部署 Tekton Hub。例如,如果企业服务器在 VPN 后面运行,请在 VPN 之后也部署 Tekton Hub。
1.1.1. 在不登录和评级的情况下安装 Tekton Hub
您可以使用默认配置在集群中安装 Tekton Hub。在使用默认配置时,Tekton Hub 不支持使用 Tekton Hub 工件的授权和评级登录。
先决条件
-
确保在集群中的默认
openshift-pipelines
命名空间中安装了 Red Hat OpenShift Pipelines Operator。
流程
创建一个类似以下示例的
TektonHub
CR。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 db: # Optional: If you want to use custom database secret: tekton-hub-db # Name of db secret should be `tekton-hub-db` categories: # Optional: If you want to use custom categories - Automation - Build Tools - CLI - Cloud - Code Quality - ... catalogs: # Optional: If you want to use custom catalogs - name: tekton org: tektoncd type: community provider: github url: https://github.com/tektoncd/catalog revision: main scopes: # Optional: If you want to add new users - name: agent:create users: [abc, qwe, pqr] - name: catalog:refresh users: [abc, qwe, pqr] - name: config:refresh users: [abc, qwe, pqr] default: # Optional: If you want to add custom default scopes scopes: - rating:read - rating:write api: catalogRefreshInterval: 30m 2
注意如果没有为
TektonHub
CR 中的可选字段提供自定义值,则会使用 Tekton Hub API 配置映射中配置的默认值。应用
TektonHub
CR。$ oc apply -f <tekton-hub-cr>.yaml
检查安装的状态。
TektonHub
CR 可能需要一些时间才能获得 steady 状态。$ oc get tektonhub.operator.tekton.dev
输出示例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/
1.1.2. 使用登录和评级安装 Tekton Hub
您可以使用支持使用 Tekton Hub 工件的授权和评级登录的自定义配置在集群中安装 Tekton Hub。
先决条件
-
确保在集群中的默认
openshift-pipelines
命名空间中安装了 Red Hat OpenShift Pipelines Operator。
流程
使用托管供应商的 Git 存储库创建 OAuth 应用程序,并记下客户端 ID 和客户端 Secret。支持的提供程序是 GitHub、GitLab 和 BitBucket。
-
对于 GitHub OAuth 应用程序,请将 Homepage URL 和 Authorization 回调 URL 设置为
<auth-route>
。 -
对于 GitLab OAuth 应用程序,将
REDIRECT_URI
设置为<auth-route>/auth/gitlab/callback
。 -
对于 BitBucket OAuth 应用,将
Callback URL
设置为<auth-route>
。
-
对于 GitHub OAuth 应用程序,请将 Homepage URL 和 Authorization 回调 URL 设置为
编辑
<tekton_hub_root>/config/02-api/20-api-secret.yaml
文件,使其包含 Tekton Hub API secret。例如:apiVersion: v1 kind: Secret metadata: name: tekton-hub-api namespace: openshift-pipelines type: Opaque stringData: GH_CLIENT_ID: 1 GH_CLIENT_SECRET: 2 GL_CLIENT_ID: 3 GL_CLIENT_SECRET: 4 BB_CLIENT_ID: 5 BB_CLIENT_SECRET: 6 JWT_SIGNING_KEY: 7 ACCESS_JWT_EXPIRES_IN: 8 REFRESH_JWT_EXPIRES_IN: 9 AUTH_BASE_URL: 10 GHE_URL: 11 GLE_URL: 12
- 1
- GitHub OAuth 应用程序的客户端 ID。
- 2
- GitHub OAuth 应用程序的客户端 Secret。
- 3
- GitLab OAuth 应用的客户端 ID。
- 4
- GitLab OAuth 应用中的 Client Secret。
- 5
- BitBucket OAuth 应用程序的客户端 ID。
- 6
- BitBucket OAuth 应用程序的客户端机密。
- 7
- 用于为用户创建的 JSON Web Token (JWT) 签名的随机字符串。
- 8
- 添加访问令牌过期的时间限制。例如:
1m
,其中 m 表示分钟。支持的时间单位为秒(s
)、分钟(m
)、小时(h
)、天(d
)和周(w
)。 - 9
- 添加刷新令牌过期的时间限制。例如,
1m
,其中m
表示分钟。支持的时间单位为秒(s
)、分钟(m
)、小时(h
)、天(d
)和周(w
)。确保为令牌刷新设置的到期时间大于为令牌访问设置的到期时间。 - 10
- OAuth 应用的路由 URL。
- 11
- GitHub Enterprise URL,如果您使用 GitHub Enterprise 进行身份验证。不要提供目录的 URL 作为此字段的值。
- 12
- GitLab Enterprise URL,如果您使用 GitLab Enterprise 进行身份验证。不要提供目录的 URL 作为此字段的值。
注意您可以删除与部署无关的 Git 存储库托管服务供应商的未使用字段。
创建一个类似以下示例的
TektonHub
CR。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 db: 2 secret: tekton-hub-db 3 categories: 4 - Automation - Build Tools - CLI - Cloud - Code Quality ... catalogs: 5 - name: tekton org: tektoncd type: community provider: github url: https://github.com/tektoncd/catalog revision: main scopes: 6 - name: agent:create users: [<username>] - name: catalog:refresh users: [<username>] - name: config:refresh users: [<username>] default: 7 scopes: - rating:read - rating:write api: catalogRefreshInterval: 30m 8
- 1
- 需要安装 Tekton Hub 的命名空间;默认为
openshift-pipelines
。 - 2
- 可选:自定义数据库,如 Crunchy Postgres 数据库。
- 3
- 数据库 secret 的名称必须是
tekton-hub-db
。 - 4
- 可选:为 Tekton Hub 中的任务和管道自定义类别。
- 5
- 可选:为 Tekton Hub 自定义目录。
- 6
- 可选:其他用户。您可以满足多个用户,如
[<username_1>, <username_2>, <username_3>]
。 - 7
- 可选:自定义默认范围。
- 8
- 目录自动刷新的时间间隔。支持的时间单位为秒(
s
)、分钟(m
)、小时(h
)、天(d
)和周(w
)。默认间隔为 30 分钟。
注意如果没有为
TektonHub
CR 中的可选字段提供自定义值,则会使用 Tekton Hub API 配置映射中配置的默认值。应用
TektonHub
CR。$ oc apply -f <tekton-hub-cr>.yaml
检查安装的状态。
TektonHub
CR 可能需要一些时间才能获得 steady 状态。$ oc get tektonhub.operator.tekton.dev
输出示例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/