This documentation is for a release that is no longer maintained
See documentation for the latest supported version.自定义 Red Hat Trusted Application Pipeline
了解如何自定义默认软件模板和构建管道配置。
摘要
前言 复制链接链接已复制到粘贴板!
RHTAP 可让团队使用可用的软件模板和构建管道配置,旨在无缝将安全实践集成到您的开发过程中。这些工具不仅降低了开发人员安全考虑的负担,还增强了专注于创新。
集群管理员在定制这些资源时扮演了 pivotal 角色,以满足其 on-prem 环境的唯一要求,包括:
- 自定义软件模板以满足特定的机构需求
- 修改构建管道配置,使其与项目目标一致
这种自定义可简化开发工作流,解决有关管道、漏洞和策略合规性的常见问题,从而使开发人员可以优先考虑编码。
第 1 章 自定义示例软件模板 复制链接链接已复制到粘贴板!
了解如何根据您的现场环境自定义随时可用的软件模板。集群管理员可以完全控制此过程,包括修改元数据和规格。
先决条件
- 您已在 RHTAP 安装过程中使用 tssc-sample-templates 中的分叉存储库 URL。
- 您已分叉并克隆 tssc-sample-jenkins 管道模板。
- 您必须确保 fork 的版本为最新版本,并与上游存储库同步。
流程
-
克隆 fork 的
tssc-sample-templates存储库,然后在您首选的文本编辑器中打开它,如 Visual Studio Code。 在项目目录中查找 属性文件。此文件存储可自定义的默认值。打开它以编辑,并根据您的环境更新以下键值对。
Expand 键 描述 export GITHUB_DEFAULT_HOST
把它设置为您的 on-prem GitHub 主机完全限定域名。也就是说,没有
HTTP协议的 URL,没有.git扩展。例如 github-github.apps.cluster-ljg9z.sandbox219.opentlc.com。默认为github.com。export GITLAB_DEFAULT_HOST
把它设置为您的 on-prem GitLab 主机完全限定域名。也就是说,没有
HTTP协议的 URL,没有.git扩展。例如 gitlab-gitlab.apps.cluster-ljg9z.sandbox219.opentlc.com。默认为gitlab.com。export QUAY_DEFAULT_HOST
默认 Quay URL 对应于没有
HTTP协议的特定 on-prem 镜像 registry URL。例如: quay-tv2pb.apps.cluster-tv2pb.sandbox1194.opentlc.com。默认的 quay 主机为quay.io。export DEFAULT_DEPLOYMENT_NAMESPACE_PREFIX
RHTAP 中部署的命名空间前缀。默认为
rhtap-app。注意如果您在 RHTAP 安装过程中修改了默认的
trusted-application-pipeline: 命名空间,请更新此项。export PIPELINE_REPO_URL
分叉管道存储库的 URL。例如: https://github.com/redhat-appstudio/tssc-sample-pipelines。
export PIPELINE_REPO_BRANCH
您要指向的已分叉管道存储库的分支。例如,
main。export GITHUB_DEFAULT_ORG
要设置为默认的 GitHub 机构名称。
export QUAY_DEFAULT_ORG
要设置为默认的 Quay 组织的名称。
图 1.1. 属性文件
在终端中运行 generate.sh 脚本。此操作调整软件模板,使用您指定的输入替换默认主机值。
./generate.sh
./generate.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 图 1.2. generate.sh 脚本
仅限 Jenkins:要自定义 Jenkins 库,请导航到 skeleton > ci > jenkins,并打开 Jenkinsfile。
将远程URL 替换为您的已分叉存储库的 URL。例如,remote: 'https://github.com/<username>/tssc-sample-jenkins.git'。另外,如果您的 Jenkins 位于非本地 OpenShift 实例,并且您的 Rekor 和 TUF 服务位于不同的集群中,则需要更新 env.sh 文件中的
REKOR_HOST和TUF_MIRROR环境变量。这样可确保您的外部 Jenkins 服务器可以与通过 RHTAP 安装的 Rekor 和 TUF 通信。如果没有此,RHTAP 可能无法在 Jenkins 管道中正确签署容器镜像,从而可能导致此 已知问题。更新
REKOR_HOST和TUF_MIRROR变量:通过 skeleton > ci > gitops-template > jenkins > rhtap 以打开 env.sh 文件。
第二个 env.sh 文件位于 skeleton > ci > source-repo > jenkins > rhtap。选出适合您需要或更新两者的那一个。
在 env.sh 中,查看
REKOR_HOST和TUF_MIRROR的默认值:REKOR_HOST=http://rekor-server.rhtap-tas.svc TUF_MIRROR=http://tuf.rhtap-tas.svc
REKOR_HOST=http://rekor-server.rhtap-tas.svc TUF_MIRROR=http://tuf.rhtap-tas.svcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
.svc替换为您的 OpenShift 集群 URL。.svc域指的是本地集群,内部服务可以在其路由中使用.svc访问其他服务,但外部 Jenkins 无法访问。Rekor 和 TUF 服务的正确路由作为 RHTAP 的安装过程的一部分打印。如果这些数据不适用于您,请在 CLI 中运行这个命令,并在输出中选择 Rekor 和 TUF 路由:
oc get routes -n rhtap-tas
$ oc get routes -n rhtap-tasCopy to Clipboard Copied! Toggle word wrap Toggle overflow 一个 Rekor 服务器 URL 示例:
http://rekor-server.rhtap-tas.apps.rosa.j6ufg-t3htv-ts6.z797.p3.openshiftapps.com
-
仅限 RHACS: 要在 env.sh 文件中启用 RHACS 扫描,将
export DISABLE_ACS设置为false。 提交更改并将其推送到您的存储库。这会自动更新 RHDH 中的模板。或者,您可以在 RHDH 中直接导入和刷新单个或所有自定义模板。
- 进入 Git 供应商上的 fork 示例模板存储库。
-
对于单个模板,从
templates目录中选择template.yaml。从浏览器地址栏中复制其 URL。例如: https://github.com/<username>/tssc-sample-templates/blob/main/templates/devfile-sample-code-with-quarkus-dance/template.yaml。否则,对于所有模板,请选择all.yaml并从浏览器地址栏中复制其 URL。例如: https://github.com/<username>/tssc-sample-templates/blob/main/all.yaml。 - 切回到 RHDH 平台。
- 选择 Create > Register Existing Component。
- 在 Select URL 字段中,粘贴在第 4b 步中复制的适当 URL。
- 选择 Analyze,然后选择 Import 以更新 RHDH 中的模板。
验证
- 考虑创建应用以探索模板自定义的影响。
第 2 章 自定义示例管道 复制链接链接已复制到粘贴板!
了解如何在示例模板存储库中更新 Pipeline as Code (pac) URL,并将示例管道存储库自定义到您的工作流。通过自定义 pac URL,机构可以根据具体需要来利用特定的管道。
自定义示例模板存储库以更新 pac URL*
流程
访问 fork 中的示例管道存储库 URL:
- 打开 fork 的示例管道存储库。
- 从地址栏中复制完整的 URL。例如: https://github.com/<username>/tssc-sample-pipelines。
更新示例模板存储库中的
pacURL- 使用您的终端导航到您的本地克隆示例模板存储库。
- 运行以下命令,将 {fork_url} 替换为步骤 1 中复制的 URL,使用您需要的分支名称(如 main)替换 {branch_name}:
./scripts/update-tekton-definition {fork_url} {branch_name} # For example, .scripts/update-tekton-definition https://github.com/<username>/tssc-sample-pipelines main./scripts/update-tekton-definition {fork_url} {branch_name} # For example, .scripts/update-tekton-definition https://github.com/<username>/tssc-sample-pipelines mainCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查、提交和推送更改:
- 查看示例模板存储库中的更新文件。
- 使用适当的消息提交更改。
- 将提交的更改推送到您的已分叉的存储库。
在您的工作流中自定义示例管道存储库
示例管道存储库提供了一个基础,您可以在其上构建机构的特定 CI/CD 工作流。管道存储库示例在 pac 目录中包括几个关键的管道模板:
-
GITOPS-repo: 此目录包含用于在 GitOps 仓库中验证拉取请求的管道定义。它触发位于pipelines目录中的gitops-pull-request管道,验证镜像更新是否符合机构标准。这个设置对于提升工作流至关重要,其中应用程序的部署状态通过环境按顺序进行,如从开发到暂存或从 staging 到生产环境。有关gitops-repo中的管道定义的更多信息,请参阅 Gitops Pipelines。 -
Pipelines: 此目录包含构建和验证管道的实现,这些管道由gitops-repo和source-repo中事件处理程序引用。通过检查此目录的内容,您可以了解管道执行的特定操作,包括它们如何贡献应用程序的安全提升和部署。 -
source-repo:此目录侧重于基于 Dockerfile 的安全供应链软件构建。它包括用于克隆源的管道定义、生成和签名工件(如.sig用于镜像签名、.att用于测试,以及.sbom用于软件 Bill of Materials),并将它们推送到用户的镜像 registry。有关source-repo中的管道定义的更多信息,请参阅 共享管道和任务的共享 Git 解析器模型。 -
任务: 此目录包含一组可以添加或修改的任务,并与机构的需求保持一致。例如,高级 Cluster Security (ACS)任务可以使用替代的检查替换,或者完全新的任务可以集成到管道中,以增强其功能和合规性。
验证
- 考虑创建应用程序来探索模板和管道自定义的影响。
更新于 2024-09-11