3.7. 在 OpenShift Pipelines 中使用 Tekton Hub
Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Tekton Hub 可帮助您发现、搜索和共享 CI/CD 工作流可重复使用的任务和管道。Tekton Hub 的一个公共实例位于 hub.tekton.dev 中。集群管理员也可以安装和部署 Tekton Hub 的自定义实例供企业用户使用。
3.7.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。
3.7.1.1. 在不登录和评级的情况下安装 Tekton Hub
您可以使用默认配置在集群中安装 Tekton Hub。在使用默认配置时,Tekton Hub 不支持使用 Tekton Hub 工件的授权和评级登录。
先决条件
-
确保在集群中的默认
openshift-pipelines命名空间中安装了 Red Hat OpenShift Pipelines Operator。
流程
创建一个类似以下示例的
TektonHubCR。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml 2 catalogRefreshInterval: 30m 3
应用
TektonHubCR。$ oc apply -f <TektonHub>.yaml 1- 1
TektonHubCR 的文件名或路径。
注意应用
TektonHubCR 时,Tekton Hub 会在openshift-pipelines命名空间中安装,并带有上游 Tekton Catalog 内容。检查安装的状态。
TektonHubCR 可能需要一些时间才能获得 steady 状态。$ oc get tektonhub.operator.tekton.dev
输出示例
NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.1.2. 使用登录和评级安装 Tekton Hub
您可以使用支持使用 Tekton Hub 工件的授权和评级登录的自定义配置在集群中安装 Tekton Hub。
先决条件
-
确保在集群中的默认
openshift-pipelines命名空间中安装了 Red Hat OpenShift Pipelines Operator。
流程
- 创建 Tekton Hub 仓库的分叉。
- 克隆已分叉的存储库。
使用托管供应商的 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_repository>/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 存储库托管服务供应商的未使用字段。
创建一个类似以下示例的
TektonHubCR。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml 2 catalogRefreshInterval: 30m 3
应用
TektonHubCR。$ oc apply -f <TektonHub>.yaml 1- 1
TektonHubCR 的文件名或路径。
注意应用
TektonHubCR 时,Tekton Hub 会在openshift-pipelines命名空间中安装,并带有上游 Tekton Catalog 内容。检查安装的状态。
TektonHubCR 可能需要一些时间才能获得 steady 状态。$ oc get tektonhub.operator.tekton.dev NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.2. 可选:在 Tekton Hub 配置中添加新用户
流程
根据预期的范围,集群管理员可以在
config.yaml文件中添加新用户。... scopes: - name: agent:create users: [<username_1>, <username_2>] 1 - name: catalog:refresh users: [<username_3>, <username_4>] - name: config:refresh users: [<username_5>, <username_6>] default: scopes: - rating:read - rating:write ...- 1
- 在 Git 存储库托管服务提供商中注册的用户名。
注意当任何用户首次登录时,它们只会有默认范围,即使它们被添加到
config.yaml中。要激活其他范围,请确保用户至少登录一次。-
确保
config.yaml文件中具有config-refresh范围。 刷新配置。
$ curl -X POST -H "Authorization: <access-token>" \ 1 --header "Content-Type: application/json" \ --data '{"force": true} \ <api-route>/system/config/refresh- 1
- JWT 令牌.
3.7.3. 可选:在 Tekton Hub 中使用自定义数据库
集群管理员可以将自定义数据库用于 Tekton Hub,而不是 Operator 安装的默认 PostgreSQL 数据库。您可以在安装时关联自定义数据库,并将其与 Tekton Hub 提供的 db-migration、api 和 ui 接口一起使用。或者,即使安装了默认数据库,也可以将自定义数据库与 Tekton Hub 关联。
流程
在目标命名空间中创建名为
tekton-hub-db的 secret,其键如下:-
POSTGRES_HOST -
POSTGRES_DB -
POSTGRES_USER -
POSTGRES_PASSWORD POSTGRES_PORT示例:自定义数据库 secret
apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: <The name of the host of the database> POSTGRES_DB: <Name of the database> POSTGRES_USER: <username> POSTGRES_PASSWORD: <password> POSTGRES_PORT: <The port that the database is listening on> ...注意默认目标命名空间是
openshift-pipelines。
-
在
TektonHubCR 中,将 database secret 属性的值设置为tekton-hub-db。示例:添加自定义数据库 secret
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: secret: tekton-hub-db api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml catalogRefreshInterval: 30m ...使用更新的
TektonHubCR 将自定义数据库与 Tekton Hub 关联。如果您要在集群中安装 Tekton Hub 时关联自定义数据库,请应用更新的
TektonHubCR。$ oc apply -f <tekton-hub-cr>.yaml
另外,如果您要在 Tekton Hub 安装完成后关联自定义数据库,请将现有的
TektonHubCR 替换为更新的TektonHubCR。$ oc replace -f <tekton-hub-cr>.yaml
检查安装的状态。
TektonHubCR 可能需要一些时间才能获得 steady 状态。$ oc get tektonhub.operator.tekton.dev
输出示例
NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.4. 将 Red Hat OpenShift Pipelines Operator 从 1.7 升级到 1.8 后禁用 Tekton Hub 授权
当使用 Red Hat OpenShift Pipelines Operator 1.8 安装 Tekton Hub 时,默认安装禁用了 Tekton Hub 工件的登录授权和评级。但是,当您将 Operator 从 1.7 升级到 1.8 时,集群中的 Tekton Hub 实例不会自动禁用登录授权和评级。
要在将 Operator 从 1.7 升级到 1.8 后禁用 Tekton Hub 的登录授权和评级,请执行以下步骤。
先决条件
-
确保在集群中的默认
openshift-pipelines命名空间中安装了 Red Hat OpenShift Pipelines Operator。
流程
删除您在为 Operator 1.7 安装 Tekton Hub 时创建的现有 Tekton Hub API secret。
$ oc delete secret tekton-hub-api -n <targetNamespace> 1- 1
- Tekton Hub API secret 和 Tekton Hub CR 的通用命名空间。默认情况下,目标命名空间是
openshift-pipelines。
删除 Tekton Hub API 的
TektonInstallerSet对象。$ oc get tektoninstallerset -o name | grep tekton-hub-api | xargs oc delete
注意删除后,Operator 会自动创建一个新的 Tekton Hub API 安装程序设置。
等待并检查 Tekton Hub 的状态。当
READY列显示为True时,继续执行后续步骤。$ oc get tektonhub hub
输出示例
NAME VERSION READY REASON APIURL UIURL hub 1.8.0 True https://tekton-hub-api-openshift-pipelines.apps.example.com https://tekton-hub-ui-openshift-pipelines.apps.example.com
删除 Tekton Hub UI 的
ConfigMap对象。$ oc delete configmap tekton-hub-ui -n <targetNamespace> 1- 1
- Tekton Hub UI 和 Tekton Hub CR 的通用命名空间。默认情况下,目标命名空间是
openshift-pipelines。
删除 Tekton Hub UI 的
TektonInstallerSet对象。$ oc get tektoninstallerset -o name | grep tekton-hub-ui | xargs oc delete
注意删除后,Operator 会自动创建一个新的 Tekton Hub UI 安装程序设置。
等待并检查 Tekton Hub 的状态。当
READY列显示为True时,继续执行后续步骤。$ oc get tektonhub hub
输出示例
NAME VERSION READY REASON APIURL UIURL hub 1.8.0 True https://tekton-hub-api-openshift-pipelines.apps.example.com https://tekton-hub-ui-openshift-pipelines.apps.example.com
3.7.5. 在 Developer 视角中选择 Tekton Hub
集群管理员可以选择在 OpenShift Container Platform 集群的 Developer 视角的 Pipeline Builder 页中显示 Tekton Hub 资源,如任务和管道。
前提条件
-
确保在集群中安装了 Red Hat OpenShift Pipelines Operator,并且
oc命令行工具可用。
流程
要在 Developer 视角中选择显示 Tekton Hub 资源,将
TektonConfig自定义资源(CR)中的enable-devconsole-integration字段设置为false。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: targetNamespace: openshift-pipelines ... hub: params: - name: enable-devconsole-integration value: "false" ...默认情况下,
TektonConfigCR 不包括enable-devconsole-integration字段,Red Hat OpenShift Pipelines Operator 假定值为true。
如果您想完全禁用 Tekton Hub UI,在 TektonHub CR 中将 enableUI 字段设置为 false,而不是在 Developer 视角中显示 Tekton Hub 资源。