2.10. ビルドでの Red Hat サブスクリプションの使用
以下のセクションを使用して、OpenShift Container Platform でエンタイトルメントが適用されたビルドを実行します。
2.10.1. Red Hat Universal Base Image へのイメージストリームタグの作成
ビルド内で Red Hat サブスクリプションを使用するには、Universal Base Image (UBI) を参照するイメージストリームを作成します。
UBI をクラスター内の すべてのプロジェクトで 利用可能にするには、イメージストリームタグを openshift
namespace に追加します。それ以外の場合は、これを 特定のプロジェクトで 利用可能にするには、イメージストリームタグをそのプロジェクトに追加します。
このようにイメージストリームタグを使用すると、他のユーザーにプルシークレットを公開せずに、インストールプルシークレットの registry.redhat.io
認証情報に基づいて UBI へのアクセスを付与することができます。これは、各開発者が各プロジェクトで registry.redhat.io
認証情報を使用してプルシークレットをインストールすることが必要になる場合よりも便利です。
手順
openshift
namespace で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 によって自動的に作成されます。
Red Hat Enterprise Linux (RHEL) 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. Subscription Manager を使用したビルドの実行
2.10.3.1. Subscription Manager を使用した Docker ビルド
Docker ストラテジービルドは Subscription Manager を使用してサブスクリプションコンテンツをインストールできます。
前提条件
エンタイトルメントキー、Subscription Manager の設定、および Subscription Manager の認証局は、ビルド入力として追加する必要があります。
手順
以下を Dockerfile の例として使用し、Subscription Manager でコンテンツをインストールします。
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
Satellite リポジトリー設定を
BuildConfig
に追加します。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 設定をビルドに追加できない場合は、RUN sed -i".org" -e "s#^enabled=1#enabled=0#g" /etc/yum/pluginconf.d/subscription-manager.conf
を Dockerfile に追加します。