19.13. 単一のマネージドクラスターをインストールするためのカスタムリソースの作成


この手順では、単一のマネージドクラスターを手動で作成してデプロイする方法を説明します。複数のクラスター (数百など) を作成する場合は、複数のマネージドクラスターの ZTP カスタムリソースの作成で説明されている SiteConfig メソッドを使用します。

前提条件

  • Assisted Installer サービスを有効にします。
  • ネットワーク接続を確認します。

    • ハブ内のコンテナーは、ターゲットのベアメタルホストの Baseboard Management Controller (BMC) アドレスに到達できる必要があります。
    • マネージドクラスターは、ハブの API hostname および *.app ホスト名を解決し、到達できる必要があります。ハブの API および *.app ホスト名の例:

      console-openshift-console.apps.hub-cluster.internal.domain.com
      api.hub-cluster.internal.domain.com
    • ハブは、マネージドクラスターの API および *.app ホスト名を解決して到達できる必要があります。以下は、マネージドクラスターの API および *.app ホスト名の例です。

      console-openshift-console.apps.sno-managed-cluster-1.internal.domain.com
      api.sno-managed-cluster-1.internal.domain.com
    • ターゲットのベアメタルホストから IP 到達可能な DNS サーバー。
  • 以下のハードウェアの最小要件を備えた、マネージドクラスターのターゲットベアメタルホスト:

    • 4 CPU または 8 vCPU
    • 32 GiB RAM
    • ルートファイルシステムの 120 GiB ディスク
  • 非接続環境で作業する場合は、リリースイメージをミラーリングする必要があります。以下のコマンドを使用して、リリースイメージをミラーリングします。

    oc adm release mirror -a <pull_secret.json>
    --from=quay.io/openshift-release-dev/ocp-release:{{ mirror_version_spoke_release }}
    --to={{ provisioner_cluster_registry }}/ocp4 --to-release-image={{
    provisioner_cluster_registry }}/ocp4:{{ mirror_version_spoke_release }}
  • スポーククラスター ISO を生成するために使用される ISO および rootfs を HTTP サーバーにミラーリングし、そこからイメージをプルできるように設定を設定している。

    イメージは、ClusterImageSet のバージョンと一致する必要があります。4.9.0 バージョンをデプロイするには、rootfs および ISO を 4.9.0 に設定する必要があります。

手順

  1. デプロイが必要な特定のクラスターバージョンごとに ClusterImageSet を作成します。ClusterImageSet のフォーマットは以下のとおりです。

    apiVersion: hive.openshift.io/v1
    kind: ClusterImageSet
    metadata:
      name: openshift-4.9.0-rc.0 1
    spec:
       releaseImage: quay.io/openshift-release-dev/ocp-release:4.9.0-x86_64 2
    1
    デプロイする記述バージョン。
    2
    デプロイする特定のリリースイメージを指します。
  2. マネージドクラスターの namespace 定義を作成します。

    apiVersion: v1
    kind: Namespace
    metadata:
         name: <cluster_name> 1
         labels:
            name: <cluster_name> 2
    1 2
    プロビジョニングするマネージドクラスターの名前。
  3. BMC Secret カスタムリソースを作成します。

    apiVersion: v1
    data:
      password: <bmc_password> 1
      username: <bmc_username> 2
    kind: Secret
    metadata:
      name: <cluster_name>-bmc-secret
      namespace: <cluster_name>
    type: Opaque
    1
    ターゲットのベアメタルホストへのパスワード。base-64 でエンコードされている必要があります。
    2
    ターゲットのベアメタルホストへのユーザー名。base-64 でエンコードされている必要があります。
  4. Image Pull Secret カスタムリソースを作成します。

    apiVersion: v1
    data:
      .dockerconfigjson: <pull_secret> 1
    kind: Secret
    metadata:
      name: assisted-deployment-pull-secret
      namespace: <cluster_name>
    type: kubernetes.io/dockerconfigjson
    1
    OpenShift Container Platform プルシークレット。base-64 でエンコードされている必要があります。
  5. AgentClusterInstall カスタムリソースを作成します。

    apiVersion: extensions.hive.openshift.io/v1beta1
    kind: AgentClusterInstall
    metadata:
      # Only include the annotation if using OVN, otherwise omit the annotation
      annotations:
        agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}'
      name: <cluster_name>
      namespace: <cluster_name>
    spec:
      clusterDeploymentRef:
        name: <cluster_name>
      imageSetRef:
        name: <cluster_image_set> 1
      networking:
        clusterNetwork:
        - cidr: <cluster_network_cidr> 2
          hostPrefix: 23
        machineNetwork:
        - cidr: <machine_network_cidr> 3
        serviceNetwork:
        - <service_network_cidr> 4
      provisionRequirements:
        controlPlaneAgents: 1
        workerAgents: 0
      sshPublicKey: <public_key> 5
    1
    ベアメタルホストに OpenShift Container Platform をインストールするために使用される ClusterImageSet カスタムリソースの名前。
    2
    クラスターノード間の通信に使用される CIDR 表記の IPv4 または IPv6 アドレスのブロック。
    3
    ターゲットのベアメタルホストの外部通信に使用される CIDR 表記の IPv4 または IPv6 アドレスのブロック。DU 単一ノードクラスターをプロビジョニングするときに API および Ingress VIP アドレスを決定するためにも使用されます。
    4
    クラスターサービスの内部通信に使用される CIDR 表記の IPv4 または IPv6 アドレスのブロック。
    5
    プレーンテキストとして入力されました。インストールが完了したら、公開鍵を使用してノードに SSH で接続できます。
    注記

    この時点で、マネージドクラスターの静的 IP を設定する場合は、マネージドクラスターの静的 IP アドレスを設定する方法については、本書の手順を参照してください。

  6. ClusterDeployment カスタムリソースを作成します。

    apiVersion: hive.openshift.io/v1
    kind: ClusterDeployment
    metadata:
      name: <cluster_name>
      namespace: <cluster_name>
    spec:
      baseDomain: <base_domain> 1
      clusterInstallRef:
        group: extensions.hive.openshift.io
        kind: AgentClusterInstall
        name: <cluster_name>
        version: v1beta1
      clusterName: <cluster_name>
      platform:
        agentBareMetal:
          agentSelector:
            matchLabels:
              cluster-name: <cluster_name>
      pullSecretRef:
        name: assisted-deployment-pull-secret
    1
    マネージドクラスターのベースドメイン。
  7. KlusterletAddonConfig カスタムリソースを作成します。

    apiVersion: agent.open-cluster-management.io/v1
    kind: KlusterletAddonConfig
    metadata:
      name: <cluster_name>
      namespace: <cluster_name>
    spec:
      clusterName: <cluster_name>
      clusterNamespace: <cluster_name>
      clusterLabels:
        cloud: auto-detect
        vendor: auto-detect
      applicationManager:
        enabled: true
      certPolicyController:
        enabled: false
      iamPolicyController:
        enabled: false
      policyController:
        enabled: true
      searchCollector:
        enabled: false 1
    1
    true に設定すると KlusterletAddonConfig が有効になり、false に設定すると KlusterletAddonConfig が無効になります。searchCollector を無効にした状態に維持します。
  8. ManagedCluster カスタムリソースを作成します。

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
      name: <cluster_name>
    spec:
      hubAcceptsClient: true
  9. InfraEnv カスタムリソースを作成します。

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    metadata:
      name: <cluster_name>
      namespace: <cluster_name>
    spec:
      clusterRef:
        name: <cluster_name>
        namespace: <cluster_name>
      sshAuthorizedKey: <public_key> 1
      agentLabels: 2
        location: "<label-name>"
      pullSecretRef:
        name: assisted-deployment-pull-secret
    1
    プレーンテキストとして入力されました。ISO から起動するときに、公開鍵を使用してターゲットのベアメタルホストに SSH で接続できます。
    2
    一致するラベルを設定します。ラベルは、エージェントの起動時に適用されます。
  10. BareMetalHost カスタムリソースを作成します。

    apiVersion: metal3.io/v1alpha1
    kind: BareMetalHost
    metadata:
      name: <cluster_name>
      namespace: <cluster_name>
      annotations:
        inspect.metal3.io: disabled
      labels:
        infraenvs.agent-install.openshift.io: "<cluster_name>"
    spec:
      bootMode: "UEFI"
      bmc:
        address: <bmc_address> 1
        disableCertificateVerification: true
        credentialsName: <cluster_name>-bmc-secret
      bootMACAddress: <mac_address> 2
      automatedCleaningMode: disabled
      online: true
    1
    ターゲットのベアメタルホスト上のインストール ISO のベースボード管理コンソールアドレス。
    2
    ターゲットのベアメタルホストの MAC アドレス。

    オプションで、アノテーションとして bmac.agent-install.openshift.io/hostname: <host-name> を追加して、マネージドクラスターのホスト名を設定できます。アノテーションを追加しない場合、ホスト名はデフォルトで DHCP サーバーまたはローカルホストのホスト名になります。

  11. カスタムリソースを作成したら、生成されたカスタムリソースのディレクトリー全体を、カスタムリソースを保存するために作成した Git リポジトリーにプッシュします。

次のステップ

追加のクラスターをプロビジョニングするには、それぞれのクラスターについてこの手順を繰り返します。

19.13.1. マネージドクラスターの静的 IP アドレスの設定

オプションで、AgentClusterInstall カスタムリソースの作成後に、マネージドクラスターの静的 IP アドレスを設定できます。

注記

ClusterDeployment カスタムリソースを作成する前に、このカスタムリソースを作成する必要があります。

前提条件

  • AgentClusterInstall カスタムリソースをデプロイして設定します。

手順

  1. NMStateConfig カスタムリソースを作成します。

    apiVersion: agent-install.openshift.io/v1beta1
    kind: NMStateConfig
    metadata:
     name: <cluster_name>
     namespace: <cluster_name>
     labels:
       sno-cluster-<cluster-name>: <cluster_name>
    spec:
     config:
       interfaces:
         - name: eth0
           type: ethernet
           state: up
           ipv4:
             enabled: true
             address:
               - ip: <ip_address> 1
                 prefix-length: <public_network_prefix> 2
             dhcp: false
       dns-resolver:
         config:
           server:
             - <dns_resolver> 3
       routes:
         config:
           - destination: 0.0.0.0/0
             next-hop-address: <gateway> 4
             next-hop-interface: eth0
             table-id: 254
     interfaces:
       - name: "eth0" 5
         macAddress: <mac_address> 6
    1
    ターゲットのベアメタルホストの静的 IP アドレス。
    2
    ターゲットのベアメタルホストの静的 IP アドレスのサブネット接頭辞。
    3
    ターゲットのベアメタルホストの DNS サーバー。
    4
    ターゲットのベアメタルホストのゲートウェイ。
    5
    interfaces セクションで指定された名前と一致する必要があります。
    6
    インターフェイスの MAC アドレス。
  2. BareMetalHost カスタムリソースを作成するときは、その MAC アドレスの 1 つが NMStateConfig ターゲットのベアメタルホストの MAC アドレスと一致することを確認してください。
  3. InfraEnv カスタムリソースの作成時に、InfraEnv カスタムリソースの NMStateConfig カスタムリソースからラベル を参照します。

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    metadata:
      name: <cluster_name>
      namespace: <cluster_name>
    spec:
      clusterRef:
        name: <cluster_name>
        namespace: <cluster_name>
      sshAuthorizedKey: <public_key>
      agentLabels: 1
        location: "<label-name>"
      pullSecretRef:
        name: assisted-deployment-pull-secret
      nmStateConfigLabelSelector:
        matchLabels:
          sno-cluster-<cluster-name>: <cluster_name> # Match this label
    1
    一致するラベルを設定します。ラベルは、エージェントの起動時に適用されます。

19.13.2. クラスターをプロビジョニングする自動検出イメージ ISO プロセス

カスタムリソースを作成すると、以下のアクションが自動的に行われます。

  1. Discovery イメージの ISO ファイルが生成され、ターゲットマシンで起動します。
  2. ターゲットマシンで ISO ファイルが正常に起動すると、ターゲットマシンのハードウェア情報を報告します。
  3. すべてのホストの検出後に、OpenShift Container Platform がインストールされます。
  4. OpenShift Container Platform のインストールが完了すると、ハブは klusterlet サービスをターゲットクラスターにインストールします。
  5. 要求されたアドオンサービスがターゲットクラスターにインストールされている。

Discovery イメージの ISO プロセスは、マネージドクラスターのハブに Agent カスタムリソースが作成されると終了します。

19.13.3. マネージドクラスターステータスの確認

クラスターのステータスをチェックして、クラスターのプロビジョニングが正常に行われたことを確認します。

前提条件

  • すべてのカスタムリソースが設定およびプロビジョニングされ、プロビジョニングされ、マネージドクラスターのハブで Agent カスタムリソースが作成されます。

手順

  1. マネージドクラスターのステータスを確認します。

    $ oc get managedcluster

    True はマネージドクラスターの準備が整っていることを示します。

  2. エージェントのステータスを確認します。

    $ oc get agent -n <cluster_name>
  3. describe コマンドを使用して、エージェントの条件に関する詳細な説明を指定します。認識できるステータスには、BackendErrorInputErrorValidationsFailingInstallationFailed、および AgentIsConnected が含まれます。これらのステータスは、Agent および AgentClusterInstall カスタムリソースに関連します。

    $ oc describe agent -n <cluster_name>
  4. クラスターのプロビジョニングのステータスを確認します。

    $ oc get agentclusterinstall -n <cluster_name>
  5. describe コマンドを使用して、クラスターのプロビジョニングステータスの詳細な説明を指定します。

    $ oc describe agentclusterinstall -n <cluster_name>
  6. マネージドクラスターのアドオンサービスのステータスを確認します。

    $ oc get managedclusteraddon -n <cluster_name>
  7. マネージドクラスターの kubeconfig ファイルの認証情報を取得します。

    $ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig

19.13.4. 非接続環境でのマネージドクラスターの設定

前述の手順を完了したら、以下の手順に従って非接続環境でマネージドクラスターを設定します。

前提条件

  • Red Hat Advanced Cluster Management (RHACM) 2.3 の非接続インストール。
  • rootfs および iso イメージを HTTPD サーバーでホストします。

手順

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: assisted-installer-mirror-config
      namespace: assisted-installer
      labels:
        app: assisted-service
    data:
      ca-bundle.crt: <certificate> 1
      registries.conf: |  2
        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
    
        [[registry]]
          location = <mirror_registry_url>  3
          insecure = false
          mirror-by-digest-only = true
    1
    ミラーレジストリーの作成時に使用されるミラーレジストリーの証明書。
    2
    ミラーレジストリーの設定。
    3
    ミラーレジストリーの URL。

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

    出力例

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
      name: agent
      namespace: assisted-installer
    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'
      osImages:
        - openshiftVersion: <ocp_version>
          rootfs: <rootfs_url> 1
          url: <iso_url> 2

    1 2
    HTTPD サーバーの URL と一致する必要があります。
  2. 非接続インストールでは、オフラインネットワーク経由で到達可能な NTP クロックをデプロイする必要があります。これは、chrony をサーバーとして機能するように設定する、/etc/chrony.conf ファイルを編集し、以下の許可された IPv6 範囲を追加します。

    # Allow NTP client access from local network.
    #allow 192.168.0.0/16
    local stratum 10
    bindcmdaddress ::
    allow 2620:52:0:1310::/64

19.13.5. 非接続環境での IPv6 アドレスの設定

オプションとして、AgentClusterInstall カスタムリソースを作成する場合、マネージドクラスターの IPv6 アドレスを設定できます。

手順

  1. AgentClusterInstall カスタムリソースで、IPv6 アドレスの clusterNetwork および serviceNetwork の IP アドレスを変更します。

    apiVersion: extensions.hive.openshift.io/v1beta1
    kind: AgentClusterInstall
    metadata:
      # Only include the annotation if using OVN, otherwise omit the annotation
      annotations:
        agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}'
      name: <cluster_name>
      namespace: <cluster_name>
    spec:
      clusterDeploymentRef:
        name: <cluster_name>
      imageSetRef:
        name: <cluster_image_set>
      networking:
        clusterNetwork:
        - cidr: "fd01::/48"
          hostPrefix: 64
        machineNetwork:
        - cidr: <machine_network_cidr>
        serviceNetwork:
        - "fd02::/112"
      provisionRequirements:
        controlPlaneAgents: 1
        workerAgents: 0
      sshPublicKey: <public_key>
  2. 定義した IPv6 アドレスを使用して、NMStateConfig カスタムリソースを更新します。

19.13.6. マネージドクラスターのトラブルシューティング

以下の手順を使用して、マネージドクラスターで発生する可能性のあるインストール問題を診断します。

手順

  1. マネージドクラスターのステータスを確認します。

    $ oc get managedcluster

    出力例

    NAME            HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    SNO-cluster     true                                   True     True      2d19h

    AVAILABLE 列のステータスが True の場合、マネージドクラスターはハブによって管理されます。

    AVAILABLE 列のステータスが Unknown の場合、マネージドクラスターはハブによって管理されていません。その他の情報を取得するには、以下の手順を使用します。

  2. AgentClusterInstall インストールのステータスを確認します。

    $ oc get clusterdeployment -n <cluster_name>

    出力例

    NAME        PLATFORM            REGION   CLUSTERTYPE   INSTALLED    INFRAID    VERSION  POWERSTATE AGE
    Sno0026    agent-baremetal                               false                          Initialized
    2d14h

    INSTALLED 列のステータスが false の場合、インストールは失敗していました。

  3. インストールが失敗した場合は、以下のコマンドを実行して AgentClusterInstall リソースのステータスを確認します。

    $ oc describe agentclusterinstall -n <cluster_name> <cluster_name>
  4. エラーを解決し、クラスターをリセットします。

    1. クラスターのマネージドクラスターリソースを削除します。

      $ oc delete managedcluster <cluster_name>
    2. クラスターの namespace を削除します。

      $ oc delete namespace <cluster_name>

      これにより、このクラスター用に作成された namespace スコープのカスタムリソースがすべて削除されます。続行する前に、ManagedCluster CR の削除が完了するのを待つ必要があります。

    3. マネージドクラスターのカスタムリソースを再作成します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.