15.2. OpenShift Container Platform インストールの環境の設定
15.2.1. IBM Cloud Bare Metal (Classic) インフラストラクチャー上でプロビジョナーノードを準備する
provisioner ノードを準備するには、以下の手順を実行します。
手順
-
ssh
でプロビジョナーノードにログインします。 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
新規ユーザーの
ssh
キーを作成します。# su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
プロビジョナーノードで新規ユーザーとしてログインします。
# su - kni
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 を参照してください。
以下のパッケージをインストールします。
$ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
ユーザーを変更して、新たに作成したユーザーに
libvirt
グループを追加します。$ sudo usermod --append --groups libvirt kni
firewalld
を起動します。$ sudo systemctl start firewalld
firewalld
を有効にします。$ sudo systemctl enable firewalld
http
サービスを起動します。$ sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --reload
libvirtd
サービスを開始して、これを有効にします。$ sudo systemctl enable libvirtd --now
プロビジョナーノードの ID を設定します。
$ PRVN_HOST_ID=<ID>
以下の
ibmcloud
コマンドで ID を表示できます。$ ibmcloud sl hardware list
パブリックサブネットの ID を設定します。
$ PUBLICSUBNETID=<ID>
以下の
ibmcloud
コマンドで ID を表示できます。$ ibmcloud sl subnet list
プライベートサブネットの ID を設定します。
$ PRIVSUBNETID=<ID>
以下の
ibmcloud
コマンドで ID を表示できます。$ ibmcloud sl subnet list
provisioner ノードのパブリック IP アドレスを設定します。
$ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
パブリックネットワークの CIDR を設定します。
$ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
パブリックネットワークの IP アドレスおよび CIDR を設定します。
$ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
パブリックネットワークのゲートウェイを設定します。
$ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
プロビジョナーノードのプライベート IP アドレスを設定します。
$ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
プライベートネットワークの CIDR を設定します。
$ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
プライベートネットワークの IP アドレスおよび CIDR を設定します。
$ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
プライベートネットワークのゲートウェイを設定します。
$ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
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
の場合は、必要に応じて適切なインターフェイス名を置き換えます。必要な場合は、
provisioner
ノードに対して再度 SSH を実行します。# ssh kni@provisioner.<cluster-name>.<domain>
接続ブリッジが適切に作成されていることを確認します。
$ 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
pull-secret.txt
ファイルを作成します。$ vim pull-secret.txt
Web ブラウザーで、Install on Bare Metal with user-provisioned infrastructure に移動します。ステップ 1 で、Download pull secret をクリックします。
pull-secret.txt
ファイルにコンテンツを貼り付け、そのコンテンツをkni
ユーザーのホームディレクトリーに保存します。
15.2.2. パブリックサブネットの設定
すべての OpenShift Container Platform クラスターノードはパブリックサブネット上になければなりません。IBM Cloud® Bare Metal (Classic) は、サブネット上に DHCP サーバーを提供しません。プロビジョナーノードで個別に設定します。
プロビジョナーノードの準備時に定義された BASH 変数をリセットする必要があります。準備後にプロビジョナーノードを再起動すると、BASH 変数が以前に設定された変数が削除されます。
手順
dnsmasq
をインストールします。$ sudo dnf install dnsmasq
dnsmasq
設定ファイルを開きます。$ sudo vi /etc/dnsmasq.conf
以下の設定を
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 に置き換えます。クラスターのハードウェアのリストを取得します。
$ ibmcloud sl hardware list
各ノードの 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 アドレスになるまで、この手順を繰り返します。各ノードのパブリック
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 アドレスに置き換えます。dnsmasq
を開始します。$ sudo systemctl start dnsmasq
dnsmasq
を有効にして、ノードのブート時に起動できるようにします。$ sudo systemctl enable dnsmasq
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
UDP プロトコルでポート
53
および67
を開きます。$ sudo firewall-cmd --add-port 53/udp --permanent
$ sudo firewall-cmd --add-port 67/udp --permanent
masquerade を使用して、外部ゾーンに
provisioning
を追加します。$ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent
このステップにより、管理サブネットへの IPMI 呼び出しのネットワークアドレス変換が確保されます。
firewalld
設定を再読み込みします。$ sudo firewall-cmd --reload
15.2.3. OpenShift Container Platform インストーラーの取得
インストールプログラムの stable-4.x
バージョンと選択したアーキテクチャーを使用して、OpenShift Container Platform の一般公開の安定バージョンをデプロイします。
$ export VERSION=stable-4.11
$ 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}')
15.2.4. OpenShift Container Platform インストールのデプロイメント
インストーラーの取得後、次のステップとしてこれをデプロイメントします。
手順
環境変数を設定します。
$ export cmd=openshift-baremetal-install
$ export pullsecret_file=~/pull-secret.txt
$ export extract_dir=$(pwd)
oc
バイナリーを取得します。$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
インストーラーを実行します。
$ 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
15.2.5. install-config.yaml ファイルの設定
install-config.yaml
ファイルには、追加の詳細情報が必要です。それらの情報のほとんどは、インストーラーおよび結果として作成されるクラスターが利用可能な IBM Cloud® Bare Metal (Classic) ハードウェアを完全に管理するのに必要な利用可能なハードウェアについての十分な情報として提供されます。ベアメタルへのインストールと IBM Cloud® Bare Metal (Classic) へのインストールの相違点は install-config.yaml
ファイルの BMC セクションで IPMI の特権レベルを明示的に設定する必要があることです。
手順
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>'
注記ibmcloud
コマンドラインユーティリティーを使用して、パスワードを取得できます。$ ibmcloud sl hardware detail <id> --output JSON | \ jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'
<id>
をノードの ID に置き換えてください。クラスター設定を保存するディレクトリーを作成します。
$ mkdir ~/clusterconfigs
install-config.yaml
ファイルをディレクトリーにコピーします。$ cp install-config.yaml ~/clusterconfig
OpenShift Container Platform クラスターをインストールする前に、すべてのベアメタルノードの電源がオフになっていることを確認します。
$ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
以前に試行したデプロイメントにより古いブートストラップリソースが残っている場合は、これを削除します。
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
15.2.6. 追加の install-config
パラメーター
install-config.yaml
ファイルに必要なパラメーター hosts
パラメーターおよび bmc
パラメーターについては、以下の表を参照してください。
パラメーター | デフォルト | 説明 |
---|---|---|
|
クラスターのドメイン名。例: | |
|
|
ノードのブートモード。オプションは、 |
| ブートストラップ VM の静的 IP アドレス。ベアメタルネットワークに DHCP サーバーがない場合に、静的 IP アドレスを使用してクラスターをデプロイする場合は、この値を設定する必要があります。 | |
| ブートストラップ VM のゲートウェイの静的 IP アドレス。ベアメタルネットワークに DHCP サーバーがない場合に、静的 IP アドレスを使用してクラスターをデプロイする場合は、この値を設定する必要があります。 | |
|
| |
|
| |
metadata: name: |
OpenShift Container Platform クラスターに指定される名前。例: | |
networking: machineNetwork: - cidr: |
外部ネットワークの公開 CIDR (Classless Inter-Domain Routing)。例: | |
compute: - name: worker | OpenShift Container Platform クラスターでは、ノードがゼロであってもワーカー (またはコンピュート) ノードの名前を指定する必要があります。 | |
compute: replicas: 2 | レプリカは、OpenShift Container Platform クラスターのワーカー (またはコンピュート) ノードの数を設定します。 | |
controlPlane: name: master | OpenShift Container Platform クラスターには、コントロールプレーン (マスター) ノードの名前が必要です。 | |
controlPlane: replicas: 3 | レプリカは、OpenShift Container Platform クラスターの一部として含まれるコントロールプレーン (マスター) ノードの数を設定します。 | |
|
ベアメタルネットワークに接続されたノード上のネットワークインターフェイス名。OpenShift Container Platform 4.9 以降のリリースのために、NIC の名前を識別するために | |
| プラットフォーム設定なしでマシンプールに使用されるデフォルト設定。 | |
| (オプション) Kubernetes API 通信の仮想 IP アドレス。
この設定は、Machine Network からの予約済み IP として | |
|
|
|
| (オプション) Ingress トラフィックの仮想 IP アドレス。
この設定は、Machine Network からの予約済み IP として |
パラメーター | デフォルト | 説明 |
---|---|---|
|
| プロビジョニングネットワークでノードの IP 範囲を定義します。 |
|
| プロビジョニングに使用するネットワークの CIDR。このオプションは、プロビジョニングネットワークでデフォルトのアドレス範囲を使用しない場合に必要です。 |
|
|
プロビジョニングサービスが実行されるクラスター内の IP アドレス。デフォルトは、プロビジョニングサブネットの 3 番目の IP アドレスに設定されます。例: |
|
|
インストーラーがコントロールプレーン (マスター) ノードをデプロイしている間にプロビジョニングサービスが実行されるブートストラップ仮想マシンの IP アドレス。デフォルトは、プロビジョニングサブネットの 2 番目の IP アドレスに設定されます。例: |
|
| ベアメタルネットワークに接続されたハイパーバイザーのベアメタルブリッジの名前。 |
|
|
プロビジョニングネットワークに接続されている |
|
クラスターのホストアーキテクチャーを定義します。有効な値は | |
| プラットフォーム設定なしでマシンプールに使用されるデフォルト設定。 | |
|
ブートストラップノードのデフォルトのオペレーティングシステムイメージを上書きするための URL。URL にはイメージの SHA-256 ハッシュが含まれている必要があります。例: | |
|
| |
| このパラメーターを、環境内で使用する適切な HTTP プロキシーに設定します。 | |
| このパラメーターを、環境内で使用する適切な HTTPS プロキシーに設定します。 | |
| このパラメーターを、環境内のプロキシーの使用に対する例外のリストに設定します。 |
ホスト
hosts
パラメーターは、クラスターのビルドに使用される個別のベアメタルアセットのリストです。
名前 | デフォルト | 説明 |
---|---|---|
|
詳細情報に関連付ける | |
|
ベアメタルノードのロール。 | |
| ベースボード管理コントローラーの接続詳細。詳細は、BMC アドレス指定のセクションを参照してください。 | |
|
ホストがプロビジョニングネットワークに使用する NIC の MAC アドレス。Ironic は、 注記 プロビジョニングネットワークを無効にした場合は、ホストから有効な MAC アドレスを提供する必要があります。 | |
| このオプションのパラメーターを設定して、ホストのネットワークインターフェイスを設定します。詳細については、オプション: ホストネットワークインターフェイスの設定を参照してください。 |
15.2.7. ルートデバイスのヒント
rootDeviceHints
パラメーターは、インストーラーが Red Hat Enterprise Linux CoreOS (RHCOS) イメージを特定のデバイスにプロビジョニングできるようにします。インストーラーは、検出順にデバイスを検査し、検出された値をヒントの値と比較します。インストーラーは、ヒント値に一致する最初に検出されたデバイスを使用します。この設定は複数のヒントを組み合わせることができますが、デバイスは、インストーラーがこれを選択できるようにすべてのヒントに一致する必要があります。
サブフィールド | 説明 |
---|---|
|
|
|
|
| ベンダー固有のデバイス識別子を含む文字列。ヒントは、実際の値のサブ文字列になります。 |
| デバイスのベンダーまたは製造元の名前が含まれる文字列。ヒントは、実際の値のサブ文字列になります。 |
| デバイスのシリアル番号を含む文字列。ヒントは、実際の値と完全に一致する必要があります。 |
| デバイスの最小サイズ (ギガバイト単位) を表す整数。 |
| 一意のストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。 |
| ベンダー拡張が追加された一意のストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。 |
| 一意のベンダーストレージ ID を含む文字列。ヒントは、実際の値と完全に一致する必要があります。 |
| デバイスがローテーションするディスクである (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"
15.2.8. OpenShift Container Platform マニフェストの作成
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
15.2.9. OpenShift Container Platform インストーラーを使用したクラスターのデプロイ
OpenShift Container Platform インストーラーを実行します。
$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
15.2.10. インストール後
デプロイメントプロセスで、tail
コマンドを install ディレクトリーフォルダーの .openshift_install.log
ログファイルに対して実行して、インストールの全体のステータスを確認できます。
$ tail -f /path/to/install-dir/.openshift_install.log