搜索

5.3. 通过使用 Shared Resources CSI 驱动程序 operator 共享 secret 来使用红帽权利

download PDF

您可以使用 Shared Resources Container Storage Interface (CSI) Driver Operator 将 etc-pki-entitlement secret 共享从 openshift-config-managed 命名空间到其他命名空间。然后,您可以将管道配置为使用此 secret 用于 Buildah 任务。

先决条件

  • 您可以使用具有集群管理员权限的 oc 命令行工具登录到 OpenShift Container Platform 集群。
  • 您可以在 OpenShift Container Platform 集群上启用 Shared Resources CSI Driver Operator。

流程

  1. 运行以下命令,创建一个 SharedSecret 自定义资源(CR)来共享 etc-pki-entitlement secret:

    $ oc apply -f - <<EOF
    apiVersion: sharedresource.openshift.io/v1alpha1
    kind: SharedSecret
    metadata:
      name: shared-rhel-entitlement
    spec:
      secretRef:
        name: etc-pki-entitlement
        namespace: openshift-config-managed
    EOF
  2. 运行以下命令,创建允许访问共享 secret 的 RBAC 角色:

    $ oc apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: shared-resource-rhel-entitlement
      namespace: <pipeline_namespace> 1
    rules:
      - apiGroups:
          - sharedresource.openshift.io
        resources:
          - sharedsecrets
        resourceNames:
          - shared-rhel-entitlement
        verbs:
          - use
    EOF
    1
    <pipeline_namespace > 替换为管道的命名空间。
  3. 运行以下命令,将角色分配给 pipeline 服务帐户:

    $ oc create rolebinding shared-resource-rhel-entitlement --role=shared-shared-resource-rhel-entitlement \
      --serviceaccount=<pipeline-namespace>:pipeline 1
    1
    <pipeline-namespace > 替换为管道的命名空间。
    注意

    如果您更改了 OpenShift Pipelines 的默认服务帐户,或者在管道运行或任务运行中定义自定义服务帐户,请将角色分配给这个帐户,而不是 管道 帐户。

  4. 在 Buildah 任务定义中,使用 openshift-pipelines 命名空间中提供的 buildah 任务或此任务的副本,并定义 rhel-entitlement 工作区,如下例所示。
  5. 在运行 Buildah 任务的任务运行或管道运行中,将共享 secret 分配给 rhel-entitlement 工作区,如下例所示。

使用红帽权利的管道运行定义示例,包括管道和任务定义

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: buildah-pr-test-csi
spec:
  workspaces:
    - name: shared-workspace
      volumeClaimTemplate:
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
    - name: dockerconfig
      secret:
        secretName: regred
    - name: rhel-entitlement  1
      csi:
        readOnly: true
        driver: csi.sharedresource.openshift.io
        volumeAttributes:
          sharedSecret: shared-rhel-entitlement
  pipelineSpec:
    workspaces:
    - name: shared-workspace
    - name: dockerconfig
    - name: rhel-entitlement  2
    tasks:
# ...
    - name: buildah
      taskRef:
        resolver: cluster
        params:
        - name: kind
          value: task
        - name: name
          value: buildah
        - name: namespace
          value: openshift-pipelines
      workspaces:
      - name: source
        workspace: shared-workspace
      - name: dockerconfig
        workspace: dockerconfig
      - name: rhel-entitlement  3
        workspace: rhel-entitlement
      params:
      - name: IMAGE
        value: <image_where_you_want_to_push>

1
管道运行中的 rhel-entitlement 工作区的定义,将 shared-rhel-entitlement CSI 共享 secret 分配给工作区
2
管道定义中 rhel-entitlement 工作区的定义
3
任务定义中 rhel-entitlement 工作区的定义
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.