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
오브젝트를 참조하는SharedSecret
CR(사용자 정의 리소스) 인스턴스가 있습니다. 다음 작업을 수행할 수 있는 권한이 있어야 합니다.
- 빌드 구성을 생성하고 빌드를 시작합니다.
-
oc get sharedsecrets
명령을 입력하고 비어 있지 않은 목록을 다시 가져와서 사용할 수 있는SharedSecret
CR 인스턴스를 검색합니다. -
네임스페이스에서 사용할 수 있는
빌더
서비스 계정이 지정된SharedSecret
CR 인스턴스를 사용할 수 있는지 확인합니다. 즉, <identifier of specific SharedSecret>을 사용할 수 있는 oc adm policy
를 실행하여 네임스페이스의builder
서비스 계정이 나열되어 있는지 확인할 수 있습니다.
이 목록의 마지막 두 사전 요구 사항이 충족되지 않거나, 설정 또는 설정하도록 요청하는 경우, SharedSecret
CR 인스턴스를 검색하고 서비스 계정에서 SharedSecret
CR 인스턴스를 사용할 수 있도록 필요한 역할 기반 액세스 제어(RBAC)를 요청합니다.
프로세스
oc apply
with YAML 콘텐츠를 사용하여SharedSecret
CR 인스턴스를 사용하도록빌더
서비스 계정 RBAC 권한을 부여합니다.참고현재
kubectl
및oc
는 Pod 보안을 중심으로 하는 역할로use
동사를 제한하는 특수 케이스 논리를 하드 코딩했습니다. 따라서oc create role …
을 사용하여SharedSecret
CR 인스턴스 사용에 필요한 역할을 생성할 수 없습니다.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
명령을 사용하여 역할과 연결된RoleBinding
을 생성합니다.oc create rolebinding
명령 예$ oc create rolebinding shared-resource-my-share --role=shared-resource-my-share --serviceaccount=my-namespace:builder
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: CSI
BuildConfig
오브젝트에서 빌드를 시작하고oc
명령을 사용하여 로그를 따릅니다.oc start-build 명령 예
$ oc start-build my-csi-bc -F
예 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