10.5. SharedSecret オブジェクトを使用したビルドの実行
SharedSecret
オブジェクトを使用すると、ビルドでクラスターのエンタイトルメントキーにセキュアにアクセスできます。
SharedSecret
オブジェクトを使用すると、namespace 間でシークレットを共有および同期できます。
Shared Resource CSI Driver は、テクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
-
フィーチャーゲートを使用して
TechPreviewNoUpgrade
機能セットを有効にしている。詳細は、フィーチャーゲートを使用した機能の有効化 を参照してください。 次のアクションを実行するためのパーミッションがある。
- ビルド設定を作成し、ビルドを開始します。
-
oc get sharedsecrets
コマンドを入力し、空でないリストを取得して、使用可能なSharedSecret
CR インスタンスを見つけます。 -
namespace で使用可能な
builder
サービスアカウントが、指定されたSharedSecret
CR インスタンスの使用を許可されているかどうかを確認します。つまり、oc adm policy who-can use <identifier of specific SharedSecret>
を使用して、namespace のbuilder
サービスアカウントが一覧表示されているかどうかを確認できます。
このリストの最後の 2 つの前提条件のいずれも満たされない場合は、必要なロールベースアクセス制御 (RBAC) を自身で確立するか、誰かに依頼して確立します。これにより、SharedSecret
CR インスタンスを検出し、サービスアカウントを有効にして SharedSecret
CR インスタンスを使用できるようになります。
手順
oc apply
を使用して、クラスターのエンタイトルメントシークレットでSharedSecret
オブジェクトインスタンスを作成します。重要SharedSecret
オブジェクトを作成するには、クラスター管理者の権限が必要です。YAML
Role
オブジェクト定義を使用したoc apply -f
コマンドの例$ oc apply -f - <<EOF kind: SharedSecret apiVersion: sharedresource.openshift.io/v1alpha1 metadata: name: etc-pki-entitlement spec: secretRef: name: etc-pki-entitlement namespace: openshift-config-managed EOF
SharedSecret
オブジェクトにアクセスするための権限をbuilder
サービスアカウントに付与するロールを作成します。oc apply -f
コマンドの例$ oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: builder-etc-pki-entitlement namespace: build-namespace rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - etc-pki-entitlement verbs: - use EOF
次のコマンドを実行して、
builder
サービスアカウントにSharedSecret
オブジェクトにアクセスするための権限を付与するRoleBinding
オブジェクトを作成します。oc create rolebinding
コマンドの例$ oc create rolebinding builder-etc-pki-entitlement --role=builder-etc-pki-entitlement --serviceaccount=build-namespace:builder
CSI ボリュームマウントを使用して、エンタイトルメントシークレットを
BuildConfig
オブジェクトに追加します。YAML
BuildConfig
オブジェクト定義の例apiVersion: build.openshift.io/v1 kind: BuildConfig metadata: name: uid-wrapper-rhel9 namespace: build-namespace spec: runPolicy: Serial source: 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 strategy: type: Docker dockerStrategy: volumes: - mounts: - destinationPath: "/etc/pki/entitlement" name: etc-pki-entitlement source: csi: driver: csi.sharedresource.openshift.io readOnly: true 4 volumeAttributes: sharedSecret: etc-pki-entitlement 5 type: CSI
- 1
yum
またはdnf
コマンドを実行する前に、/etc/rhsm-host
ディレクトリーとそのすべての内容を削除するコマンドを Dockerfile に含める必要があります。- 2
- Red Hat Package Browser を使用して、インストールされているパッケージの正しいリポジトリーを見つけます。
- 3
- イメージと他の Red Hat コンテナーイメージとの互換性を維持するために、
/etc/rhsm-host
のシンボリックリンクを復元する必要があります。 - 4
- ビルドで共有リソースをマウントするには、
readOnly
をtrue
に設定する必要があります。 - 5
- ビルドに含める
SharedSecret
オブジェクトの名前を参照します。
BuildConfig
オブジェクトからビルドを開始し、oc
コマンドを使用してログを追跡します。$ oc start-build uid-wrapper-rhel9 -n build-namespace -F