自定义 Red Hat Trusted Application Pipeline


Red Hat Trusted Application Pipeline 1.2

了解如何自定义默认软件模板和构建管道配置。

Red Hat Trusted Application Pipeline Documentation Team

摘要

本文档为集群管理员提供了自定义 RHTAP 的软件模板和构建管道配置的说明,以更好地与预置环境的唯一要求保持一致。通过自定义这些元素,管理员可以确保开发工作流被简化,安全实践是无缝集成,开发人员可以专注于创新,而不是安全合规和基础架构攻击。

前言

RHTAP 可让团队使用可用的软件模板和构建管道配置,旨在无缝将安全实践集成到您的开发过程中。这些工具不仅降低了开发人员安全考虑的负担,还增强了专注于创新。

集群管理员在定制这些资源时扮演了 pivotal 角色,以满足其 on-prem 环境的唯一要求,包括:

  • 自定义软件模板以满足特定的机构需求
  • 修改构建管道配置,使其与项目目标一致

这种自定义可简化开发工作流,解决有关管道、漏洞和策略合规性的常见问题,从而使开发人员可以优先考虑编码。

第 1 章 自定义示例软件模板

了解如何根据您的现场环境自定义随时可用的软件模板。集群管理员可以完全控制此过程,包括修改元数据和规格。

先决条件

  • 您已在 RHTAP 安装过程中使用 tssc-sample-templates 中的分叉存储库 URL。
  • 您已分叉并克隆 tssc-sample-jenkins 管道模板。
  • 您必须确保 fork 的版本为最新版本,并与上游存储库同步。

流程

  1. 克隆 fork 的 tssc-sample-templates 存储库,然后在您首选的文本编辑器中打开它,如 Visual Studio Code。
  2. 在项目目录中查找 属性文件。此文件存储可自定义的默认值。打开它以编辑,并根据您的环境更新以下键值对。

    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. 属性文件

  3. 在终端中运行 generate.sh 脚本。此操作调整软件模板,使用您指定的输入替换默认主机值。

    ./generate.sh
    Copy to Clipboard Toggle word wrap

    图 1.2. generate.sh 脚本

  4. 仅限 Jenkins:要自定义 Jenkins 库,请导航到 skeleton > ci > jenkins,并打开 Jenkinsfile将远程 URL 替换为您的已分叉存储库的 URL。例如,remote: 'https://github.com/<username>/tssc-sample-jenkins.git'。

    另外,如果您的 Jenkins 位于非本地 OpenShift 实例,并且您的 Rekor 和 TUF 服务位于不同的集群中,则需要更新 env.sh 文件中的 REKOR_HOSTTUF_MIRROR 环境变量。这样可确保您的外部 Jenkins 服务器可以与通过 RHTAP 安装的 Rekor 和 TUF 通信。如果没有此,RHTAP 可能无法在 Jenkins 管道中正确签署容器镜像,从而可能导致此 已知问题

    更新 REKOR_HOSTTUF_MIRROR 变量:

    1. 通过 skeleton > ci > gitops-template > jenkins > rhtap 以打开 env.sh 文件。

      第二个 env.sh 文件位于 skeleton > ci > source-repo > jenkins > rhtap。选出适合您需要或更新两者的那一个。

      env.sh 中,查看 REKOR_HOSTTUF_MIRROR 的默认值:

      REKOR_HOST=http://rekor-server.rhtap-tas.svc
      TUF_MIRROR=http://tuf.rhtap-tas.svc
      Copy to Clipboard Toggle word wrap
    2. .svc 替换为您的 OpenShift 集群 URL。.svc 域指的是本地集群,内部服务可以在其路由中使用 .svc 访问其他服务,但外部 Jenkins 无法访问。

      Rekor 和 TUF 服务的正确路由作为 RHTAP 的安装过程的一部分打印。如果这些数据不适用于您,请在 CLI 中运行这个命令,并在输出中选择 Rekor 和 TUF 路由:

      $ oc get routes -n rhtap-tas
      Copy to Clipboard Toggle word wrap

      一个 Rekor 服务器 URL 示例:

      http://rekor-server.rhtap-tas.apps.rosa.j6ufg-t3htv-ts6.z797.p3.openshiftapps.com

  5. 仅限 RHACS: 要在 env.sh 文件中启用 RHACS 扫描,将 export DISABLE_ACS 设置为 false
  6. 提交更改并将其推送到您的存储库。这会自动更新 RHDH 中的模板。或者,您可以在 RHDH 中直接导入和刷新单个或所有自定义模板。

    1. 进入 Git 供应商上的 fork 示例模板存储库。
    2. 对于单个模板,从 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
    3. 切回到 RHDH 平台。
    4. 选择 Create > Register Existing Component
    5. Select URL 字段中,粘贴在第 4b 步中复制的适当 URL。
    6. 选择 Analyze,然后选择 Import 以更新 RHDH 中的模板。

验证

  • 考虑创建应用以探索模板自定义的影响。

第 2 章 自定义示例管道

了解如何在示例模板存储库中更新 Pipeline as Code (pac) URL,并将示例管道存储库自定义到您的工作流。通过自定义 pac URL,机构可以根据具体需要来利用特定的管道。

先决条件

  • 您已在本地分叉并克隆了以下模板:

  • 您必须确保 fork 的版本为最新版本,并与上游存储库同步。

自定义示例模板存储库以更新 pac URL*

流程

  1. 访问 fork 中的示例管道存储库 URL:

    1. 打开 fork 的示例管道存储库。
    2. 从地址栏中复制完整的 URL。例如: https://github.com/<username>/tssc-sample-pipelines
  2. 更新示例模板存储库中的 pac URL

    1. 使用您的终端导航到您的本地克隆示例模板存储库。
    2. 运行以下命令,将 {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
    Copy to Clipboard Toggle word wrap
  3. 检查、提交和推送更改:

    1. 查看示例模板存储库中的更新文件。
    2. 使用适当的消息提交更改。
    3. 将提交的更改推送到您的已分叉的存储库。

在您的工作流中自定义示例管道存储库

示例管道存储库提供了一个基础,您可以在其上构建机构的特定 CI/CD 工作流。管道存储库示例在 pac 目录中包括几个关键的管道模板:

  • GITOPS-repo 此目录包含用于在 GitOps 仓库中验证拉取请求的管道定义。它触发位于 pipelines 目录中的 gitops-pull-request 管道,验证镜像更新是否符合机构标准。这个设置对于提升工作流至关重要,其中应用程序的部署状态通过环境按顺序进行,如从开发到暂存或从 staging 到生产环境。有关 gitops-repo 中的管道定义的更多信息,请参阅 Gitops Pipelines
  • Pipelines 此目录包含构建和验证管道的实现,这些管道由 gitops-reposource-repo 中事件处理程序引用。通过检查此目录的内容,您可以了解管道执行的特定操作,包括它们如何贡献应用程序的安全提升和部署。
  • source-repo :此目录侧重于基于 Dockerfile 的安全供应链软件构建。它包括用于克隆源的管道定义、生成和签名工件(如 .sig 用于镜像签名、.att 用于测试,以及 .sbom 用于软件 Bill of Materials),并将它们推送到用户的镜像 registry。有关 source-repo 中的管道定义的更多信息,请参阅 共享管道和任务的共享 Git 解析器模型
  • 任务 此目录包含一组可以添加或修改的任务,并与机构的需求保持一致。例如,高级 Cluster Security (ACS)任务可以使用替代的检查替换,或者完全新的任务可以集成到管道中,以增强其功能和合规性。

验证

  • 考虑创建应用程序来探索模板和管道自定义的影响。





更新于 2024-09-11

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat