10.5. SharedSecret 오브젝트를 사용하여 권한이 부여된 빌드 실행
				다른 네임스페이스의 Secret 오브젝트에서 RHEL 인타이틀먼트를 안전하게 사용하는 하나의 네임스페이스에서 빌드를 구성하고 수행할 수 있습니다.
			
				Build 오브젝트와 동일한 네임스페이스에 서브스크립션 자격 증명으로 Secret 오브젝트를 생성하여 OpenShift 빌드에서 RHEL 인타이틀먼트에 계속 액세스할 수 있습니다. 그러나 이제 OpenShift Container Platform 4.10 이상에서는 OpenShift Container Platform 시스템 네임스페이스 중 하나에서 Secret 오브젝트에서 인증 정보 및 인증서에 액세스할 수 있습니다. Secret 오브젝트를 참조하는 SharedSecret CR(사용자 정의 리소스) 인스턴스의 CSI 볼륨 마운트를 사용하여 권한이 부여된 빌드를 실행합니다.
			
이 절차에서는 OpenShift Container Platform 빌드에서 CSI 볼륨 마운트를 선언하는 데 사용할 수 있는 새로 도입된 공유 리소스 CSI 드라이버 기능을 사용합니다. 또한 OpenShift Container Platform Insights Operator를 사용합니다.
공유 리소스 CSI 드라이버 및 빌드 CSI 볼륨은 기술 프리뷰 기능이며 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
					공유 리소스 CSI 드라이버 및 빌드 CSI 볼륨 기능도 현재 기술 프리뷰 기능의 하위 집합인 TechPreviewNoUpgrade 기능 세트에 속합니다. 프로덕션 클러스터에서 비활성화된 기능을 그대로 유지하면서 테스트 클러스터에 설정된 TechPreviewNoUpgrade 기능을 활성화할 수 있습니다. 이 기능 세트를 활성화하면 실행 취소할 수 없으며 마이너 버전 업데이트가 허용되지 않습니다. 이 기능 세트는 프로덕션 클러스터에서는 권장되지 않습니다. 다음 "추가 리소스" 섹션의 "기능 게이트를 사용하여 기술 프리뷰 기능 활성화"를 참조하십시오.
				
사전 요구 사항
- 
						기능 게이트를 사용하여 
TechPreviewNoUpgrade기능을 활성화했습니다. - 
						Insights Operator가 서브스크립션 인증 정보를 저장하는 
Secret오브젝트를 참조하는SharedSecretCR(사용자 정의 리소스) 인스턴스가 있습니다. 다음 작업을 수행할 수 있는 권한이 있어야 합니다.
- 빌드 구성을 생성하고 빌드를 시작합니다.
 - 
								
oc get sharedsecrets명령을 입력하고 비어 있지 않은 목록을 다시 가져와서 사용할 수 있는SharedSecretCR 인스턴스를 검색합니다. - 
								네임스페이스에서 사용할 수 있는 
빌더서비스 계정이 지정된SharedSecretCR 인스턴스를 사용할 수 있는지 확인합니다. 즉, <identifier of specific SharedSecret>을 사용할 수 있는 oc adm policy를 실행하여 네임스페이스의builder서비스 계정이 나열되어 있는지 확인할 수 있습니다. 
					이 목록의 마지막 두 사전 요구 사항이 충족되지 않거나, 설정 또는 설정하도록 요청하는 경우, SharedSecret CR 인스턴스를 검색하고 서비스 계정에서 SharedSecret CR 인스턴스를 사용할 수 있도록 필요한 역할 기반 액세스 제어(RBAC)를 요청합니다.
				
프로세스
oc applywith YAML 콘텐츠를 사용하여SharedSecretCR 인스턴스를 사용하도록빌더서비스 계정 RBAC 권한을 부여합니다.참고현재
kubectl및oc는 Pod 보안을 중심으로 하는 역할로use동사를 제한하는 특수 케이스 논리를 하드 코딩했습니다. 따라서oc create role …을 사용하여SharedSecretCR 인스턴스 사용에 필요한 역할을 생성할 수 없습니다.YAML
Role오브젝트 정의가 포함된oc apply -f명령의 예oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-resource-my-share namespace: my-namespace rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - my-share verbs: - use EOF$ oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-resource-my-share namespace: my-namespace rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - my-share verbs: - use EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc명령을 사용하여 역할과 연결된RoleBinding을 생성합니다.oc create rolebinding명령 예oc create rolebinding shared-resource-my-share --role=shared-resource-my-share --serviceaccount=my-namespace:builder
$ oc create rolebinding shared-resource-my-share --role=shared-resource-my-share --serviceaccount=my-namespace:builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 인타이틀먼트에 액세스하는
BuildConfig오브젝트를 생성합니다.YAML
BuildConfig오브젝트 정의의 예apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: my-csi-bc namespace: my-csi-app-namespace spec: runPolicy: Serial source: dockerfile: | FROM registry.redhat.io/ubi9/ubi:latest RUN ls -la /etc/pki/entitlement RUN rm /etc/rhsm-host RUN yum repolist --disablerepo=* RUN subscription-manager repos --enable rhocp-4.9-for-rhel-8-x86_64-rpms RUN yum -y update RUN yum install -y openshift-clients.x86_64 strategy: type: Docker dockerStrategy: volumes: - mounts: - destinationPath: "/etc/pki/entitlement" name: my-csi-shared-secret source: csi: driver: csi.sharedresource.openshift.io readOnly: true volumeAttributes: sharedSecret: my-share-bc type: CSIapiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: my-csi-bc namespace: my-csi-app-namespace spec: runPolicy: Serial source: dockerfile: | FROM registry.redhat.io/ubi9/ubi:latest RUN ls -la /etc/pki/entitlement RUN rm /etc/rhsm-host RUN yum repolist --disablerepo=* RUN subscription-manager repos --enable rhocp-4.9-for-rhel-8-x86_64-rpms RUN yum -y update RUN yum install -y openshift-clients.x86_64 strategy: type: Docker dockerStrategy: volumes: - mounts: - destinationPath: "/etc/pki/entitlement" name: my-csi-shared-secret source: csi: driver: csi.sharedresource.openshift.io readOnly: true volumeAttributes: sharedSecret: my-share-bc type: CSICopy to Clipboard Copied! Toggle word wrap Toggle overflow BuildConfig오브젝트에서 빌드를 시작하고oc명령을 사용하여 로그를 따릅니다.oc start-build 명령 예
oc start-build my-csi-bc -F
$ oc start-build my-csi-bc -FCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예 10.1. oc start-build 명령의 출력 예
참고다음 출력의 일부 섹션이
…로 교체되었습니다.build.build.openshift.io/my-csi-bc-1 started Caching blobs under "/var/cache/blobs". Pulling image registry.redhat.io/ubi9/ubi:latest ... Trying to pull registry.redhat.io/ubi9/ubi:latest... Getting image source signatures Copying blob sha256:5dcbdc60ea6b60326f98e2b49d6ebcb7771df4b70c6297ddf2d7dede6692df6e Copying blob sha256:8671113e1c57d3106acaef2383f9bbfe1c45a26eacb03ec82786a494e15956c3 Copying config sha256:b81e86a2cb9a001916dc4697d7ed4777a60f757f0b8dcc2c4d8df42f2f7edb3a Writing manifest to image destination Storing signatures Adding transient rw bind mount for /run/secrets/rhsm STEP 1/9: FROM registry.redhat.io/ubi9/ubi:latest STEP 2/9: RUN ls -la /etc/pki/entitlement total 360 drwxrwxrwt. 2 root root 80 Feb 3 20:28 . drwxr-xr-x. 10 root root 154 Jan 27 15:53 .. -rw-r--r--. 1 root root 3243 Feb 3 20:28 entitlement-key.pem -rw-r--r--. 1 root root 362540 Feb 3 20:28 entitlement.pem time="2022-02-03T20:28:32Z" level=warning msg="Adding metacopy option, configured globally" --> 1ef7c6d8c1a STEP 3/9: RUN rm /etc/rhsm-host time="2022-02-03T20:28:33Z" level=warning msg="Adding metacopy option, configured globally" --> b1c61f88b39 STEP 4/9: RUN yum repolist --disablerepo=* Updating Subscription Management repositories. ... --> b067f1d63eb STEP 5/9: RUN subscription-manager repos --enable rhocp-4.9-for-rhel-8-x86_64-rpms Repository 'rhocp-4.9-for-rhel-8-x86_64-rpms' is enabled for this system. time="2022-02-03T20:28:40Z" level=warning msg="Adding metacopy option, configured globally" --> 03927607ebd STEP 6/9: RUN yum -y update Updating Subscription Management repositories. ... Upgraded: systemd-239-51.el8_5.3.x86_64 systemd-libs-239-51.el8_5.3.x86_64 systemd-pam-239-51.el8_5.3.x86_64 Installed: diffutils-3.6-6.el8.x86_64 libxkbcommon-0.9.1-1.el8.x86_64 xkeyboard-config-2.28-1.el8.noarch Complete! time="2022-02-03T20:29:05Z" level=warning msg="Adding metacopy option, configured globally" --> db57e92ff63 STEP 7/9: RUN yum install -y openshift-clients.x86_64 Updating Subscription Management repositories. ... Installed: bash-completion-1:2.7-5.el8.noarch libpkgconf-1.4.2-1.el8.x86_64 openshift-clients-4.9.0-202201211735.p0.g3f16530.assembly.stream.el8.x86_64 pkgconf-1.4.2-1.el8.x86_64 pkgconf-m4-1.4.2-1.el8.noarch pkgconf-pkg-config-1.4.2-1.el8.x86_64 Complete! time="2022-02-03T20:29:19Z" level=warning msg="Adding metacopy option, configured globally" --> 609507b059e STEP 8/9: ENV "OPENSHIFT_BUILD_NAME"="my-csi-bc-1" "OPENSHIFT_BUILD_NAMESPACE"="my-csi-app-namespace" --> cab2da3efc4 STEP 9/9: LABEL "io.openshift.build.name"="my-csi-bc-1" "io.openshift.build.namespace"="my-csi-app-namespace" COMMIT temp.builder.openshift.io/my-csi-app-namespace/my-csi-bc-1:edfe12ca --> 821b582320b Successfully tagged temp.builder.openshift.io/my-csi-app-namespace/my-csi-bc-1:edfe12ca 821b582320b41f1d7bab4001395133f86fa9cc99cc0b2b64c5a53f2b6750db91 Build complete, no image push requested
build.build.openshift.io/my-csi-bc-1 started Caching blobs under "/var/cache/blobs". Pulling image registry.redhat.io/ubi9/ubi:latest ... Trying to pull registry.redhat.io/ubi9/ubi:latest... Getting image source signatures Copying blob sha256:5dcbdc60ea6b60326f98e2b49d6ebcb7771df4b70c6297ddf2d7dede6692df6e Copying blob sha256:8671113e1c57d3106acaef2383f9bbfe1c45a26eacb03ec82786a494e15956c3 Copying config sha256:b81e86a2cb9a001916dc4697d7ed4777a60f757f0b8dcc2c4d8df42f2f7edb3a Writing manifest to image destination Storing signatures Adding transient rw bind mount for /run/secrets/rhsm STEP 1/9: FROM registry.redhat.io/ubi9/ubi:latest STEP 2/9: RUN ls -la /etc/pki/entitlement total 360 drwxrwxrwt. 2 root root 80 Feb 3 20:28 . drwxr-xr-x. 10 root root 154 Jan 27 15:53 .. -rw-r--r--. 1 root root 3243 Feb 3 20:28 entitlement-key.pem -rw-r--r--. 1 root root 362540 Feb 3 20:28 entitlement.pem time="2022-02-03T20:28:32Z" level=warning msg="Adding metacopy option, configured globally" --> 1ef7c6d8c1a STEP 3/9: RUN rm /etc/rhsm-host time="2022-02-03T20:28:33Z" level=warning msg="Adding metacopy option, configured globally" --> b1c61f88b39 STEP 4/9: RUN yum repolist --disablerepo=* Updating Subscription Management repositories. ... --> b067f1d63eb STEP 5/9: RUN subscription-manager repos --enable rhocp-4.9-for-rhel-8-x86_64-rpms Repository 'rhocp-4.9-for-rhel-8-x86_64-rpms' is enabled for this system. time="2022-02-03T20:28:40Z" level=warning msg="Adding metacopy option, configured globally" --> 03927607ebd STEP 6/9: RUN yum -y update Updating Subscription Management repositories. ... Upgraded: systemd-239-51.el8_5.3.x86_64 systemd-libs-239-51.el8_5.3.x86_64 systemd-pam-239-51.el8_5.3.x86_64 Installed: diffutils-3.6-6.el8.x86_64 libxkbcommon-0.9.1-1.el8.x86_64 xkeyboard-config-2.28-1.el8.noarch Complete! time="2022-02-03T20:29:05Z" level=warning msg="Adding metacopy option, configured globally" --> db57e92ff63 STEP 7/9: RUN yum install -y openshift-clients.x86_64 Updating Subscription Management repositories. ... Installed: bash-completion-1:2.7-5.el8.noarch libpkgconf-1.4.2-1.el8.x86_64 openshift-clients-4.9.0-202201211735.p0.g3f16530.assembly.stream.el8.x86_64 pkgconf-1.4.2-1.el8.x86_64 pkgconf-m4-1.4.2-1.el8.noarch pkgconf-pkg-config-1.4.2-1.el8.x86_64 Complete! time="2022-02-03T20:29:19Z" level=warning msg="Adding metacopy option, configured globally" --> 609507b059e STEP 8/9: ENV "OPENSHIFT_BUILD_NAME"="my-csi-bc-1" "OPENSHIFT_BUILD_NAMESPACE"="my-csi-app-namespace" --> cab2da3efc4 STEP 9/9: LABEL "io.openshift.build.name"="my-csi-bc-1" "io.openshift.build.namespace"="my-csi-app-namespace" COMMIT temp.builder.openshift.io/my-csi-app-namespace/my-csi-bc-1:edfe12ca --> 821b582320b Successfully tagged temp.builder.openshift.io/my-csi-app-namespace/my-csi-bc-1:edfe12ca 821b582320b41f1d7bab4001395133f86fa9cc99cc0b2b64c5a53f2b6750db91 Build complete, no image push requestedCopy to Clipboard Copied! Toggle word wrap Toggle overflow