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 实例。
流程
使用
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
创建一个角色来授予
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
运行以下命令,创建一个
RoleBinding
对象,授予builder
服务帐户权限来访问SharedSecret
对象:oc create rolebinding
命令示例$ oc create rolebinding builder-etc-pki-entitlement --role=builder-etc-pki-entitlement --serviceaccount=build-namespace:builder
使用 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
从
BuildConfig
对象启动构建,并使用oc
命令跟踪日志。$ oc start-build uid-wrapper-rhel9 -n build-namespace -F