공유 리소스 작업
공유 리소스 CSI Driver Operator 사용
초록
1장. 공유 리소스 CSI Driver Operator 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 볼륨 유형을 csi 로 사용하는 Kubernetes 오브젝트에서 CSI(Share Resource Container Storage Interface) 드라이버를 사용하여 Secret 또는 ConfigMap 오브젝트의 콘텐츠가 포함된 인라인 임시 볼륨을 프로비저닝할 수 있습니다. 이렇게 하면 볼륨 마운트를 노출하는 Pod 및 기타 Kubernetes 유형이 OpenShift Container Platform 빌드에서 클러스터의 모든 네임스페이스에서 해당 오브젝트의 콘텐츠를 안전하게 사용할 수 있습니다. 이를 위해 현재 두 가지 유형의 공유 리소스가 있습니다.
-
Secret오브젝트에 대한SharedSecret사용자 정의 리소스 -
ConfigMap오브젝트에 대한SharedConfigMap사용자 정의 리소스
1.1. CSI 정보 링크 복사링크가 클립보드에 복사되었습니다!
스토리지 벤더는 일반적으로 Kubernetes의 일부로 스토리지 드라이버를 제공합니다. CSI(Container Storage Interface) 구현을 통해 타사 공급자는 코어 Kubernetes 코드를 변경하지 않고 표준 인터페이스를 사용하여 스토리지 플러그인을 제공할 수 있습니다. CSI Operator는 in-tree 볼륨 플러그인에서 사용할 수 없는 볼륨 스냅샷과 같은 사용자 스토리지 옵션을 빌드합니다.
1.2. 네임스페이스에서 보안 공유 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 네임스페이스에서 보안을 공유하려면 Secret 오브젝트에 대한 SharedSecret CR(사용자 정의 리소스) 인스턴스를 생성합니다.
사전 요구 사항
-
다른 네임스페이스에서 공유할
Secret오브젝트를 생성했습니다. 다음 작업을 수행할 수 있는 권한이 있어야 합니다.
- 클러스터에 가입하고 Insights Operator를 통해 인타이틀먼트 키를 동기화해야 합니다.
-
클러스터 범위 수준에서
sharedsecrets.sharedresource.openshift.ioCRD(사용자 정의 리소스 정의)의 인스턴스를 생성했습니다. -
SharedConfigMap CR에 대한ClusterRole오브젝트를 생성하셨습니다. -
공유 리소스 CSI 드라이버에 대한
Role및RoleBinding오브젝트를 생성하셨습니다. - 사용자를 제어하기 위해 클러스터의 네임스페이스에서 관리되는 역할 및 역할 바인딩입니다.
-
Pod에서 지정한 서비스 계정이 사용하려는
Secret또는ConfigmapCR을 참조하는 CSI(Container Storage Interface) 볼륨을 마운트할 수 있는지 여부를 제어하는 관리 역할 및 역할 바인딩입니다. - 공유할 시크릿이 포함된 네임스페이스에 액세스할 수 있습니다.
프로세스
다음 예제 구성을 사용하여 클러스터의 네임스페이스에서 참조된 보안을 공유할
Shared인스턴스를 생성합니다.SecretapiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: shared-test-secret spec: secretRef: name: test-secret namespace: <name_of_the_source_namespace>apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: shared-test-secret1 spec: secretRef: name: test-secret namespace: <name_of_the_source_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
SharedSecretCR의 이름을 정의합니다.
다음 예제 구성을 사용하여 참조된 공유 리소스를 사용할 수 있는 RBAC 권한을 부여하는
ClusterRole오브젝트를 생성합니다.. apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-shared-test-secret rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - shared-test-secret verbs: - use. apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-shared-test-secret1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - shared-test-secret verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterRoleCR의 이름을 정의합니다.
Shared Resources CSI 드라이버에
SharedSecret오브젝트에 액세스할 수 있는 권한을 부여하는Role및RoleBinding오브젝트를 생성합니다.Role오브젝트의 예apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchapiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RoleCR의 이름을 정의합니다.
RoleBinding오브젝트의 예apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement2 subjects: - kind: ServiceAccount name: csi-driver-shared-resource3 namespace: openshift-buildsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. Pod에서 SharedSecret 인스턴스 사용 링크 복사링크가 클립보드에 복사되었습니다!
Pod에서 SharedSecret CR(사용자 정의 리소스)에 액세스하려면 서비스 계정에 대한 RBAC(역할 기반 액세스 제어) 권한을 부여합니다.
사전 요구 사항
-
클러스터의 네임스페이스에서 공유할 구성 맵에 대해
SharedConfigMapCR 인스턴스를 생성했습니다. 다음 작업을 수행할 수 있는 권한이 있어야 합니다.
-
oc get sharedconfigmaps명령을 입력하여SharedConfigMapCR 인스턴스 목록을 가져옵니다. -
서비스 계정이
SharedSecretCR을 사용하도록 허용된 경우oc adm policy who-can use <sharedsecret_identifier> 명령을 실행하여 네임스페이스에 서비스 계정이 나열되어 있는지 확인합니다. -
Pod의 서비스 계정이
csi볼륨을 사용할 수 있는지 확인합니다. Pod를 사용자로 생성한 경우csi볼륨을 사용할 수 있는지 확인합니다.
-
마지막 두 사전 요구 사항을 완료할 수 없는 경우 클러스터 관리자가 필요한 RBAC(역할 기반 액세스 제어)를 설정하여 서비스 계정에서 SharedConfigMap CR을 사용할 수 있도록 할 수 있습니다.
프로세스
역할과 연결된
RoleBinding오브젝트를 생성하고 공유 리소스를 사용할 수 있는 서비스 계정에 권한을 부여합니다. 다음 예제 구성을 참조하십시오.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-secret namespace: app-namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-secret subjects: - kind: ServiceAccount name: <service_account_name>apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-secret1 namespace: app-namespace roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-secret subjects: - kind: ServiceAccount name: <service_account_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공유 리소스
csi드라이버를 Pod 또는csi볼륨을 허용하는 기타 리소스에 마운트합니다. 다음 예제 구성을 참조하십시오.apiVersion: v1 kind: Pod metadata: name: example-shared-secret namespace: <app_namespace> spec: ... serviceAccountName: default volumes: - name: shared-secret csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedSecret: shared-test-secretapiVersion: v1 kind: Pod metadata: name: example-shared-secret namespace: <app_namespace>1 spec: ... serviceAccountName: default volumes: - name: shared-secret csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedSecret: shared-test-secret2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 네임스페이스에서 구성 맵 공유 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 네임스페이스 간에 구성 맵을 공유하려면 SharedConfigMap CR(사용자 정의 리소스) 인스턴스를 생성합니다.
사전 요구 사항
다음 작업을 수행할 수 있는 권한이 있어야 합니다.
-
클러스터 범위 수준에서
sharedconfigmaps.sharedresource.openshift.ioCRD(사용자 정의 리소스 정의)를 생성합니다. -
SharedConfigMapCR에 대한ClusterRole오브젝트를 생성합니다. - CSI(Share Resource Container Storage Interface) 드라이버에 대한 역할 및 역할 바인딩을 생성합니다.
- 클러스터의 네임스페이스에서 역할 및 역할 바인딩을 관리하여 해당 인스턴스를 가져오고, 나열하고, 조사할 수 있는 사용자를 제어합니다.
- 클러스터의 네임스페이스에서 역할 및 역할 바인딩을 관리하여 CSI 볼륨을 마운트하는 Pod에서 해당 인스턴스를 사용할 수 있는 서비스 계정을 제어합니다.
- 공유할 시크릿이 포함된 네임스페이스에 액세스합니다.
프로세스
클러스터의 네임스페이스에서 공유할 구성 맵에 대한
SharedConfigMapCR 인스턴스를 생성합니다. 다음 예제 구성을 참조하십시오.apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedConfigMap metadata: name: share-test-config spec: configMapRef: name: shared-config namespace: <name_of_the_source_namespace>apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedConfigMap metadata: name: share-test-config1 spec: configMapRef: name: shared-config namespace: <name_of_the_source_namespace>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제 구성을 사용하여 참조된 공유 리소스를 사용할 수 있는 RBAC(역할 기반 액세스 제어) 권한을 부여하는
ClusterRoleCR 인스턴스를 생성합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <cluster_role_name> rules: - apiGroups: - sharedresource.openshift.io resources: - sharedconfigmaps resourceNames: - share-test-config verbs: - useapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <cluster_role_name>1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedconfigmaps resourceNames: - share-test-config2 verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow Role및RoleBinding오브젝트를 생성하여 CSI 드라이버 권한을 구성 맵에 액세스할 수 있는 권한을 부여합니다.Role오브젝트의 예apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-test-config namespace: test-share-source rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["shared-config"] verbs: ["get", "list", "watch"]apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-test-config namespace: test-share-source1 rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["shared-config"] verbs: ["get", "list", "watch"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 소스 네임스페이스의 이름을 정의합니다.
RoleBinding오브젝트의 예apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: shared-test-config namespace: test-share-source roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: shared-test-config subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: shared-test-config namespace: test-share-source1 roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: shared-test-config subjects:2 - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5. Pod에서 SharedConfigMap 인스턴스 사용 링크 복사링크가 클립보드에 복사되었습니다!
Pod에서 SharedConfigMap CR(사용자 정의 리소스) 인스턴스에 액세스하려면 해당 SharedConfigMap CR 인스턴스를 사용할 수 있는 지정된 서비스 계정 역할 기반 액세스 제어(RBAC) 권한을 부여합니다.
사전 요구 사항
-
클러스터의 네임스페이스에서 공유할 구성 맵에 대해
SharedConfigMapCR 인스턴스를 생성했습니다. 다음 작업을 수행할 수 있는 권한이 있어야 합니다.
-
oc get sharedconfigmaps명령을 입력하여SharedConfigMapCR 인스턴스 목록을 가져옵니다. -
서비스 계정이
SharedSecretCR을 사용하도록 허용된 경우oc adm policy who-can use <sharedsecret_identifier> 명령을 실행하여 네임스페이스에 서비스 계정이 나열되어 있는지 확인합니다. -
Pod의 서비스 계정이
csi볼륨을 사용할 수 있는지 확인합니다. Pod를 사용자로 생성한 경우csi볼륨을 사용할 수 있는지 확인합니다.
-
마지막 두 사전 요구 사항을 완료할 수 없는 경우 클러스터 관리자가 필요한 RBAC(역할 기반 액세스 제어)를 설정하여 서비스 계정에서 SharedConfigMap CR을 사용할 수 있도록 할 수 있습니다.
프로세스
역할과 연결된
RoleBinding오브젝트를 생성하고 공유 리소스를 사용할 수 있는 서비스 계정에 권한을 부여합니다. 다음 예제 구성을 참조하십시오.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace> roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace>1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공유 리소스
csi드라이버를 Pod 또는csi볼륨을 허용하는 기타 리소스에 마운트합니다. 다음 예제 구성을 참조하십시오.apiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace> spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-configapiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace>1 spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-config2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6. volumeAttributes의 유효성을 검사하는 조건 링크 복사링크가 클립보드에 복사되었습니다!
단일 볼륨의 volumeAttributes 필드에서 sharedSecret 또는 sharedConfigMap 특성을 SharedSecret 또는 SharedConfigMap 인스턴스 값으로 설정해야 합니다. 그러지 않으면 Pod를 시작하는 동안 볼륨이 프로비저닝되면 검증 검사에서 kubelet에 오류를 반환합니다. Pod의 공유 리소스 볼륨을 프로비저닝하려면 다음 조건을 검토합니다.
-
sharedSecret및sharedConfigMap속성에 대한 값을 지정해야 합니다. -
sharedSecret및sharedConfigMap속성 값이 CR(사용자 정의 리소스)의 이름과 일치해야 합니다.
1.7. OpenShift 서브스크립션 인타이틀먼트를 사용하여 이미지 빌드 링크 복사링크가 클립보드에 복사되었습니다!
공유 리소스, Insights Operator 및 Red Hat OpenShift 빌드 빌드 간의 통합을 통해 Red Hat OpenShift 빌드 빌드에서 RHEL(Red Hat 서브스크립션)을 더 쉽게 사용할 수 있습니다.
OpenShift Container Platform 4.10 이상에서는 Red Hat OpenShift용 빌드에서 공유 리소스 및 Insights Operator에서 제공하는 간단한 콘텐츠 액세스 기능을 참조하여 RHEL(Red Hat 서브스크립션)을 사용할 수 있습니다.
-
간단한 콘텐츠 액세스 기능은 서브스크립션 인증 정보를 잘 알려진
Secret오브젝트로 가져옵니다. -
클러스터 관리자는
Secret오브젝트를 사용하여SharedSecretCR(사용자 정의 리소스)을 생성하고 프로젝트 또는 네임스페이스에 권한을 부여합니다. 클러스터 관리자는builder서비스 계정에SharedSecretCR을 사용할 수 있는 권한을 제공합니다. -
해당 프로젝트 또는 네임스페이스 내에서 실행되는 빌드는
SharedSecretCR 인스턴스 및 해당 RHEL 콘텐츠를 참조하는 CSI(Container Storage Interface) 볼륨을 마운트할 수 있습니다.
1.8. SharedSecret 오브젝트를 사용하여 빌드 실행 링크 복사링크가 클립보드에 복사되었습니다!
SharedSecret 오브젝트를 사용하여 빌드에서 클러스터의 RHEL 인타이틀먼트 키에 안전하게 액세스할 수 있습니다. SharedSecret 오브젝트를 사용하면 네임스페이스에서 보안을 공유하고 동기화할 수 있습니다.
사전 요구 사항
다음 작업을 수행할 수 있는 권한이 있어야 합니다.
- 빌드 구성을 생성하고 빌드를 시작합니다.
-
SharedSecret오브젝트를 생성합니다. -
oc get sharedsecrets명령을 입력하고 비어 있지 않은 목록을 다시 가져와서 사용할 수 있는SharedSecretCR(사용자 정의 리소스) 인스턴스를 검색합니다. -
서비스 계정이
SharedSecretCR을 사용하도록 허용된 경우oc adm policy who-can use <sharedsecret_identifier> 명령을 실행하여 네임스페이스에 서비스 계정이 나열되어 있는지 확인합니다.
마지막 두 사전 요구 사항을 완료할 수 없는 경우 클러스터 관리자가 필요한 역할 기반 액세스 제어(RBAC)를 설정하여 서비스 계정에 SharedSecret CR을 사용할 수 있도록 할 수 있습니다.
프로세스
다음 명령을 실행하여 클러스터의 인타이틀먼트 시크릿을 사용하여
SharedSecret오브젝트 인스턴스를 생성합니다.$ oc apply -f -<<EOF apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: etc-pki-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: etc-pki-entitlement spec: secretRef: name: etc-pki-entitlement namespace: openshift-config-managed EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예제 구성을 사용하여
SharedSecret오브젝트에 액세스할 수 있는 권한을 부여할ClusterRole오브젝트를 생성합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-share-etc-pki-entitlement rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - etc-pki-entitlement verbs: - useapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-share-etc-pki-entitlement1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - etc-pki-entitlement verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterRoleCR의 이름을 정의합니다.
Shared Resources CSI 드라이버에
SharedSecret오브젝트에 액세스할 수 있는 권한을 부여하는Role및RoleBinding오브젝트를 생성합니다.Role오브젝트의 예apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchapiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
RoleCR의 이름을 정의합니다.
RoleBinding오브젝트의 예apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement1 namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-builds2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 빌드가 실행되는 네임스페이스에서
builder및pipeline서비스 계정에 대한RoleBinding오브젝트를 생성합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-share-etc-pki-entitlement roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-share-etc-pki-entitlement subjects: - kind: ServiceAccount name: pipeline - kind: ServiceAccount name: builderapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-share-etc-pki-entitlement1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-share-etc-pki-entitlement subjects: - kind: ServiceAccount name: pipeline - kind: ServiceAccount name: builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
builder및pipeline서비스 계정에 대한RoleBindingCR의 이름을 정의합니다.
참고SharedSecret오브젝트를 사용하는 서비스 계정은 OpenShift 컨트롤러에서 생성 및 관리합니다.buildah빌드 전략을 사용하여SharedSecret오브젝트를 마운트합니다. 다음 예제를 참조하십시오.$ oc apply -f -<<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-rhel spec: source: type: Git git: url: https://github.com/redhat-openshift-builds/samples contextDir: buildah-build strategy: name: buildah kind: ClusterBuildStrategy paramValues: - name: dockerfile value: DockerFile volumes: - csi: driver: csi.sharedresource.openshift.io readOnly: true volumeAttributes: sharedSecret: <sharedsecret_object_name> name: etc-pki-entitlement output: image: <output_image_location> EOF$ oc apply -f -<<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: buildah-rhel spec: source: type: Git git: url: https://github.com/redhat-openshift-builds/samples contextDir: buildah-build strategy: name: buildah kind: ClusterBuildStrategy paramValues: - name: dockerfile value: DockerFile volumes: - csi: driver: csi.sharedresource.openshift.io readOnly: true1 volumeAttributes: sharedSecret: <sharedsecret_object_name>2 name: etc-pki-entitlement output: image: <output_image_location>3 EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman 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 Software Collections 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.