2.10. 빌드에서 Red Hat 서브스크립션 사용
OpenShift Container Platform에서 권한이 있는 빌드를 실행하려면 다음 섹션을 사용합니다.
2.10.1. Red Hat Universal Base Image에 대한 이미지 스트림 태그 생성
빌드 내에서 Red Hat 서브스크립션을 사용하려면 UBI(Universal Base Image)를 참조하는 이미지 스트림 태그를 생성합니다.
클러스터의 모든 프로젝트에서 UBI를 사용할 수 있도록 하려면 openshift
네임스페이스에 이미지 스트림 태그를 추가합니다. 또는 UBI를 특정 프로젝트에서 사용할 수 있도록 하려면 해당 프로젝트에 이미지 스트림 태그를 추가합니다.
이미지 스트림 태그를 이러한 방식으로 사용할 때의 이점은 다른 사용자에게 가져오기 보안을 노출하지 않고 설치의 registry.redhat.io
자격 증명에 따라 UBI에 대한 액세스 권한을 부여할 수 있다는 점입니다. 이 방식은 각 개발자에게 각 프로젝트에서 registry.redhat.io
자격 증명을 사용하여 가져오기 보안을 설치하도록 요구하는 방식보다 편리합니다.
프로세스
openshift
네임스페이스에ImageStreamTag
를 생성하려면 모든 프로젝트의 개발자가 다음을 입력하면 됩니다.$ oc tag --source=docker registry.redhat.io/ubi7/ubi:latest ubi:latest -n openshift
단일 프로젝트에서
ImageStreamTag
를 생성하려면 다음을 입력합니다.$ oc tag --source=docker registry.redhat.io/ubi7/ubi:latest ubi:latest
2.10.2. 서브스크립션 자격을 빌드 보안으로 추가
Red Hat 서브스크립션을 사용하여 콘텐츠를 설치하는 빌드에는 자격 키가 빌드 보안으로 포함되어야 합니다.
사전 요구 사항
서브스크립션을 통해 Red Hat 인타이틀먼트에 액세스할 수 있어야 합니다. 인타이틀먼트 보안은 Insights Operator에 의해 자동으로 생성됩니다.
RHEL(Red Hat Enterprise Linux) 7을 사용하여 인타이틀먼트 빌드를 수행할 때 yum
명령을 실행하기 전에 Dockerfile에 다음 지침이 있어야 합니다.
RUN rm /etc/rhsm-host
프로세스
etc-pki-entitlement 보안을 빌드 구성에 빌드 입력으로 추가합니다.
source: secrets: - secret: name: etc-pki-entitlement destinationDir: etc-pki-entitlement
2.10.3. 서브스크립션 관리자를 사용한 빌드 실행
2.10.3.1. 서브스크립션 관리자를 사용하는 Docker 빌드
Docker 전략 빌드에서는 Subscription Manager를 사용하여 서브스크립션 콘텐츠를 설치할 수 있습니다.
사전 요구 사항
자격 키, 서브스크립션 관리자 구성, 서브스크립션 관리자 인증 기관을 빌드 입력으로 추가해야 합니다.
프로세스
다음을 예제 Dockerfile로 사용하여 서브스크립션 관리자를 통해 콘텐츠를 설치합니다.
FROM registry.redhat.io/rhel7:latest USER root # Copy entitlements COPY ./etc-pki-entitlement /etc/pki/entitlement # Copy subscription manager configurations COPY ./rhsm-conf /etc/rhsm COPY ./rhsm-ca /etc/rhsm/ca # Delete /etc/rhsm-host to use entitlements from the build container RUN rm /etc/rhsm-host && \ # Initialize /etc/yum.repos.d/redhat.repo # See https://access.redhat.com/solutions/1443553 yum repolist --disablerepo=* && \ subscription-manager repos --enable <enabled-repo> && \ yum -y update && \ yum -y install <rpms> && \ # Remove entitlements and Subscription Manager configs rm -rf /etc/pki/entitlement && \ rm -rf /etc/rhsm # OpenShift requires images to run as non-root by default USER 1001 ENTRYPOINT ["/bin/bash"]
2.10.4. Red Hat Satellite 서브스크립션을 사용하여 빌드 실행
2.10.4.1. 빌드에 Red Hat Satellite 구성 추가
Red Hat Satellite를 사용하여 콘텐츠를 설치하는 빌드에서는 Satellite 리포지토리에서 콘텐츠를 가져오기 위해 적절한 구성을 제공해야 합니다.
사전 요구 사항
Satellite 인스턴스에서 콘텐츠를 다운로드하는
yum
호환 리포지토리 구성 파일을 제공하거나 생성해야 합니다.리포지토리 구성 샘플
[test-<name>] name=test-<number> baseurl = https://satellite.../content/dist/rhel/server/7/7Server/x86_64/os enabled=1 gpgcheck=0 sslverify=0 sslclientkey = /etc/pki/entitlement/...-key.pem sslclientcert = /etc/pki/entitlement/....pem
절차
Satellite 리포지토리 구성 파일이 포함된
ConfigMap
을 생성합니다.$ oc create configmap yum-repos-d --from-file /path/to/satellite.repo
BuildConfig
에 Satellite 리포지토리 구성을 추가합니다.source: configMaps: - configMap: name: yum-repos-d destinationDir: yum.repos.d
2.10.4.2. Red Hat Satellite 서브스크립션을 사용하는 Docker 빌드
Docker 전략 빌드에서는 Red Hat Satellite 리포지토리를 사용하여 서브스크립션 콘텐츠를 설치할 수 있습니다.
사전 요구 사항
- 자격 키 및 Satellite 리포지토리 구성을 빌드 입력으로 추가해야 합니다.
프로세스
다음을 예제 Dockerfile로 사용하여 Satellite를 통해 콘텐츠를 설치합니다.
FROM registry.redhat.io/rhel7:latest
USER root
# Copy entitlements
COPY ./etc-pki-entitlement /etc/pki/entitlement
# Copy repository configuration
COPY ./yum.repos.d /etc/yum.repos.d
# Delete /etc/rhsm-host to use entitlements from the build container
RUN sed -i".org" -e "s#^enabled=1#enabled=0#g" /etc/yum/pluginconf.d/subscription-manager.conf 1
#RUN cat /etc/yum/pluginconf.d/subscription-manager.conf
RUN yum clean all
#RUN yum-config-manager
RUN rm /etc/rhsm-host && \
# yum repository info provided by Satellite
yum -y update && \
yum -y install <rpms> && \
# Remove entitlements
rm -rf /etc/pki/entitlement
# OpenShift requires images to run as non-root by default
USER 1001
ENTRYPOINT ["/bin/bash"]
- 1
enabled=1
을 사용하여 빌드에 Satellite 구성을 추가하는 데 실패하면 Dockerfile에RUN sed -i".org" -e "s#^enabled=1#enabled=0#g" /etc/yum/pluginconf.d/subscription-manager.conf
를 추가합니다.