10.5. 使用 SharedSecret 对象运行构建


您可以使用 SharedSecret 对象安全地访问构建中的集群的授权密钥。

SharedSecret 对象允许您在命名空间间共享和同步 secret。

重要

共享资源 CSI 驱动程序只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

先决条件

  • 已使用功能门启用 TechPreviewNoUpgrade 功能集。如需更多信息,请参阅使用功能门启用功能
  • 您必须具有执行以下操作的权限:

    • 创建构建配置和启动构建。
    • 输入 oc get sharedsecrets 命令并返回非空列表来发现哪些 SharedSecret CR 实例可用。
    • 确定命名空间中的 builder 服务帐户是否可以使用给定的 SharedSecret CR 实例。换句话说,您可以运行 oc adm policy who-can use <identifier of specific SharedSecret> 来查看是否列出命名空间中的 builder 服务帐户。
注意

如果没有满足此列表中的最后两个先决条件,则建立或询问某人建立所需的基于角色的访问控制(RBAC),以便您可以发现 SharedSecret CR 实例,并启用服务帐户使用 SharedSecret CR 实例。

流程

  1. 使用 oc apply 创建带有集群权利 secret 的 SharedSecret 对象实例。

    重要

    您必须具有集群管理员权限来创建 SharedSecret 对象。

    使用带有 YAML 角色 对象定义的 oc apply -f 命令示例

    $ oc apply -f - <<EOF
    kind: SharedSecret
    apiVersion: sharedresource.openshift.io/v1alpha1
    metadata:
      name: etc-pki-entitlement
    spec:
      secretRef:
        name: etc-pki-entitlement
        namespace: openshift-config-managed
    EOF

  2. 创建一个角色来授予 builder 服务帐户权限来访问 SharedSecret 对象:

    oc apply -f 命令示例

    $ oc apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: builder-etc-pki-entitlement
      namespace: build-namespace
    rules:
      - apiGroups:
          - sharedresource.openshift.io
        resources:
          - sharedsecrets
        resourceNames:
          - etc-pki-entitlement
        verbs:
          - use
    EOF

  3. 运行以下命令,创建一个 RoleBinding 对象,授予 builder 服务帐户权限来访问 SharedSecret 对象:

    oc create rolebinding 命令示例

    $ oc create rolebinding builder-etc-pki-entitlement --role=builder-etc-pki-entitlement --serviceaccount=build-namespace:builder

  4. 使用 CSI 卷挂载将授权 secret 添加到 BuildConfig 对象中:

    YAML BuildConfig 对象定义示例

    apiVersion: build.openshift.io/v1
    kind: BuildConfig
    metadata:
      name: uid-wrapper-rhel9
      namespace: build-namespace
    spec:
      runPolicy: Serial
      source:
        dockerfile: |
          FROM registry.redhat.io/ubi9/ubi:latest
          RUN rm -rf /etc/rhsm-host 1
          RUN yum --enablerepo=codeready-builder-for-rhel-9-x86_64-rpms install \ 2
              nss_wrapper \
              uid_wrapper -y && \
              yum clean all -y
          RUN ln -s /run/secrets/rhsm /etc/rhsm-host 3
      strategy:
        type: Docker
        dockerStrategy:
          volumes:
            - mounts:
                - destinationPath: "/etc/pki/entitlement"
              name: etc-pki-entitlement
              source:
                csi:
                  driver: csi.sharedresource.openshift.io
                  readOnly: true 4
                  volumeAttributes:
                    sharedSecret: etc-pki-entitlement 5
                type: CSI

    1
    在执行任何 yumdnf 命令前,您必须包含删除 /etc/rhsm-host 目录及其所有内容的命令。
    2
    使用红帽软件包浏览器查找已安装软件包的正确存储库。
    3
    您需要恢复 /etc/rhsm-host 符号链接,以便使您的镜像与其他红帽容器镜像兼容。
    4
    您必须将 readOnly 设置为 true,以便在构建中挂载共享资源。
    5
    引用构建中包含的 SharedSecret 对象的名称。
  5. BuildConfig 对象启动构建,并使用 oc 命令跟踪日志。

    $ oc start-build uid-wrapper-rhel9 -n build-namespace -F
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.