17.2. ZTP 用のハブクラスターの準備

切断された環境で RHACM を使用するには、OpenShift Container Platform リリースイメージと必要な Operator イメージを含む Operator Lifecycle Manager (OLM) カタログをミラーリングするミラーレジストリーを作成します。OLM は Operator およびそれらの依存関係をクラスターで管理し、インストールし、アップグレードします。切断されたミラーホストを使用して、ベアメタルホストのプロビジョニングに使用される RHCOS ISO および RootFS ディスクイメージを提供することもできます。

17.2.1. Telco RAN 4.12 検証済みソリューションソフトウェアバージョン

Red Hat Telco Radio Access Network (RAN) バージョン 4.12 ソリューションは、次の Red Hat ソフトウェア製品を使用して検証されています。

表17.2 Telco RAN 4.12 検証済みソリューションソフトウェア

製品ソフトウェアバージョン

Hub クラスターの OpenShift Container Platform のバージョン

4.12

GitOps ZTP プラグイン

4.10、4.11 または 4.12

Red Hat Advanced Cluster Management (RHACM)

2.6、2.7

Red Hat OpenShift GitOps

1.9、1.10

Topology Aware Lifecycle Manager (TALM)

4.10、4.11 または 4.12

17.2.2. 切断された環境での GitOps ZTP のインストール

切断された環境のハブクラスターで Red Hat Advanced Cluster Management (RHACM)、Red Hat OpenShift GitOps、Topology Aware Lifecycle Manager (TALM) を使用して、複数のマネージドクラスターのデプロイを管理します。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。
  • クラスターで使用するために、切断されたミラーレジストリーを設定しました。

    注記

    作成する非接続ミラーレジストリーには、ハブクラスターで実行されている TALM のバージョンと一致する TALM バックアップおよび事前キャッシュイメージのバージョンが含まれている必要があります。スポーククラスターは、切断されたミラーレジストリーでこれらのイメージを解決できる必要があります。

手順

17.2.3. RHCOS ISO および RootFS イメージの非接続ミラーホストへの追加

Red Hat Advanced Cluster Management (RHACM) を使用して非接続環境にクラスターのインストールを開始する前に、最初に使用する Red Hat Enterprise Linux CoreOS (RHCOS) イメージをホストする必要があります。切断されたミラーを使用して RHCOS イメージをホストします。

前提条件

  • ネットワーク上で RHCOS イメージリソースをホストするように HTTP サーバーをデプロイして設定します。お使いのコンピューターから HTTP サーバーにアクセスでき、作成するマシンからもアクセスできる必要があります。
重要

RHCOS イメージは OpenShift Container Platform の各リリースごとに変更されない可能性があります。インストールするバージョン以下の最新バージョンのイメージをダウンロードする必要があります。利用可能な場合は、OpenShift Container Platform バージョンに一致するイメージのバージョンを使用します。ホストに RHCOS をインストールするには、ISO および RootFS イメージが必要です。RHCOS QCOW2 イメージは、このインストールタイプではサポートされません。

手順

  1. ミラーホストにログインします。
  2. mirror.openshift.com から RHCOS ISO イメージおよび RootFS イメージを取得します。以下は例になります。

    1. 必要なイメージ名と OpenShift Container Platform のバージョンを環境変数としてエクスポートします。

      $ export ISO_IMAGE_NAME=<iso_image_name> 1
      $ export ROOTFS_IMAGE_NAME=<rootfs_image_name> 1
      $ export OCP_VERSION=<ocp_version> 1
      1
      ISO イメージ名 (例: rhcos-4.12.1-x86_64-live.x86_64.iso)
      1
      RootFS イメージ名 (例: rhcos-4.12.1-x86_64-live-rootfs.x86_64.img)
      1
      OpenShift Container Platform バージョン (例: 4.12.1)
    2. 必要なイメージをダウンロードします。

      $ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}
      $ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}

検証手順

  • イメージが正常にダウンロードされ、非接続ミラーホストで提供されることを確認します。以下に例を示します。

    $ wget http://$(hostname)/${ISO_IMAGE_NAME}

    出力例

    Saving to: rhcos-4.12.1-x86_64-live.x86_64.iso
    rhcos-4.12.1-x86_64-live.x86_64.iso-  11%[====>    ]  10.01M  4.71MB/s

17.2.4. 支援サービスの有効化

Red Hat Advanced Cluster Management (RHACM) は、アシストサービスを使用して OpenShift Container Platform クラスターをデプロイします。Red Hat Advanced Cluster Management (RHACM) で MultiClusterHub Operator を有効にすると、支援サービスが自動的にデプロイされます。その後、すべての napespace を監視し、ミラーレジストリー HTTP サーバーでホストされている ISO および RootFS イメージへの参照を使用して、AgentServiceConfig カスタムリソース (CR) を更新するように Provisioning リソースを設定する必要があります。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin 権限を持つユーザーとしてハブクラスターにログインしている。
  • RHACM で MultiClusterHub が有効になっている。

手順

  1. Provisioning リソースを有効にして、すべての namespace を監視し、非接続環境のミラーを設定します。詳細は、Central Infrastructure Management サービスの有効化 を参照してください。
  2. 以下のコマンドを実行して、AgentServiceConfig CR を更新します。

    $ oc edit AgentServiceConfig
  3. CR の items.spec.osImages フィールドに次のエントリーを追加します。

    - cpuArchitecture: x86_64
        openshiftVersion: "4.12"
        rootFSUrl: https://<host>/<path>/rhcos-live-rootfs.x86_64.img
        url: https://<mirror-registry>/<path>/rhcos-live.x86_64.iso

    ここでは、以下のようになります。

    <host>
    ターゲットミラーレジストリー HTTP サーバーの完全修飾ドメイン名 (FQDN) です。
    <path>
    ターゲットミラーレジストリー上のイメージへのパスです。

    エディターを保存して終了し、変更を適用します。

17.2.5. 切断されたミラーレジストリーを使用するためのハブクラスターの設定

切断された環境で切断されたミラーレジストリーを使用するようにハブクラスターを設定できます。

前提条件

  • Red Hat Advanced Cluster Management (RHACM) 2.7 がインストールされた切断されたハブクラスターのインストールがある。
  • HTTP サーバーで rootfs および iso イメージをホストしている。OpenShift Container Platform イメージリポジトリーのミラーリング に関するガイダンスについては、関連情報 セクションを参照してください。
警告

HTTP サーバーに対して TLS を有効にする場合、ルート証明書がクライアントによって信頼された機関によって署名されていることを確認し、OpenShift Container Platform ハブおよびマネージドクラスターと HTTP サーバー間の信頼された証明書チェーンを検証する必要があります。信頼されていない証明書で設定されたサーバーを使用すると、イメージがイメージ作成サービスにダウンロードされなくなります。信頼されていない HTTPS サーバーの使用はサポートされていません。

手順

  1. ミラーレジストリー設定を含む ConfigMap を作成します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: assisted-installer-mirror-config
      namespace: multicluster-engine 1
      labels:
        app: assisted-service
    data:
      ca-bundle.crt: <certificate> 2
      registries.conf: | 3
        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
    
        [[registry]]
          location = <mirror_registry_url> 4
          insecure = false
          mirror-by-digest-only = true
    1
    ConfigMap namespace は multicluster-engine に設定する必要があります。
    2
    ミラーレジストリーの作成時に使用されるミラーレジストリーの証明書。
    3
    ミラーレジストリーの設定ファイル。ミラーレジストリー設定は、検出イメージの /etc/containers/registries.conf にミラー情報を追加します。ミラー情報は、インストールプログラムに渡される際、install-config.yaml ファイルの imageContentSources セクションに保存されます。HUB クラスターで実行されている Assisted Service Pod は、設定されたミラーレジストリーからコンテナーイメージをフェッチします。
    4
    ミラーレジストリーの URL。ミラーレジストリーを設定する場合は 、oc adm release Mirror コマンドを実行して、imageContentSources セクションの URL を使用する必要があります。詳細は、OpenShift Container Platform イメージリポジトリーのミラーリング セクションを参照してください。

    これにより、以下のように AgentServiceConfig カスタムリソースの mirrorRegistryRef が更新されます。

    出力例

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      name: agent
      namespace: multicluster-engine 1
    spec:
      databaseStorage:
        volumeName: <db_pv_name>
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <db_storage_size>
      filesystemStorage:
        volumeName: <fs_pv_name>
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <fs_storage_size>
      mirrorRegistryRef:
        name: assisted-installer-mirror-config 2
      osImages:
        - openshiftVersion: <ocp_version>
          url: <iso_url> 3

    1
    ConfigMap namespace と一致するように、AgentServiceConfig namespace を multicluster-engine に設定します。
    2
    関連する ConfigMap CR で指定された定義と一致するように、mirrorRegistryRef.name を設定します。
    3
    httpd サーバーでホストされる ISO の URL を設定します。
重要

クラスターのインストール時には、有効な NTP サーバーが必要です。適切な NTP サーバーが使用可能であり、切断されたネットワークを介してインストール済みクラスターからアクセスできることを確認してください。

17.2.6. 非認証レジストリーを使用するためのハブクラスターの設定

非認証レジストリーを使用するようにハブクラスターを設定できます。非認証レジストリーは、イメージへのアクセスとダウンロードに認証を必要としません。

前提条件

  • ハブクラスターをインストールして設定し、ハブクラスターに Red Hat Advanced Cluster Management (RHACM) をインストールしている。
  • OpenShift Container Platform CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。
  • ハブクラスターで使用するために非認証レジストリーを設定している。

手順

  1. 次のコマンドを実行して、AgentServiceConfig カスタムリソース (CR) を更新します。

    $ oc edit AgentServiceConfig agent
  2. CR に unauthenticatedRegistries フィールドを追加します。

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      name: agent
    spec:
      unauthenticatedRegistries:
      - example.registry.com
      - example.registry2.com
      ...

    非認証レジストリーは、AgentServiceConfig リソースの spec.unauthenticatedRegistries の下に一覧表示されます。このリストにあるレジストリーのエントリーは、スポーククラスターのインストールに使用されるプルシークレットに含める必要はありません。assisted-service は、インストールに使用されるすべてのイメージレジストリーの認証情報がプルシークレットに含まれていることを確認して、プルシークレットを検証します。

注記

ミラーレジストリーは自動的に無視リストに追加されるため、spec.unauthenticatedRegistries の下に追加する必要はありません。ConfigMapPUBLIC_CONTAINER_REGISTRIES 環境変数を指定すると、デフォルト値が指定した値でオーバーライドされます。PUBLIC_CONTAINER_REGISTRIES のデフォルトは quay.io および registry.svc.ci.openshift.org です。

検証

次のコマンドを実行して、ハブクラスターから新しく追加されたレジストリーにアクセスできることを確認します。

  1. ハブクラスターへのデバッグシェルプロンプトを開きます。

    $ oc debug node/<node_name>
  2. 次のコマンドを実行して、非認証レジストリーへのアクセスをテストします。

    sh-4.4# podman login -u kubeadmin -p $(oc whoami -t) <unauthenticated_registry>

    ここでは、以下のようになります。

    <unauthenticated_registry>
    unauthenticated-image-registry.openshift-image-registry.svc:5000 などの新しいレジストリーです。

    出力例

    Login Succeeded!

17.2.7. ArgoCD を使用したハブクラスターの設定

GitOps ゼロタッチプロビジョニング (ZTP) を使用して、サイトごとに必要なインストールおよびポリシーカスタムリソース (CR) を生成する一連の ArgoCD アプリケーションを使用して、ハブクラスターを設定できます。

注記

Red Hat Advanced Cluster Management (RHACM) は SiteConfig CR を使用して、ArgoCD の Day 1 マネージドクラスターインストール CR を生成します。各 ArgoCD アプリケーションは、最大 300 個の SiteConfig CR を管理できます。

前提条件

  • Red Hat Advanced Cluster Management (RHACM) と Red Hat OpenShift GitOps がインストールされた OpenShift Container Platform ハブクラスターがあります。
  • 「GitOps ZTP サイト設定リポジトリーの準備」セクションで説明されているように、ZTP GitOps プラグインコンテナーから参照デプロイメントを抽出しました。参照デプロイメントを抽出すると、次の手順で参照される out/argocd/deployment ディレクトリーが作成されます。

手順

  1. ArgoCD パイプライン設定を準備します。

    1. example ディレクトリーと同様にディレクトリー構造で Git リポジトリーを作成します。詳細は、「GitOps ZTP サイト設定リポジトリーの準備」を参照してください。
    2. ArgoCD UI を使用して、リポジトリーへのアクセスを設定します。Settings で以下を設定します。

      • リポジトリー: 接続情報を追加します。URL は .git などで終わって いる必要があります。https://repo.example.com/repo.git とクレデンシャルを指定します。
      • certificates: 必要に応じて、リポジトリーのパブリック証明書を追加します。
    3. 2 つの ArgoCD アプリケーション、out/argocd/deployment/clusters-app.yamlout/argocd/deployment/policies-app.yaml を、Git リポジトリーに基づいて修正します。

      • Git リポジトリーを参照するように URL を更新します。URL は .git で終わります (例: https://repo.example.com/repo.git)。
      • targetRevision は、監視する Git リポジトリーブランチを示します。
      • path は、それぞれ SiteConfig CR および PolicyGenTemplate CR へのパスを指定します。
  2. ZTP GitOps プラグインをインストールするには、以前に out/argocd/deployment/ ディレクトリーに抽出されたパッチファイルを使用して、ハブクラスター内の ArgoCD インスタンスにパッチを適用する必要があります。以下のコマンドを実行します。

    $ oc patch argocd openshift-gitops \
    -n openshift-gitops --type=merge \
    --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
    注記

    切断された環境では、ローカルレジストリーにミラーリングされた ztp-site-generate イメージで out/argocd/deployment/argocd-openshift-gitops-patch.json ファイルを修正してください。以下のコマンドを実行します。

    $ oc patch argocd openshift-gitops -n openshift-gitops --type='json' \
    -p='[{"op": "replace", "path": "/spec/repo/initContainers/0/image", \
    "value": "<local_registry>/<ztp_site_generate_image_ref>"}]'

    ここでは、以下のようになります。

    <local_registry>
    my.local.registry:5000 など、接続されていないレジストリーの URL です。
    <ztp-site-generate-image-ref>
    ミラーリングされた ztp-site-generate イメージへのパスです(例: openshift4-ztp-site-generate:custom )。
  3. RHACM 2.7 以降では、マルチクラスターエンジンはデフォルトで cluster-proxy-addon 機能を有効にします。この機能を無効にするには、次のパッチを適用して、このアドオンに関連するハブクラスターとマネージドクラスター Pod を無効にして削除します。

    $ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.json
  4. 以下のコマンドを使用して、パイプライン設定をハブクラスターに適用します。

    $ oc apply -k out/argocd/deployment

17.2.8. GitOps ZTP サイト設定リポジトリーの準備

ZTP GitOps パイプラインを使用する前に、サイト設定データをホストする Git リポジトリーを準備する必要があります。

前提条件

  • 必要なインストールおよびポリシーのカスタムリソース (CR) を生成するためのハブクラスター GitOps アプリケーションを設定しました。
  • ゼロタッチプロビジョニング (ZTP) を使用してマネージドクラスターをデプロイしました。

手順

  1. SiteConfig CR と PolicyGenTemplate CR の個別のパスを持つディレクトリー構造を作成します。
  2. 以下のコマンドを使用して ztp-site-generate コンテナーイメージから argocd ディレクトリーをエクスポートします。

    $ podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12
    $ mkdir -p ./out
    $ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 extract /home/ztp --tar | tar x -C ./out
  3. out ディレクトリーに以下のサブディレクトリーが含まれていることを確認します。

    • out/extra-manifest には、SiteConfig が追加の manifest configMap の生成に使用するソース CR ファイルが含まれます。
    • out/source-crs には、PolicyGenTemplate が Red Hat Advanced Cluster Management (RHACM) ポリシーを生成するために使用するソース CR ファイルが含まれています。
    • out/argocd/deployment には、この手順の次のステップで使用するハブクラスターに適用するパッチおよび YAML ファイルが含まれます。
    • out/argocd/example には、推奨の設定を表す SiteConfig ファイルおよび PolicyGenTemplate ファイルのサンプルが含まれています。

out/argocd/example のディレクトリー構造は、Git リポジトリーの構造およびコンテンツの参照として機能します。この例には、単一ノード、3 ノード、標準クラスターの SiteConfig および PolicyGenTemplate の参照 CR が含まれます。使用されていないクラスタータイプの参照を削除します。以下の例では、単一ノードクラスターのネットワークの CR のセットについて説明しています。

example
├── policygentemplates
│   ├── common-ranGen.yaml
│   ├── example-sno-site.yaml
│   ├── group-du-sno-ranGen.yaml
│   ├── group-du-sno-validator-ranGen.yaml
│   ├── kustomization.yaml
│   └── ns.yaml
└── siteconfig
    ├── example-sno.yaml
    ├── KlusterletAddonConfigOverride.yaml
    └── kustomization.yaml

SiteConfig および PolicyGenTemplate CR を個別のディレクトリーで保持します。SiteConfig ディレクトリーおよび PolicyGenTemplate ディレクトリーには、そのディレクトリー内のファイルを明示的に含める kustomization.yaml ファイルが含まれている必要があります。

このディレクトリー構造と kustomization.yaml ファイルはコミットされ、Git リポジトリーにプッシュされる必要があります。Git への最初のプッシュには、kustomization.yaml ファイルが含まれている必要があります。SiteConfig (example-sno.yaml) および PolicyGenTemplate (common-ranGen.yamlgroup-du-sno*.yaml、および example-sno-site.yaml) ファイルは省略され、後でサイトをデプロイする際にプッシュできます。

KlusterletAddonConfigOverride.yaml ファイルは、その CR を参照する 1 つ以上の SiteConfig CR がコミットされ、Git にプッシュされている場合にのみ必要です。これがどのように使用されるかについては、example-sno.yaml を参照してください。