16.2. シングルノード OpenShift クラスターのイメージベースのインストールに向けた準備


シングルノード OpenShift クラスターのイメージベースのインストールを準備するには、次のタスクを完了する必要があります。

  • Lifecycle Agent を使用してシードイメージを作成します。
  • すべてのソフトウェアコンポーネントが必要なバージョンを満たしていることを確認します。詳細は、「イメージベースのインストールとデプロイのソフトウェアに関する前提条件」を参照してください。

16.2.1. Lifecycle Agent のインストール

Lifecycle Agent を使用して、シードクラスターからシードイメージを生成します。Lifecycle Agent は、OpenShift CLI (oc) または Web コンソールを使用してインストールできます。

16.2.1.1. CLI を使用した Lifecycle Agent のインストール

OpenShift CLI (oc) を使用して Lifecycle Agent をインストールできます。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. Lifecycle Agent 用の Namespace オブジェクトの YAML ファイルを作成します。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-lifecycle-agent
      annotations:
        workload.openshift.io/allowed: management
    1. 以下のコマンドを実行して Namespace CR を作成します。

      $ oc create -f <namespace_filename>.yaml
  2. Lifecycle Agent 用の OperatorGroup オブジェクトの YAML ファイルを作成します。

    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-lifecycle-agent
      namespace: openshift-lifecycle-agent
    spec:
      targetNamespaces:
      - openshift-lifecycle-agent
    1. 以下のコマンドを実行して OperatorGroup CR を作成します。

      $ oc create -f <operatorgroup_filename>.yaml
  3. Lifecycle Agent 用の Subscription CR を作成します。

    apiVersion: operators.coreos.com/v1
    kind: Subscription
    metadata:
      name: openshift-lifecycle-agent-subscription
      namespace: openshift-lifecycle-agent
    spec:
      channel: "stable"
      name: lifecycle-agent
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    1. 以下のコマンドを実行して Subscription CR を作成します。

      $ oc create -f <subscription_filename>.yaml

検証

  1. インストールが成功したことを確認するには、次のコマンドを実行して CSV リソースを調べます。

    $ oc get csv -n openshift-lifecycle-agent

    出力例

    NAME                              DISPLAY                     VERSION               REPLACES                           PHASE
    lifecycle-agent.v4.17.0           Openshift Lifecycle Agent   4.17.0                Succeeded

  2. 次のコマンドを実行して、Lifecycle Agent が起動して実行されていることを確認します。

    $ oc get deploy -n openshift-lifecycle-agent

    出力例

    NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
    lifecycle-agent-controller-manager   1/1     1            1           14s

16.2.1.2. Web コンソールを使用した Lifecycle Agent のインストール

OpenShift Container Platform Web コンソールを使用して、Lifecycle Agent をインストールできます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. OpenShift Container Platform Web コンソールで、Operators OperatorHub ページに移動します。
  2. 利用可能な Operator のリストから Lifecycle Agent を検索し、Install をクリックします。
  3. Install Operator ページの A specific namespace on the cluster の下で openshift-lifecycle-agent を選択します。
  4. Install をクリックします。

検証

  1. インストールが正常に行われたことを確認するには、以下を実行します。

    1. Operators Installed Operators をクリックします。
    2. Lifecycle Agent が、InstallSucceeded ステータスopenshift-lifecycle-agent プロジェクトにリストされていることを確認します。

      注記

      インストール時に、Operator は Failed ステータスを表示する可能性があります。インストールが後に InstallSucceeded メッセージを出して正常に実行される場合は、Failed メッセージを無視できます。

Operator が正常にインストールされていない場合、以下を実行します。

  1. Operators Installed Operators をクリックし、Operator Subscriptions タブおよび Install Plans タブの ステータス で障害やエラーがないか検査します。
  2. Workloads Pods をクリックし、openshift-lifecycle-agent プロジェクト内の Pod のログを確認します。

16.2.2. ostree stateroot 間の共有コンテナーパーティションの設定

重要

この手順はインストール時に完了する必要があります。

シードクラスターに MachineConfig を適用して別のパーティションを作成し、プリインストールプロセス中に使用する 2 つの ostree stateroot 間で /var/lib/containers パーティションを共有します。

手順

  • MachineConfig を適用して個別のパーティションを作成します。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: master
      name: 98-var-lib-containers-partitioned
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          disks:
            - device: /dev/disk/by-path/pci-<root_disk> 1
              partitions:
                - label: var-lib-containers
                  startMiB: <start_of_partition> 2
                  sizeMiB: <partition_size> 3
          filesystems:
            - device: /dev/disk/by-partlabel/var-lib-containers
              format: xfs
              mountOptions:
                - defaults
                - prjquota
              path: /var/lib/containers
              wipeFilesystem: true
        systemd:
          units:
            - contents: |-
                # Generated by Butane
                [Unit]
                Before=local-fs.target
                Requires=systemd-fsck@dev-disk-by\x2dpartlabel-var\x2dlib\x2dcontainers.service
                After=systemd-fsck@dev-disk-by\x2dpartlabel-var\x2dlib\x2dcontainers.service
    
                [Mount]
                Where=/var/lib/containers
                What=/dev/disk/by-partlabel/var-lib-containers
                Type=xfs
                Options=defaults,prjquota
    
                [Install]
                RequiredBy=local-fs.target
              enabled: true
              name: var-lib-containers.mount
    1
    ルートディスクを指定します。
    2
    パーティションの開始を MiB 単位で指定します。値が小さすぎるとインストールは失敗します。
    3
    事前キャッシュされたイメージに十分なディスク領域を確保するために、パーティションの最小サイズを 500 GB に指定します。値が小さすぎると、インストール後のデプロイメントが失敗します。

16.2.3. シードイメージの設定

シードイメージは、ベアメタルホストと同じハードウェアを持ち、類似するターゲットクラスター設定を持つシングルノード OpenShift クラスターから作成できます。ただし、シードクラスターから生成されるシードイメージに、クラスター固有の設定を含めることはできません。

次の表は、シードイメージに含めるべき、および含めるべきでないコンポーネント、リソース、設定を示しています。

表16.2 シードイメージの設定
Cluster configurationシードイメージに含める

パフォーマンスプロファイル

はい

ターゲットクラスターの MachineConfig リソース

はい

IP バージョン [1]

はい

Lifecycle Agent と OADP Operator を含む Day 2 Operator のセット

はい

切断されたレジストリー設定 [2]

はい

有効なプロキシー設定 [3]

はい

FIPS 設定

はい

ターゲットクラスターのサイズに一致する、コンテナーストレージ用のプライマリーディスク上の専用パーティション

はい

ローカルボリューム

  • LSO の LocalVolume で使用される StorageClass
  • LSO の LocalVolume
  • LVMS の LVMCluster CR

いいえ

  1. このリリースではデュアルスタックネットワークはサポートされていません。
  2. シードクラスターが非接続環境にインストールされている場合は、ターゲットクラスターも非接続環境にインストールする必要があります。
  3. シードクラスターとターゲットクラスターのプロキシー設定が一致する必要はありません。

16.2.3.1. RAN DU プロファイルを使用したシードイメージの設定

次の表は、RAN DU プロファイルを使用する際にシードイメージに含めるべき、および含めるべきでないコンポーネント、リソース、設定を示しています。

表16.3 RAN DU プロファイルを使用したシードイメージの設定
リソースシードイメージに含める

Day 0 インストールの一部として適用されるすべての追加マニフェスト

はい

すべての Day 2 Operator サブスクリプション

はい

DisableOLMPprof.yaml

はい

TunedPerformancePatch.yaml

はい

PerformanceProfile.yaml

はい

SriovOperatorConfig.yaml

はい

DisableSnoNetworkDiag.yaml

はい

StorageClass.yaml

☓ (StorageLV.yaml で使用されている場合)

StorageLV.yaml

いいえ

StorageLVMCluster.yaml

いいえ

次のリソースと設定のリストは、追加のマニフェストとして、または RHACM ポリシーを使用して適用できます。

  • ClusterLogForwarder.yaml
  • ReduceMonitoringFootprint.yaml
  • SriovFecClusterConfig.yaml
  • PtpOperatorConfigForEvent.yaml
  • DefaultCatsrc.yaml
  • PtpConfig.yaml
  • SriovNetwork.yaml
重要

GitOps ZTP を使用している場合は、RHACM ポリシーを使用してこれらのリソースを有効にし、クラスターのライフサイクル全体に設定の変更を適用できるようにします。

16.2.4. Lifecycle Agent を使用したシードイメージの生成

Lifecycle Agent を使用して、マネージドクラスターからシードイメージを生成します。Operator は、必要なシステム設定を確認し、シードイメージを生成する前に必要なシステムクリーンアップを実行して、イメージ生成を開始します。シードイメージの生成には、次のタスクが含まれます。

  • クラスター Operator の停止
  • シードイメージ設定の準備
  • シードイメージの生成および SeedGenerator CR で指定されたイメージリポジトリーへのシードイメージのプッシュ
  • クラスター Operator の復元
  • 期限切れのシードクラスター証明書
  • シードクラスター用の新しい証明書の生成
  • シードクラスター上の SeedGenerator CR の復元と更新

前提条件

  • RHACM と multicluster engine for Kubernetes Operator はシードクラスターにインストールされていません。
  • シードクラスターに共有コンテナーディレクトリーを設定した。
  • シードクラスターに OADP Operator と Lifecycle Agent の最小バージョンをインストールした。
  • シードクラスターに永続ボリュームが設定されていないことを確認する。
  • Local Storage Operator が使用されている場合は、シードクラスターに LocalVolume CR が存在しないことを確認する。
  • LVM ストレージが使用されている場合は、シードクラスターに LVMCluster CR が存在しないことを確認する。
  • OADP が使用されている場合は、シードクラスターに DataProtectionApplication CR が存在しないことを確認する。

手順

  1. マネージドクラスターをハブからデタッチして、シードイメージに含まれてはならない RHACM 固有のリソースをシードクラスターから削除します。

    1. 次のコマンドを実行してシードクラスターを手動でデタッチします。

      $ oc delete managedcluster sno-worker-example
      1. マネージドクラスターが削除されるまで待機します。クラスターが削除されたら、適切な SeedGenerator CR を作成します。Lifecycle Agent は RHACM アーティファクトをクリーンアップします。
    2. GitOps ZTP を使用している場合は、シードクラスターの SiteConfig CR を kustomization.yaml から削除してクラスターをデタッチします。

      1. 複数の SiteConfig CR を参照する kustomization.yaml ファイルがある場合は、シードクラスターの SiteConfig CR を kustomization.yaml から削除します。

        apiVersion: kustomize.config.k8s.io/v1beta1
        kind: Kustomization
        
        generators:
        #- example-seed-sno1.yaml
        - example-target-sno2.yaml
        - example-target-sno3.yaml
      2. 1 つの SiteConfig CR を参照する kustomization.yaml がある場合は、シードクラスターの SiteConfig CR を kustomization.yaml から削除し、generators: {} 行を追加します。

        apiVersion: kustomize.config.k8s.io/v1beta1
        kind: Kustomization
        
        generators: {}
      3. Git リポジトリーで kustomization.yaml の変更をコミットし、変更をリポジトリーにプッシュします。

        ArgoCD パイプラインは変更を検出し、マネージドクラスターを削除します。

  2. シードイメージをレジストリーにプッシュできるように、Secret オブジェクトを作成します。

    1. 次のコマンドを実行して認証ファイルを作成します。

      $ MY_USER=myuserid
      $ AUTHFILE=/tmp/my-auth.json
      $ podman login --authfile ${AUTHFILE} -u ${MY_USER} quay.io/${MY_USER}
      $ base64 -w 0 ${AUTHFILE} ; echo
    2. 出力を、openshift-lifecycle-agent namespace の seedgen という名前の Secret YAML ファイルの seedAuth フィールドにコピーします。

      apiVersion: v1
      kind: Secret
      metadata:
        name: seedgen 1
        namespace: openshift-lifecycle-agent
      type: Opaque
      data:
        seedAuth: <encoded_AUTHFILE> 2
      1
      Secret リソースには、name: seedgen および namespace: openshift-lifecycle-agent フィールドが必要です。
      2
      生成されたシードイメージをプッシュするためのレジストリーへの書き込みアクセス用 base64 エンコードされた authfile を指定します。
    3. 以下のコマンドを実行して Secret を適用します。

      $ oc apply -f secretseedgenerator.yaml
  3. SeedGenerator CR を作成します。

    apiVersion: lca.openshift.io/v1
    kind: SeedGenerator
    metadata:
      name: seedimage 1
    spec:
      seedImage: <seed_container_image> 2
    1
    SeedGenerator CR の名前は seedimage にする必要があります。
    2
    コンテナーイメージの URL を指定します (例: quay.io/example/seed-container-image:<tag>)。<seed_cluster_name>:<ocp_version> 形式を使用することを推奨します。
  4. 次のコマンドを実行してシードイメージを生成します。

    $ oc apply -f seedgenerator.yaml
    重要

    Lifecycle Agent がシードイメージを生成している間、クラスターが再起動し、API 機能が失われます。SeedGenerator CR を適用すると、kubelet と CRI-O の操作が停止し、イメージ生成が開始されます。

より多くのシードイメージを生成する場合は、シードイメージを生成するバージョンで新しいシードクラスターをプロビジョニングする必要があります。

検証

  • クラスターが回復して使用可能になったら、次のコマンドを実行して SeedGenerator CR のステータスを確認できます。

    $ oc get seedgenerator -o yaml

    出力例

    status:
      conditions:
      - lastTransitionTime: "2024-02-13T21:24:26Z"
        message: Seed Generation completed
        observedGeneration: 1
        reason: Completed
        status: "False"
        type: SeedGenInProgress
      - lastTransitionTime: "2024-02-13T21:24:26Z"
        message: Seed Generation completed
        observedGeneration: 1
        reason: Completed
        status: "True"
        type: SeedGenCompleted 1
      observedGeneration: 1

    1
    シードイメージの生成が完了しました。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.