11.2. OpenShift Container Platform インストールの環境の設定
11.2.1. IBM Cloud への OpenShift Container Platform インストールのプロビジョナーノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
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 - kniRed 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 knifirewalldを起動します。$ sudo systemctl start firewalldfirewalldを有効にします。$ sudo systemctl enable firewalldhttpサービスを起動します。$ sudo firewall-cmd --zone=public --add-service=http --permanent$ sudo firewall-cmd --reloadlibvirtdサービスを開始して、これを有効にします。$ 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 listprovisioner ノードのパブリック 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 eth2pull-secret.txtファイルを作成します。$ vim pull-secret.txtWeb ブラウザーで、Install on Bare Metal with user-provisioned infrastructure に移動します。ステップ 1 で、Download pull secret をクリックします。
pull-secret.txtファイルにコンテンツを貼り付け、そのコンテンツをkniユーザーのホームディレクトリーに保存します。
11.2.2. パブリックサブネットの設定 リンクのコピーリンクがクリップボードにコピーされました!
すべての OpenShift Container Platform クラスターノードはパブリックサブネット上になければなりません。IBM Cloud® は、サブネット上に DHCP サーバーを提供しません。プロビジョナーノードで個別に設定します。
プロビジョナーノードの準備時に定義された BASH 変数をリセットする必要があります。準備後にプロビジョナーノードを再起動すると、BASH 変数が以前に設定された変数が削除されます。
手順
dnsmasqをインストールします。$ sudo dnf install dnsmasqdnsmasq設定ファイルを開きます。$ 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 dnsmasqdnsmasqを有効にして、ノードのブート時に起動できるようにします。$ sudo systemctl enable dnsmasqdnsmasqが実行中であることを確認します。$ 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 -kUDP プロトコルでポート
53および67を開きます。$ sudo firewall-cmd --add-port 53/udp --permanent$ sudo firewall-cmd --add-port 67/udp --permanentmasquerade を使用して、外部ゾーンに
provisioningを追加します。$ sudo firewall-cmd --change-zone=provisioning --zone=external --permanentこのステップにより、管理サブネットへの IPMI 呼び出しのネットワークアドレス変換が確保されます。
firewalld設定を再読み込みします。$ sudo firewall-cmd --reload
11.2.3. OpenShift Container Platform インストーラーの取得 リンクのコピーリンクがクリップボードにコピーされました!
インストーラーの stable-4.x バージョンを使用して、OpenShift Container Platform の一般公開の安定バージョンをデプロイします。
$ export VERSION=stable-4.9
export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
11.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
11.2.5. install-config.yaml ファイルの設定 リンクのコピーリンクがクリップボードにコピーされました!
install-config.yaml ファイルには、追加の詳細情報が必要です。それらの情報のほとんどは、インストーラーおよび結果として作成されるクラスターが利用可能な IBM Cloud® ハードウェアを完全に管理するのに必要な利用可能なハードウェアについての十分な情報として提供されます。ベアメタルへのインストールと IBM Cloud へのインストールに関する相違点は 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=OPERATOR1 username: root password: <password> bootMACAddress: 00:e0:ed:6a:ca:b42 rootDeviceHints: deviceName: "/dev/sda" - name: openshift-worker-0 role: worker bmc: address: ipmi://<out-of-band-ip>?privilegelevel=OPERATOR3 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 ~/clusterconfigsinstall-config.yamlファイルをディレクトリーにコピーします。$ cp install-config.yaml ~/clusterconfigOpenShift 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
11.2.6. 追加の install-config パラメーター リンクのコピーリンクがクリップボードにコピーされました!
install-config.yaml ファイルに必要なパラメーター hosts パラメーターおよび bmc パラメーターについては、以下の表を参照してください。
| パラメーター | デフォルト | 説明 |
|---|---|---|
|
|
クラスターのドメイン名。例: | |
|
|
|
ノードのブートモード。オプションは、 |
|
|
| |
|
|
| |
|
OpenShift Container Platform クラスターに指定される名前。例: | |
|
外部ネットワークの公開 CIDR (Classless Inter-Domain Routing)。例: | |
| OpenShift Container Platform クラスターでは、ノードがゼロであってもワーカー (またはコンピュート) ノードの名前を指定する必要があります。 | |
| レプリカは、OpenShift Container Platform クラスターのワーカー (またはコンピュート) ノードの数を設定します。 | |
| OpenShift Container Platform クラスターには、コントロールプレーン (マスター) ノードの名前が必要です。 | |
| レプリカは、OpenShift Container Platform クラスターの一部として含まれるコントロールプレーン (マスター) ノードの数を設定します。 | |
|
|
| |
|
| プラットフォーム設定なしでマシンプールに使用されるデフォルト設定。 | |
|
| (オプション) Kubernetes API 通信の仮想 IP アドレス。
この設定は、Machine Network からの予約済み IP として | |
|
|
|
|
|
| (オプション) Ingress トラフィックの仮想 IP アドレス。
この設定は、Machine Network からの予約済み IP として |
| パラメーター | デフォルト | 説明 |
|---|---|---|
|
|
|
|
|
|
|
プロビジョニングに使用するネットワークの CIDR。このオプションは、 |
|
|
|
プロビジョニングサービスが実行されるクラスター内の IP アドレス。デフォルトは、 |
|
|
|
インストーラーがコントロールプレーン (マスター) ノードをデプロイしている間にプロビジョニングサービスが実行されるブートストラップ仮想マシンの IP アドレス。デフォルトは、 |
|
|
|
|
|
|
|
|
|
| プラットフォーム設定なしでマシンプールに使用されるデフォルト設定。 | |
|
|
ブートストラップノードのデフォルトのオペレーティングシステムイメージを上書きするための URL。URL にはイメージの SHA-256 ハッシュが含まれている必要があります。例: | |
|
|
クラスターノードのデフォルトオペレーティングシステムを上書きするための URL。URL には、イメージの SHA-256 ハッシュを含める必要があります。例: | |
|
|
| |
|
| このパラメーターを、環境内で使用する適切な HTTP プロキシーに設定します。 | |
|
| このパラメーターを、環境内で使用する適切な HTTPS プロキシーに設定します。 | |
|
| このパラメーターを、環境内のプロキシーの使用に対する例外の一覧に設定します。 |
ホスト
hosts パラメーターは、クラスターのビルドに使用される個別のベアメタルアセットの一覧です。
| 名前 | デフォルト | 説明 |
|---|---|---|
|
|
詳細情報に関連付ける | |
|
|
ベアメタルノードのロール。 | |
|
| ベースボード管理コントローラーの接続詳細。詳細は、BMC アドレス指定のセクションを参照してください。 | |
|
|
ホストが 注記
|
11.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"
11.2.8. OpenShift Container Platform マニフェストの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform マニフェストを作成します。
$ ./openshift-baremetal-install --dir ~/clusterconfigs create manifestsINFO 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
11.2.9. OpenShift Container Platform インストーラーを使用したクラスターのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform インストーラーを実行します。
$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
11.2.10. インストール後 リンクのコピーリンクがクリップボードにコピーされました!
デプロイメントプロセスで、tail コマンドを install ディレクトリーフォルダーの .openshift_install.log ログファイルに対して実行して、インストールの全体のステータスを確認できます。
$ tail -f /path/to/install-dir/.openshift_install.log