2.10. ビルドでの Red Hat サブスクリプションの使用
以下のセクションを使用して、OpenShift Container Platform ビルド内に Red Hat サブスクリプションコンテンツをインストールします。
2.10.1. Red Hat Universal Base Image へのイメージストリームタグの作成
ビルド内に Red Hat Enterprise Linux (RHEL) パッケージをインストールするには、Red Hat Universal Base Image (UBI) を参照するイメージストリームタグを作成します。
クラスター内の すべてのプロジェクトで UBI を利用可能にするには、イメージストリームタグを openshift
namespace に追加します。または、特定のプロジェクトで UBI を利用可能にするには、イメージストリームタグをそのプロジェクトに追加します。
イメージストリームタグは、他のユーザーにプルシークレットを公開せずに、インストールプルシークレットにある registry.redhat.io
の認証情報を使用して UBI へのアクセスを許可します。この方法は、各プロジェクトで registry.redhat.io
の認証情報を使用してプルシークレットをインストールするよう各開発者に求める方法よりも便利です。
手順
すべてのプロジェクトの開発者が利用できるように、
openshift
namespace にImageStreamTag
リソースを作成するには、次のコマンドを入力します。$ oc tag --source=docker registry.redhat.io/ubi9/ubi:latest ubi9:latest -n openshift
ヒントまたは、以下の YAML を適用して
openshift
namespace にImageStreamTag
リソースを作成できます。apiVersion: image.openshift.io/v1 kind: ImageStream metadata: name: ubi9 namespace: openshift spec: tags: - from: kind: DockerImage name: registry.redhat.io/ubi9/ubi:latest name: latest referencePolicy: type: Source
単一のプロジェクトで
ImageStreamTag
リソースを作成するには、次のコマンドを入力します。$ oc tag --source=docker registry.redhat.io/ubi9/ubi:latest ubi:latest
ヒントまたは、以下の YAML を適用して単一のプロジェクトに
ImageStreamTag
リソースを作成できます。apiVersion: image.openshift.io/v1 kind: ImageStream metadata: name: ubi9 spec: tags: - from: kind: DockerImage name: registry.redhat.io/ubi9/ubi:latest name: latest referencePolicy: type: Source
2.10.2. ビルドシークレットとしてのサブスクリプションエンタイトルメントの追加
Red Hat サブスクリプションを使用してコンテンツをインストールするビルドには、ビルドシークレットとしてエンタイトルメントキーを含める必要があります。
前提条件
- サブスクリプションを通じて Red Hat Enterprise Linux (RHEL) パッケージリポジトリーにアクセスできる必要があります。これらのリポジトリーにアクセスするためのエンタイトルメントシークレットは、クラスターがサブスクライブされるときに、Insights Operator によって自動的に作成されます。
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる必要があります。または、openshift-config-managed
プロジェクト内のシークレットにアクセスする権限を持っている必要があります。
手順
次のコマンドを実行して、
openshift-config-managed
namespace からビルドの namespace にエンタイトルメントシークレットをコピーします。$ cat << EOF > secret-template.txt kind: Secret apiVersion: v1 metadata: name: etc-pki-entitlement type: Opaque data: {{ range \$key, \$value := .data }} {{ \$key }}: {{ \$value }} {{ end }} EOF $ oc get secret etc-pki-entitlement -n openshift-config-managed -o=go-template-file --template=secret-template.txt | oc apply -f -
etc-pki-entitlement シークレットをビルド設定の Docker ストラテジーでビルドボリュームとして追加します。
strategy: dockerStrategy: from: kind: ImageStreamTag name: ubi9:latest volumes: - name: etc-pki-entitlement mounts: - destinationPath: /etc/pki/entitlement source: type: Secret secret: secretName: etc-pki-entitlement
2.10.3. Subscription Manager を使用したビルドの実行
2.10.3.1. Subscription Manager を使用した Docker ビルド
Docker ストラテジービルドでは、yum
または dnf
を使用して追加の Red Hat Enterprise Linux (RHEL) パッケージをインストールできます。
前提条件
- エンタイトルメントキーは、ビルドストラテジーのボリュームとして追加する必要があります。
手順
以下を Dockerfile の例として使用し、Subscription Manager でコンテンツをインストールします。
FROM registry.redhat.io/ubi9/ubi:latest RUN rm -rf /etc/rhsm-host 1 RUN yum --enablerepo=codeready-builder-for-rhel-9-x86_64-rpms install \ 2 nss_wrapper \ uid_wrapper -y && \ yum clean all -y RUN ln -s /run/secrets/rhsm /etc/rhsm-host 3
- 1
yum
またはdnf
コマンドを実行する前に、/etc/rhsm-host
ディレクトリーとそのすべての内容を削除するコマンドを Dockerfile に含める必要があります。- 2
- Red Hat Package Browser を使用して、インストールされているパッケージの正しいリポジトリーを見つけます。
- 3
- イメージと他の Red Hat コンテナーイメージとの互換性を維持するために、
/etc/rhsm-host
のシンボリックリンクを復元する必要があります。
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 リポジトリー設定およびエンタイトルメントキーをビルドボリュームとして追加します。
strategy: dockerStrategy: from: kind: ImageStreamTag name: ubi9:latest volumes: - name: yum-repos-d mounts: - destinationPath: /etc/yum.repos.d source: type: ConfigMap configMap: name: yum-repos-d - name: etc-pki-entitlement mounts: - destinationPath: /etc/pki/entitlement source: type: Secret secret: secretName: etc-pki-entitlement
2.10.4.2. Red Hat Satellite サブスクリプションを使用した Docker ビルド
Docker ストラテジービルドは、Red Hat Satellite リポジトリーを使用してサブスクリプションコンテンツをインストールできます。
前提条件
- エンタイトルメントキーと Satellite リポジトリー設定がビルドボリュームとして追加しておく。
手順
次の例を使用して、Satellite を使用してコンテンツをインストールするための
Dockerfile
を作成します。FROM registry.redhat.io/ubi9/ubi:latest RUN rm -rf /etc/rhsm-host 1 RUN yum --enablerepo=codeready-builder-for-rhel-9-x86_64-rpms install \ 2 nss_wrapper \ uid_wrapper -y && \ yum clean all -y RUN ln -s /run/secrets/rhsm /etc/rhsm-host 3