IBM Cloud Bare Metal (Classic) のインストール


OpenShift Container Platform 4.15

IBM Cloud Bare Metal (Classic) への OpenShift Container Platform のインストール

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、IBM Cloud Bare Metal (Classic) に OpenShift Container Platform をインストールする方法を説明します。

第1章 前提条件

installer-provisioned installation を使用して、OpenShift Container Platform を IBM Cloud® Bare Metal (Classic) ノードにインストールできます。このドキュメントでは、IBM Cloud® ノードに OpenShift Container Platform をインストールする際の前提条件および手順を説明します。

重要

Red Hat は、プロビジョニングネットワークでのみ IPMI および PXE をサポートします。Red Hat は、IBM Cloud® デプロイメントで Secure Boot などの Red Hat Fish、仮想メディア、またはその他の補完テクノロジーをテストしていません。プロビジョニングネットワークが必要です。

OpenShift Container Platform の installer-provisioned installation には、以下が必要です。

  • プロビジョナーを実行するための、Red Hat Enterprise Linux CoreOS (RHCOS) 8.x がインストールされた 1 つのノード
  • 3 つのコントロールプレーンノード
  • 1 つのルーティング可能なネットワーク
  • 1 つのプロビジョニングネットワーク

IBM Cloud® Bare Metal (Classic) に、OpenShift Container Platform の installer-provisioned installation を開始する前に、以下の前提条件および要件に対応します。

1.1. IBM Cloud Bare Metal (Classic) インフラストラクチャーのセットアップ

OpenShift Container Platform クラスターを IBM Cloud® Bare Metal (Classic) にデプロイするには、最初に IBM Cloud® ノードをプロビジョニングする必要があります。

重要

Red Hat は、provisioning ネットワークでのみ IPMI および PXE をサポートします。Red Hat は、IBM Cloud® デプロイメントで Secure Boot などの Red Hat Fish、仮想メディア、またはその他の補完テクノロジーをテストしていません。provisioning ネットワークが必要です。

IBM Cloud® API を使用して、IBM Cloud® ノードをカスタマイズできます。IBM Cloud® ノードを作成する場合は、以下の要件を考慮する必要があります。

クラスターごとにデータセンターを 1 つ使用します。

OpenShift Container Platform クラスターのすべてのノードは、同じ IBM Cloud® データセンターで実行する必要があります。

パブリックおよびプライベート VLAN を作成します。

1 つのパブリック VLAN と単一のプライベート VLAN を持つすべてのノードを作成します。

サブネットに十分な IP アドレスがあることを確認します。

IBM Cloud® パブリック VLAN サブネットは、デフォルトで /28 接頭辞を使用し、16 個の IP アドレスを提供します。これは、3 つのコントロールプレーンノード、4 つのワーカーノード、および baremetal ネットワーク上 2 つの IP アドレス (API VIP および Ingress VIP) で構成されるクラスターには十分です。大規模なクラスターの場合は、接頭辞が小さい可能性があります。

IBM Cloud® private VLAN サブネットは、デフォルトで /26 接頭辞を使用し、64 個の IP アドレスを提供します。IIBM Cloud® Bare Metal (Classic) はプライベートネットワーク IP アドレスを使用して、各ノードの Baseboard Management Controller (BMC) にアクセスします。OpenShift Container Platform は、provisioning ネットワークの追加サブネットを作成します。プライベート VLAN を使用した provisioning ネットワークのサブネットのルートに対するネットワークトラフィック。大規模なクラスターの場合は、接頭辞が小さい可能性があります。

表1.1 接頭辞ごとの IP アドレス
IP アドレス接頭辞

32

/27

64

/26

128

/25

256

/24

NIC の設定

OpenShift Container Platform は、2 つのネットワークを使用してデプロイします。

  • provisioning: provisioning ネットワークは OpenShift Container Platform クラスターの一部である基礎となるオペレーティングシステムを各ノードにプロビジョニングするために使用されるルーティング不可能なネットワークです。
  • baremetal: baremetal ネットワークはルーティング可能なネットワークです。任意の NIC 順序を使用して baremetal ネットワークと対話することができます。ただし、provisioning ネットワーク用の provisioningNetworkInterface 設定で指定される NIC ではなく、ノードの bootMACAddress 設定に関連する NIC であることが条件となります。

クラスターノードには 3 つ以上の NIC を追加できますが、インストールプロセスでは最初の 2 つの NIC のみに焦点が当てられます。以下に例を示します。

NICネットワークVLAN

NIC1

provisioning

<provisioning_vlan>

NIC2

baremetal

<baremetal_vlan>

上記の例では、すべてのコントロールプレーンおよびワーカーノードの NIC1 は、OpenShift Container Platform クラスターのインストールにのみ使用されるルーティング不可能なネットワーク (provisioning) に接続します。すべてのコントロールプレーンおよびワーカーノードの NIC2 は、ルーティング可能な baremetal ネットワークに接続されます。

PXEブート順序

NIC1 PXE 対応の provisioning ネットワーク

1

NIC2 baremetal ネットワーク

2

注記

PXE が provisioning ネットワークに使用する NIC で有効になっており、他のすべての NIC で無効になっていることを確認します。

正規名の設定

クライアントは、baremetal ネットワークで OpenShift Container Platform クラスターにアクセスします。正規名の拡張がクラスター名である IBM Cloud® サブドメインまたはサブゾーンを設定します。

<cluster_name>.<domain>

以下に例を示します。

test-cluster.example.com
DNS エントリーの作成

以下について、パブリックサブネットで未使用の IP アドレスを解決する DNS A レコードエントリーを作成する必要があります。

使用法ホスト名IP

API

api.<cluster_name>.<domain>

<ip>

Ingress LB (アプリケーション)

*.apps.<cluster_name>.<domain>

<ip>

コントロールプレーンおよびワーカーノードは、プロビジョニング後にすでに DNS エントリーを持っています。

以下の表は、完全修飾ドメイン名の例を示しています。API および Nameserver アドレスは、正式名の拡張子で始まります。コントロールプレーンおよびワーカーノードのホスト名は例であるため、任意のホストの命名規則を使用することができます。

使用法ホスト名IP

API

api.<cluster_name>.<domain>

<ip>

Ingress LB (アプリケーション)

*.apps.<cluster_name>.<domain>

<ip>

プロビジョナーノード

provisioner.<cluster_name>.<domain>

<ip>

Master-0

openshift-master-0.<cluster_name>.<domain>

<ip>

Master-1

openshift-master-1.<cluster_name>.<domain>

<ip>

Master-2

openshift-master-2.<cluster_name>.<domain>

<ip>

Worker-0

openshift-worker-0.<cluster_name>.<domain>

<ip>

Worker-1

openshift-worker-1.<cluster_name>.<domain>

<ip>

Worker-n

openshift-worker-n.<cluster_name>.<domain>

<ip>

OpenShift Container Platform には、クラスターメンバーシップ情報を使用して A レコードを生成する機能が含まれます。これにより、ノード名が IP アドレスに解決されます。ノードが API に登録されると、クラスターは CoreDNS-mDNS を使用せずにこれらのノード情報を分散できます。これにより、マルチキャスト DNS に関連付けられたネットワークトラフィックがなくなります。

重要

IBM Cloud® ノードのプロビジョニング後に、CoreDNS を削除するとローカルエントリーが非表示になるので、api.<cluster_name>.<domain> ドメイン名の DNS エントリーを作成する必要があります。外部 DNS サーバーで api.<cluster_name>.<domain> ドメイン名の DNS レコードの作成に失敗すると、ワーカーノードがクラスターに参加できなくなります。

ネットワークタイムプロトコル (NTP)

クラスター内の各 OpenShift Container Platform ノードは NTP サーバーにアクセスできる必要があります。OpenShift Container Platform ノードは NTP を使用してクロックを同期します。たとえば、クラスターノードは、検証を必要とする SSL 証明書を使用します。これは、ノード間の日付と時刻が同期していない場合に失敗する可能性があります。

重要

各クラスターノードの BIOS 設定で一貫性のあるクロックの日付と時刻の形式を定義してください。そうしないと、インストールが失敗する可能性があります。

DHCP サーバーの設定

IBM Cloud® Bare Metal (Classic) は、パブリックまたはプライベートの VLAN で DHCP を実行しません。IBM Cloud® ノードのプロビジョニング後に、OpenShift Container Platform の baremetal ネットワークに対応するパブリック VLAN の DHCP サーバーを設定する必要があります。

注記

各ノードに割り当てられる IP アドレスは、IBM Cloud® Bare Metal (Classic) プロビジョニングシステムによって割り当てられる IP アドレスに一致する必要はありません。

詳細は、「パブリックサブネットの設定」セクションを参照してください。

BMC アクセス権限の確認

ダッシュボードの各ノードの "Remote management" ページには、ノードのインテリジェントなプラットフォーム管理インターフェイス (IPMI) 認証情報が含まれます。デフォルトの IPMI 権限により、ユーザーが特定のブートターゲットの変更を阻止します。Ironic が変更を加えることができるように、特権レベルを OPERATOR に変更する必要があります。

install-config.yaml ファイルで、各 BMC の設定に使用される URL に privilegelevel パラメーターを追加します。詳細は、「install-config.yaml ファイルの設定」セクションを参照してください。以下に例を示します。

ipmi://<IP>:<port>?privilegelevel=OPERATOR

または、IBM Cloud® サポートに連絡し、各ノードの ADMINISTRATOR に対する IPMI 特権を増やすように要求します。

ベアメタルサーバーの作成

Create resourceBare Metal Servers for Classic に移動して、IBM Cloud® ダッシュボード にベアメタルサーバーを作成します。

または、ibmcloud CLI ユーティリティーを使用してベアメタルサーバーを作成できます。以下に例を示します。

$ ibmcloud sl hardware create --hostname <SERVERNAME> \
                            --domain <DOMAIN> \
                            --size <SIZE> \
                            --os <OS-TYPE> \
                            --datacenter <DC-NAME> \
                            --port-speed <SPEED> \
                            --billing <BILLING>

IBM Cloud® CLI のインストールに関する詳細は、Installing the stand-alone IBM Cloud® CLI を参照してください。

注記

IBM Cloud® Server が利用可能な状態になるまで 3-5 時間かかる場合があります。

第2章 OpenShift Container Platform インストールの環境の設定

2.1. IBM Cloud(R) Bare Metal (Classic) インフラストラクチャー上でプロビジョナーノードを準備する

provisioner ノードを準備するには、以下の手順を実行します。

手順

  1. ssh でプロビジョナーノードにログインします。
  2. root 以外のユーザー (kni) を作成し、そのユーザーに sudo 権限を付与します。

    # useradd kni
    # passwd kni
    # echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
    # chmod 0440 /etc/sudoers.d/kni
  3. 新規ユーザーの ssh キーを作成します。

    # su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
  4. プロビジョナーノードで新規ユーザーとしてログインします。

    # su - kni
  5. Red Hat Subscription Manager を使用してプロビジョナーノードを登録します。

    $ sudo subscription-manager register --username=<user> --password=<pass> --auto-attach
    $ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \
                                      --enable=rhel-8-for-x86_64-baseos-rpms
    注記

    Red Hat Subscription Manager の詳細は、Using and Configuring Red Hat Subscription Manager を参照してください。

  6. 以下のパッケージをインストールします。

    $ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
  7. ユーザーを変更して、新たに作成したユーザーに libvirt グループを追加します。

    $ sudo usermod --append --groups libvirt kni
  8. firewalld を起動します。

    $ sudo systemctl start firewalld
  9. firewalld を有効にします。

    $ sudo systemctl enable firewalld
  10. http サービスを起動します。

    $ sudo firewall-cmd --zone=public --add-service=http --permanent
    $ sudo firewall-cmd --reload
  11. libvirtd サービスを開始して、これを有効にします。

    $ sudo systemctl enable libvirtd --now
  12. プロビジョナーノードの ID を設定します。

    $ PRVN_HOST_ID=<ID>

    以下の ibmcloud コマンドで ID を表示できます。

    $ ibmcloud sl hardware list
  13. パブリックサブネットの ID を設定します。

    $ PUBLICSUBNETID=<ID>

    以下の ibmcloud コマンドで ID を表示できます。

    $ ibmcloud sl subnet list
  14. プライベートサブネットの ID を設定します。

    $ PRIVSUBNETID=<ID>

    以下の ibmcloud コマンドで ID を表示できます。

    $ ibmcloud sl subnet list
  15. provisioner ノードのパブリック IP アドレスを設定します。

    $ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
  16. パブリックネットワークの CIDR を設定します。

    $ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
  17. パブリックネットワークの IP アドレスおよび CIDR を設定します。

    $ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
  18. パブリックネットワークのゲートウェイを設定します。

    $ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
  19. プロビジョナーノードのプライベート IP アドレスを設定します。

    $ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \
                     jq .primaryBackendIpAddress -r)
  20. プライベートネットワークの CIDR を設定します。

    $ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
  21. プライベートネットワークの IP アドレスおよび CIDR を設定します。

    $ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
  22. プライベートネットワークのゲートウェイを設定します。

    $ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
  23. baremetal および provisioning ネットワークのブリッジを設定します。

    $ sudo nohup bash -c "
        nmcli --get-values UUID con show | xargs -n 1 nmcli con delete
        nmcli connection add ifname provisioning type bridge con-name provisioning
        nmcli con add type bridge-slave ifname eth1 master provisioning
        nmcli connection add ifname baremetal type bridge con-name baremetal
        nmcli con add type bridge-slave ifname eth2 master baremetal
        nmcli connection modify baremetal ipv4.addresses $PUB_IP_CIDR ipv4.method manual ipv4.gateway $PUB_GATEWAY
        nmcli connection modify provisioning ipv4.addresses 172.22.0.1/24,$PRIV_IP_CIDR ipv4.method manual
        nmcli connection modify provisioning +ipv4.routes \"10.0.0.0/8 $PRIV_GATEWAY\"
        nmcli con down baremetal
        nmcli con up baremetal
        nmcli con down provisioning
        nmcli con up provisioning
        init 6
    "
    注記

    eth1 および eth2 の場合は、必要に応じて適切なインターフェイス名を置き換えます。

  24. 必要な場合は、provisioner ノードに対して再度 SSH を実行します。

    # ssh kni@provisioner.<cluster-name>.<domain>
  25. 接続ブリッジが適切に作成されていることを確認します。

    $ sudo nmcli con show

    出力例

    NAME               UUID                                  TYPE      DEVICE
    baremetal          4d5133a5-8351-4bb9-bfd4-3af264801530  bridge    baremetal
    provisioning       43942805-017f-4d7d-a2c2-7cb3324482ed  bridge    provisioning
    virbr0             d9bca40f-eee1-410b-8879-a2d4bb0465e7  bridge    virbr0
    bridge-slave-eth1  76a8ed50-c7e5-4999-b4f6-6d9014dd0812  ethernet  eth1
    bridge-slave-eth2  f31c3353-54b7-48de-893a-02d2b34c4736  ethernet  eth2

  26. pull-secret.txt ファイルを作成します。

    $ vim pull-secret.txt

    Web ブラウザーで、Install on Bare Metal with user-provisioned infrastructure に移動します。ステップ 1 で、Download pull secret をクリックします。pull-secret.txt ファイルにコンテンツを貼り付け、そのコンテンツを kni ユーザーのホームディレクトリーに保存します。

2.2. パブリックサブネットの設定

すべての OpenShift Container Platform クラスターノードはパブリックサブネット上になければなりません。IBM Cloud® Bare Metal (Classic) は、サブネット上に DHCP サーバーを提供しません。プロビジョナーノードで個別に設定します。

プロビジョナーノードの準備時に定義された BASH 変数をリセットする必要があります。準備後にプロビジョナーノードを再起動すると、BASH 変数が以前に設定された変数が削除されます。

手順

  1. dnsmasq をインストールします。

    $ sudo dnf install dnsmasq
  2. dnsmasq 設定ファイルを開きます。

    $ sudo vi /etc/dnsmasq.conf
  3. 以下の設定を dnsmasq 設定ファイルに追加します。

    interface=baremetal
    except-interface=lo
    bind-dynamic
    log-dhcp
    
    dhcp-range=<ip_addr>,<ip_addr>,<pub_cidr> 1
    dhcp-option=baremetal,121,0.0.0.0/0,<pub_gateway>,<prvn_priv_ip>,<prvn_pub_ip> 2
    
    dhcp-hostsfile=/var/lib/dnsmasq/dnsmasq.hostsfile
    1
    DHCP 範囲を設定します。<ip_addr> の両方のインスタンスをパブリックサブネットから 1 つの未使用の IP アドレスに置き換え、baremetal ネットワークの dhcp-range が開始し、IP アドレスで終了するようにします。<pub_cidr> をパブリックサブネットの CIDR に置き換えます。
    2
    DHCP オプションを設定します。<pub_gateway> を、baremetal ネットワークのゲートウェイの IP アドレスに置き換えます。<prvn_priv_ip>provisioning ネットワーク上のプロビジョナーノードのプライベート IP アドレスの IP アドレスに置き換えます。<prvn_pub_ip> を、baremetal ネットワーク上のプロビジョナーノードのパブリック IP アドレスの IP アドレスに置き換えます。

    <pub_cidr> の値を取得するには、以下を実行します。

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr

    <publicsubnetid> をパブリックサブネットの ID に置き換えます。

    <pub_gateway> の値を取得するには、以下を実行します。

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r

    <publicsubnetid> をパブリックサブネットの ID に置き換えます。

    <prvn_priv_ip> の値を取得するには、以下を実行します。

    $ ibmcloud  sl hardware detail <id> --output JSON | \
                jq .primaryBackendIpAddress -r

    <id> をプロビジョナーノードの ID に置き換えます。

    <prvn_pub_ip> の値を取得するには、以下を実行します。

    $ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r

    <id> をプロビジョナーノードの ID に置き換えます。

  4. クラスターのハードウェアのリストを取得します。

    $ ibmcloud sl hardware list
  5. 各ノードの MAC アドレスおよび IP アドレスを取得します。

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '.networkComponents[] | \
      "\(.primaryIpAddress) \(.macAddress)"' | grep -v null

    <id> をノードの ID に置き換えてください。

    出力例

    "10.196.130.144 00:e0:ed:6a:ca:b4"
    "141.125.65.215 00:e0:ed:6a:ca:b5"

    パブリックネットワークの MAC アドレスと IP アドレスを書き留めておきます。プライベートネットワークの MAC アドレスを別々に書留ておきます。これは、後に install-config.yaml ファイルで使用します。各ノードにパブリック baremetal ネットワークのパブリック MAC アドレスと IP アドレスがすべてあり、プライベートの provisioning の MAC アドレスになるまで、この手順を繰り返します。

  6. 各ノードのパブリック baremetal ネットワークの MAC アドレスと IP アドレスペアを dnsmasq.hostsfile ファイルに追加します。

    $ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile

    入力の例

    00:e0:ed:6a:ca:b5,141.125.65.215,master-0
    <mac>,<ip>,master-1
    <mac>,<ip>,master-2
    <mac>,<ip>,worker-0
    <mac>,<ip>,worker-1
    ...

    <mac>,<ip> を、対応するノード名のパブリック MAC アドレスとパブリック IP アドレスに置き換えます。

  7. dnsmasq を開始します。

    $ sudo systemctl start dnsmasq
  8. dnsmasq を有効にして、ノードのブート時に起動できるようにします。

    $ sudo systemctl enable dnsmasq
  9. dnsmasq が実行中であることを確認します。

    $ sudo systemctl status dnsmasq

    出力例

    ● dnsmasq.service - DNS caching server.
    Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
    Active: active (running) since Tue 2021-10-05 05:04:14 CDT; 49s ago
    Main PID: 3101 (dnsmasq)
    Tasks: 1 (limit: 204038)
    Memory: 732.0K
    CGroup: /system.slice/dnsmasq.service
    └─3101 /usr/sbin/dnsmasq -k

  10. UDP プロトコルでポート 53 および 67 を開きます。

    $ sudo firewall-cmd --add-port 53/udp --permanent
    $ sudo firewall-cmd --add-port 67/udp --permanent
  11. masquerade を使用して、外部ゾーンに provisioning を追加します。

    $ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent

    このステップにより、管理サブネットへの IPMI 呼び出しのネットワークアドレス変換が確保されます。

  12. firewalld 設定を再読み込みします。

    $ sudo firewall-cmd --reload

2.3. OpenShift Container Platform インストーラーの取得

インストールプログラムの stable-4.x バージョンと選択したアーキテクチャーを使用して、OpenShift Container Platform の一般公開の安定バージョンをデプロイします。

$ export VERSION=stable-4.15
$ export RELEASE_ARCH=<architecture>
$ export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/$RELEASE_ARCH/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')

2.4. OpenShift Container Platform インストールのデプロイメント

インストーラーを取得したら、インストーラーを展開します。

手順

  1. 環境変数を設定します。

    $ export cmd=openshift-baremetal-install
    $ export pullsecret_file=~/pull-secret.txt
    $ export extract_dir=$(pwd)
  2. oc バイナリーを取得します。

    $ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
  3. インストーラーを実行します。

    $ sudo cp oc /usr/local/bin
    $ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
    $ sudo cp openshift-baremetal-install /usr/local/bin

2.5. install-config.yaml ファイルの設定

install-config.yaml ファイルには、追加の詳細情報が必要です。それらの情報のほとんどは、インストーラーおよび結果として作成されるクラスターが利用可能な IBM Cloud® Bare Metal (Classic) ハードウェアを完全に管理するのに必要な利用可能なハードウェアに関する十分な情報として提供されます。ベアメタルへのインストールと IBM Cloud Bare Metal (Classic) へのインストールの相違点は install-config.yaml ファイルの BMC セクションで IPMI の特権レベルを明示的に設定する必要があることです。

手順

  1. install-config.yaml を設定します。pullSecret および sshKey など、環境に合わせて適切な変数を変更します。

    apiVersion: v1
    baseDomain: <domain>
    metadata:
      name: <cluster_name>
    networking:
      machineNetwork:
      - cidr: <public-cidr>
      networkType: OVNKubernetes
    compute:
    - name: worker
      replicas: 2
    controlPlane:
      name: master
      replicas: 3
      platform:
        baremetal: {}
    platform:
      baremetal:
        apiVIP: <api_ip>
        ingressVIP: <wildcard_ip>
        provisioningNetworkInterface: <NIC1>
        provisioningNetworkCIDR: <CIDR>
        hosts:
          - name: openshift-master-0
            role: master
            bmc:
              address: ipmi://10.196.130.145?privilegelevel=OPERATOR 1
              username: root
              password: <password>
            bootMACAddress: 00:e0:ed:6a:ca:b4 2
            rootDeviceHints:
              deviceName: "/dev/sda"
          - name: openshift-worker-0
            role: worker
            bmc:
              address: ipmi://<out-of-band-ip>?privilegelevel=OPERATOR 3
              username: <user>
              password: <password>
            bootMACAddress: <NIC1_mac_address> 4
            rootDeviceHints:
              deviceName: "/dev/sda"
    pullSecret: '<pull_secret>'
    sshKey: '<ssh_pub_key>'
    1 3
    bmc.address は、値が OPERATOR に設定された privilegelevel の設定を提供します。これは、IBM Cloud® Bare Metal (Classic) インフラストラクチャーに必要です。
    2 4
    対応するノードのプライベート provisioning ネットワーク NIC の MAC アドレスを追加します。
    注記

    ibmcloud コマンドラインユーティリティーを使用して、パスワードを取得できます。

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'

    <id> をノードの ID に置き換えてください。

  2. クラスター設定を保存するディレクトリーを作成します。

    $ mkdir ~/clusterconfigs
  3. install-config.yaml ファイルをディレクトリーにコピーします。

    $ cp install-config.yaml ~/clusterconfigs
  4. OpenShift Container Platform クラスターをインストールする前に、すべてのベアメタルノードの電源がオフになっていることを確認します。

    $ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
  5. 以前に試行したデプロイメントにより古いブートストラップリソースが残っている場合は、これを削除します。

    for i in $(sudo virsh list | tail -n +3 | grep bootstrap | awk {'print $2'});
    do
      sudo virsh destroy $i;
      sudo virsh undefine $i;
      sudo virsh vol-delete $i --pool $i;
      sudo virsh vol-delete $i.ign --pool $i;
      sudo virsh pool-destroy $i;
      sudo virsh pool-undefine $i;
    done

2.6. 追加の install-config パラメーター

install-config.yaml ファイルに必要なパラメーター hosts パラメーターおよび bmc パラメーターについては、以下の表を参照してください。

表2.1 必須パラメーター
パラメーターデフォルト説明

baseDomain

 

クラスターのドメイン名。例: example.com

bootMode

UEFI

ノードのブートモード。オプションは、legacyUEFI、および UEFISecureBoot です。bootMode が設定されていない場合は、ノードを検査する間に Ironic がこれを設定します。

bootstrapExternalStaticDNS

 

ブートストラップノードの静的ネットワーク DNS。ベアメタルネットワークに Dynamic Host Configuration Protocol (DHCP) サーバーがない場合に、静的 IP アドレスを使用してクラスターをデプロイする場合は、この値を設定する必要があります。この値を設定しないと、インストールプログラムが bootstrapExternalStaticGateway の値を使用します。そのため、ゲートウェイと DNS の IP アドレス値が異なる場合に問題が発生します。

bootstrapExternalStaticIP

 

ブートストラップ VM の静的 IP アドレス。ベアメタルネットワークに DHCP サーバーがない場合に、静的 IP アドレスを使用してクラスターをデプロイする場合は、この値を設定する必要があります。

bootstrapExternalStaticGateway

 

ブートストラップ VM のゲートウェイの静的 IP アドレス。ベアメタルネットワークに DHCP サーバーがない場合に、静的 IP アドレスを使用してクラスターをデプロイする場合は、この値を設定する必要があります。

sshKey

 

sshKey 設定には、コントロールプレーンノードおよびワーカーノードにアクセスするために必要な ~/.ssh/id_rsa.pub ファイルのキーが含まれます。通常、このキーは provisionaer ノードのキーです。

pullSecret

 

pullSecret 設定には、プロビジョナーノードの準備の際に Install OpenShift on Bare Metal ページからダウンロードしたプルシークレットのコピーが含まれます。

metadata:
    name:
 

OpenShift Container Platform クラスターに指定される名前。例: openshift

networking:
    machineNetwork:
    - cidr:
 

外部ネットワークの公開 CIDR (Classless Inter-Domain Routing)。例: 10.0.0.0/24 など。

compute:
  - name: worker
 

OpenShift Container Platform クラスターでは、ノードがゼロであってもワーカー (またはコンピュート) ノードの名前を指定する必要があります。

compute:
    replicas: 2
 

レプリカは、OpenShift Container Platform クラスターのワーカー (またはコンピュート) ノードの数を設定します。

controlPlane:
    name: master
 

OpenShift Container Platform クラスターには、コントロールプレーン (マスター) ノードの名前が必要です。

controlPlane:
    replicas: 3
 

レプリカは、OpenShift Container Platform クラスターの一部として含まれるコントロールプレーン (マスター) ノードの数を設定します。

provisioningNetworkInterface

 

ベアメタルネットワークに接続されたノード上のネットワークインターフェイス名。OpenShift Container Platform 4.9 以降のリリースのために、NIC の名前を識別するために provisioningNetworkInterface 設定を使用する代わりに、Ironic が NIC の IP アドレスを識別できるように bootMACAddress 設定を使用します。

defaultMachinePlatform

 

プラットフォーム設定なしでマシンプールに使用されるデフォルト設定。

apiVIPs

 

(オプション) Kubernetes API 通信の仮想 IP アドレス。

この設定は、MachineNetwork からの予約済み IP として install-config.yaml ファイルで提供するか、デフォルト名が正しく解決されるように DNS で事前設定する必要があります。install-config.yaml ファイルの apiVIPs 設定に値を追加するときは、FQDN ではなく仮想 IP アドレスを使用します。デュアルスタックネットワークを使用する場合には、プライマリー IP アドレスは IPv4 ネットワークからのものである必要があります。設定されていない場合、インストールプログラムは api.<cluster_name>.<base_domain> を使用して DNS から IP アドレスを取得します。

注記

OpenShift Container Platform 4.12 より前では、クラスターのインストールプログラムは apiVIP 設定の IPv4 アドレスまたは IPv6 アドレスのみを受け入れていました。OpenShift Container Platform 4.12 以降から、apiVIP 設定は非推奨になりました。代わりに、apiVIPs 設定のリスト形式を使用して、IPv4 アドレス、IPv6 アドレス、または両方の IP アドレス形式を指定します。

disableCertificateVerification

False

redfish および redfish-virtualmedia では、このパラメーターで BMC アドレスを管理する必要があります。BMC アドレスに自己署名証明書を使用する場合は、値が True である必要があります。

ingressVIPs

 

(オプション) Ingress トラフィックの仮想 IP アドレス。

この設定は、MachineNetwork からの予約済み IP として install-config.yaml ファイルで提供するか、デフォルト名が正しく解決されるように DNS で事前設定する必要があります。install-config.yaml ファイルの ingressVIPs 構成設定に値を追加するときは、FQDN ではなく仮想 IP アドレスを使用してください。デュアルスタックネットワークを使用する場合には、プライマリー IP アドレスは IPv4 ネットワークからのものである必要があります。設定されていない場合、インストールプログラムは test.apps.<cluster_name>.<base_domain> を使用して DNS から IP アドレスを取得します。

注記

OpenShift Container Platform 4.12 より前では、クラスターのインストールプログラムは ingressVIP 設定の IPv4 アドレスまたは IPv6 アドレスのみを受け入れていました。OpenShift Container Platform 4.12 以降では、ingressVIP 設定は非推奨です。代わりに、ingressVIPs 設定のリスト形式を使用して、IPv4 アドレス、IPv6 アドレス、または両方の IP アドレス形式を指定します。

表2.2 オプションのパラメーター
パラメーターデフォルト説明

provisioningDHCPRange

172.22.0.10,172.22.0.100

プロビジョニングネットワークでノードの IP 範囲を定義します。

provisioningNetworkCIDR

172.22.0.0/24

プロビジョニングに使用するネットワークの CIDR。このオプションは、プロビジョニングネットワークでデフォルトのアドレス範囲を使用しない場合に必要です。

clusterProvisioningIP

provisioningNetworkCIDR の 3 番目の IP アドレス。

プロビジョニングサービスが実行されるクラスター内の IP アドレス。デフォルトは、プロビジョニングサブネットの 3 番目の IP アドレスに設定されます。例: 172.22.0.3.

bootstrapProvisioningIP

provisioningNetworkCIDR の 2 番目の IP アドレス

インストーラーがコントロールプレーン (マスター) ノードをデプロイしている間にプロビジョニングサービスが実行されるブートストラップ仮想マシンの IP アドレス。デフォルトは、プロビジョニングサブネットの 2 番目の IP アドレスに設定されます。例: 172.22.0.2 または 2620:52:0:1307::2

externalBridge

baremetal

ベアメタルネットワークに接続されたハイパーバイザーのベアメタルブリッジの名前。

provisioningBridge

provisioning

プロビジョニングネットワークに接続されている provisioner ホストのプロビジョニングブリッジの名前。

architecture

 

クラスターのホストアーキテクチャーを定義します。有効な値は amd64 または arm64 です。

defaultMachinePlatform

 

プラットフォーム設定なしでマシンプールに使用されるデフォルト設定。

bootstrapOSImage

 

ブートストラップノードのデフォルトのオペレーティングシステムイメージを上書きするための URL。URL にはイメージの SHA-256 ハッシュが含まれている必要があります。例: https://mirror.openshift.com/rhcos-<version>-qemu.qcow2.gz?sha256=<uncompressed_sha256>

provisioningNetwork

 

provisioningNetwork 設定は、クラスターがプロビジョニングネットワークを使用するかどうかを決定します。存在する場合、設定はクラスターがネットワークを管理するかどうかも決定します。

Disabled: プロビジョニングネットワークの要件を無効にするには、このパラメーターを Disabled に設定します。Disabled に設定すると、仮想メディアベースのプロビジョニングのみを使用するか、Assisted Installer を使用してクラスターを起動する必要があります。Disabledにして、電源管理を使用する場合、BMC はベアメタルネットワークからアクセスできる必要があります。Disabled の場合は、プロビジョニングサービスに使用されるベアメタルネットワークで 2 つの IP アドレスを指定する必要があります。

Managed: DHCP、TFTP などを含むプロビジョニングネットワークを完全に管理するには、このパラメーターを Managed(デフォルト) に設定します。

Unmanaged: このパラメーターを Unmanaged に設定してプロビジョニングネットワークを引き続き有効にしますが、DHCP の手動設定を行います。仮想メディアのプロビジョニングが推奨されますが、必要に応じて PXE を引き続き利用できます。

httpProxy

 

このパラメーターを、環境内で使用する適切な HTTP プロキシーに設定します。

httpsProxy

 

このパラメーターを、環境内で使用する適切な HTTPS プロキシーに設定します。

noProxy

 

このパラメーターを、環境内のプロキシーの使用に対する例外のリストに設定します。

ホスト

hosts パラメーターは、クラスターのビルドに使用される個別のベアメタルアセットのリストです。

表2.3 ホスト
名前デフォルト説明

name

 

詳細情報に関連付ける BareMetalHost リソースの名前。例: openshift-master-0

role

 

ベアメタルノードのロール。master または worker のいずれか。

bmc

 

ベースボード管理コントローラーの接続詳細。詳細は、BMC アドレス指定のセクションを参照してください。

bootMACAddress

 

ホストがプロビジョニングネットワークに使用する NIC の MAC アドレス。Ironic は、bootMACAddress 設定を使用して IP アドレスを取得します。次に、ホストにバインドします。

注記

プロビジョニングネットワークを無効にした場合は、ホストから有効な MAC アドレスを提供する必要があります。

networkConfig

 

このオプションのパラメーターを設定して、ホストのネットワークインターフェイスを設定します。詳細は、「(オプション) ホストネットワークインターフェイスの設定」を参照してください。

2.7. ルートデバイスのヒント

rootDeviceHints パラメーターは、インストーラーが Red Hat Enterprise Linux CoreOS (RHCOS) イメージを特定のデバイスにプロビジョニングできるようにします。インストーラーは、検出順にデバイスを検査し、検出された値をヒントの値と比較します。インストーラーは、ヒント値に一致する最初に検出されたデバイスを使用します。この設定は複数のヒントを組み合わせることができますが、デバイスは、インストーラーがこれを選択できるようにすべてのヒントに一致する必要があります。

表2.4 サブフィールド
サブフィールド説明

deviceName

/dev/vda/dev/disk/by-path/ などの Linux デバイス名を含む文字列。ストレージの場所への /dev/disk/by-path/<device_path> リンクを使用することを推奨します。ヒントは、実際の値と完全に一致する必要があります。

hctl

0:0:0:0 などの SCSI バスアドレスを含む文字列。ヒントは、実際の値と完全に一致する必要があります。

model

ベンダー固有のデバイス識別子を含む文字列。ヒントは、実際の値のサブ文字列になります。

vendor

デバイスのベンダーまたは製造元の名前が含まれる文字列。ヒントは、実際の値のサブ文字列になります。

serialNumber

デバイスのシリアル番号を含む文字列。ヒントは、実際の値と完全に一致する必要があります。

minSizeGigabytes

デバイスの最小サイズ (ギガバイト単位) を表す整数。

wwn

一意のストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。

wwnWithExtension

ベンダー拡張が追加された一意のストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。

wwnVendorExtension

一意のベンダーストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。

rotational

デバイスがローテーションするディスクである (true) か、そうでないか (false) を示すブール値。

使用例

     - name: master-0
       role: master
       bmc:
         address: ipmi://10.10.0.3:6203
         username: admin
         password: redhat
       bootMACAddress: de:ad:be:ef:00:40
       rootDeviceHints:
         deviceName: "/dev/sda"

2.8. OpenShift Container Platform マニフェストの作成

  1. OpenShift Container Platform マニフェストを作成します。

    $ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
    INFO Consuming Install Config from target directory
    WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings
    WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated

2.9. OpenShift Container Platform インストーラーを使用したクラスターのデプロイ

OpenShift Container Platform インストーラーを実行します。

$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster

2.10. インストールの進行状況を追跡

デプロイメントプロセスで、tail コマンドを install ディレクトリーフォルダーの .openshift_install.log ログファイルに対して実行して、インストールの全体のステータスを確認できます。

$ tail -f /path/to/install-dir/.openshift_install.log

Legal Notice

Copyright © 2024 Red Hat, Inc.

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.