5.3. 通过使用 Shared Resources CSI 驱动程序 operator 共享 secret 来使用红帽权利
您可以使用 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。
流程
运行以下命令,创建一个
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
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建允许访问共享 secret 的 RBAC 角色:
oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-resource-rhel-entitlement namespace: <pipeline_namespace> rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - shared-rhel-entitlement verbs: - use EOF
$ 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<pipeline_namespace
> 替换为管道的命名空间。
运行以下命令,将角色分配给
pipeline
服务帐户:oc create rolebinding shared-resource-rhel-entitlement --role=shared-shared-resource-rhel-entitlement \ --serviceaccount=<pipeline-namespace>:pipeline
$ oc create rolebinding shared-resource-rhel-entitlement --role=shared-shared-resource-rhel-entitlement \ --serviceaccount=<pipeline-namespace>:pipeline
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<pipeline-namespace
> 替换为管道的命名空间。
注意如果您更改了 OpenShift Pipelines 的默认服务帐户,或者在管道运行或任务运行中定义自定义服务帐户,请将角色分配给这个帐户,而不是
管道
帐户。-
在 Buildah 任务定义中,使用
openshift-pipelines
命名空间中提供的buildah
任务或此任务的副本,并定义rhel-entitlement
工作区,如下例所示。 -
在运行 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 csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedSecret: shared-rhel-entitlement pipelineSpec: workspaces: - name: shared-workspace - name: dockerconfig - name: rhel-entitlement 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 workspace: rhel-entitlement params: - name: IMAGE value: <image_where_you_want_to_push>
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
csi:
readOnly: true
driver: csi.sharedresource.openshift.io
volumeAttributes:
sharedSecret: shared-rhel-entitlement
pipelineSpec:
workspaces:
- name: shared-workspace
- name: dockerconfig
- name: rhel-entitlement
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
workspace: rhel-entitlement
params:
- name: IMAGE
value: <image_where_you_want_to_push>