Red Hatでソリューションアーキテクトをしている田中司恩(@tnk4on)です。 この連載はvSphere環境上にOpenShift Container Platform(以下、OpenShift)およびOpenShift Virtualizationの環境を構築する方法を解説するシリーズです。 可能な限り最小構成での検証環境の構築を目指し、1台のESXi上にOpenShiftをインストールしてネスト仮想環境でOpenShift Virtualizationを実行する方法を解説します。 また環境の構築後はvSphere上の仮想マシンを移行ツール(Migration Toolkit for Virtualization)を使ってOpenShift Virtualization上へ移行することもできます。
初回の本記事では、OpenShiftのインストールについて解説します。 今後の連載予定は下記の通りです。
- 第1回:OpenShiftのインストール(←本記事)
- 第2回:OpenShiftインストール後の作業
- 第3回:共有ストレージの作成(NFS CSIドライバーの構築)
- 第4回:OpenShift Virtualizationのインストールと実行
- 第5回:vSphere仮想マシンの移行
- 【番外編】:共有ストレージの作成(NFSプロビジョナーの構築)
(2024/7/8追記:踏み台サーバー自身のDNSサーバー設定変更に手順を追加しました)
(2024/7/24追記:第3回の内容を改訂し、元の内容を番外編に変更しました)
(2024/9/30追記:必要なDNSレコード表内の、ESXiホストのDNSレコードの表記を修正しました)
(2024/10/2追記:VM作成時のgovcコマンドに、データストアを指定するオプションを追加しました)
-目次-
- OpenShiftインストール作業の概要
- 前提条件
- 全体概要
- ネットワーク要件
- パラメーターシート
- 1. 事前作業
- 2. 踏み台サーバーの構築
- 3. ISOファイルの作成
- 4. OpenShiftノード用仮想マシンの作成
- 5. OpenShiftインストールの実行
- まとめ
OpenShiftインストール作業の概要
全体の作業の流れは下記の通りです。
- 事前作業
- 踏み台サーバーの構築
- ISOファイルの作成
- OpenShiftノード用仮想マシンの作成
- インストールの実行
本記事のゴールは下記の通りです。
- OpenShiftのインストールが完了し、Webコンソールを使って管理画面にアクセスできること
本記事ではAssisted Installerを使用してOpenShiftのインストールを行います。Assisted Installerのインストール部分は下記ドキュメントをベースとします。それ以外の事前作業や踏み台サーバーの構築は本記事のオリジナルです。
Assisted Installer を使用した OpenShift Container Platform のインストール | Red Hat Product Documentation
本記事は普段からvSphereやESXiの操作に慣れ親しんでいる方には抵抗感なくOpenShiftのインストール作業を行えるように、できるだけ詳細に作業内容を記述しています。また作業内容は繰り返す作業を除いて自動化は行わず、各作業をステップバイステップで進められるように記述しています。最初から最後まで手順通りに進めていただければインストールに失敗することはほとんどないはずです。
インストールの再現性を重視し、踏み台サーバーのOSにはRed Hat Enterprise Linux(以下、RHEL) を採用しています。他に使い慣れたOSなどがあればそちらで代用頂いても構いません。
インストールにかかる作業時間は、事前作業からインストールの完了まで2時間あれば十分でしょう(ISOファイルのダウンロード待ち時間を除く)。
前提条件
下記の環境をご準備ください。
vSphere環境
- ESXi:ライセンス適用済みのものを推奨。vSphere Hypervisor(いわゆる無償版ESXi)ではgovcの実行ができなかったり、vSphereからOpenShift Virtualizationへ仮想マシンの移行が行えません。
- vCenter Server:オプションです。ESXi単体でも問題ありません。
- ESXiホストはESX 7.0以上、x86_64アーキテクチャーであること。物理8コア以上推奨(またはHT有効で合計8論理プロセッサー以上)。合計96GB RAMのOpenShiftノードの仮想マシンを実行できること(1台のESXiで構成する場合は128GB RAM以上推奨)。ストレージはPCIe Gen3以上のNVMe SSD相当の性能は必須です。
vSphere操作用アカウント
- ESXi単体の場合:rootユーザー
- vCenter Serverの場合:vCenter SSO管理者の権限で操作するのが構築時における余計なトラブルを防ぐのに有効ですが、vCenter SSO管理者を利用するのが難しい場合は下記のドキュメントを参照し、適切な権限を割り当てた作業ユーザーを作成してください。
23.2. installer-provisioned infrastructure | Red Hat Product Documentation
作業用端末
- 普段利用のmacOSやWindowsなど。Linuxでも可。
- SSHコマンドが実行できること:踏み台サーバーへリモート接続に使用します
- ウェブブラウザが実行できること:OpenShiftのWebコンソールの接続に使用します。Firefox、MS Edge、Chrome、Safariがサポートされています。*1
本連載は検証環境の構築を目的とし実稼働環境でサポートされない構成を含みます。
- OpenShift Virtualizationのサポート対象はベアメタルサーバーです。ネスト仮想マシン上での実行はサポートされません。*2
- VMware ESXi上でサードパーティのハイパーバイザーの実行はサポートされていません*3
下記内容は本連載の対象外とします。
- Multusを使ったマルチネットワークの構成
- インターネット非接続環境でのOpenShiftのインストール構成
全体概要
構成図
OpenShiftインストール時の構成
Red HatがホストするクラウドサービスであるAssisted Installerを使用してOpenShiftのインストールを行います。
OpenShiftインストール完了後の構成
インストール完了後は作業用端末からWebコンソールを使用してOpenShiftに接続します。
OpenShiftの構成(3ノードクラスター)
クラスタの可用性を持ちつつ最小のノード数で構成できる3ノードクラスターを採用します。3ノードクラスターは1台のノードでコントロールプレーンとコンピュートの2つの役割を持ち、最小の3台のノードのみでOpenShiftを構成する方法です。3ノードクラスターはOpenShift v4.5からサポートされています。
なお、OpenShift Virtualizationの仮想マシンをホスト間で移動するライブマイグレーションを使用する場合は、インストール時点で3台以上のコンピュートノードで構成してインストールする必要があります
(ドキュメントより抜粋)ライブマイグレーション機能を使用する場合は、クラスターのインストール時に 複数のワーカーノードが必要です。これは、ライブマイグレーションではクラスターレベルの高可用性 (HA) フラグを true に設定する必要があるためです。HA フラグは、クラスターのインストール時に設定され、後で変更することはできません。クラスターのインストール時に定義されたワーカーノードが 2 つ未満の場合、クラスターの存続期間中、HA フラグは false に設定されます。*4
ネットワーク要件
- API VIPとIngress VIPはVRRPを使用した仮想IPアドレスです。OpenShiftノード内部で実行するKeepalivedによって構成されます。
基本要件
OpenShiftおよび、その他すべての機器からインターネット接続できることが推奨です。プロキシ経由での接続でも問題ありません。 インターネットの出口のファイアーウォールにポートを通す必要がある場合は、下記のドキュメントを参照してください。
OpenShiftクラスターのコンポーネント間の通信も阻害することなく通信が行えるようにしてください。通信に使用されるポートの情報は下記のドキュメントを参照してください。
ネットワーク設計
下記の3つのネットワークを使用してOpenShiftの構成を行います。
- マシンネットワーク:クラスタ内のノードが接続される物理または仮想のネットワーク
- サービスネットワーク:クラスタ内で動作するサービスが使用する仮想ネットワーク
- クラスターネットワーク:OpenShiftクラスタ内のすべてのポッドが通信するための仮想ネットワーク
パラメーターシート
ネットワーク情報
ネットワーク名 | ネットワークアドレス | サブネットマスク | デフォルトゲートウェイ | 備考 |
---|---|---|---|---|
マシンネットワーク | 192.168.1.0 | 24 | 192.168.1.1 | ローカルのネットワーク |
クラスターネットワーク | 10.128.0.0 | 14 | 192.168.1.1 | OpenShiftがデフォルトで作成 |
サービスネットワーク | 172.30.0.0 | 16 | 192.168.1.1 | OpenShiftがデフォルトで作成 |
ホスト情報
項目 | ホスト名 | IPアドレス | 備考 |
---|---|---|---|
OpenShift ノード1 | node-01 | 192.168.1.201 | |
OpenShift ノード2 | node-02 | 192.168.1.202 | |
OpenShift ノード3 | node-03 | 192.168.1.203 | |
Kubernetes API Kubernetes API(内部クラスター通信) |
api api-int |
192.168.1.204 | API 通信に使用する VIP |
Ingress IP | apps | 192.168.1.205 | 外部からのアプリケーショントラフィック通信に使用するVIP |
踏み台サーバー | bastion | 192.168.1.206 | |
ESXiホスト | esxi | 192.168.1.100 |
ドメイン、クラスター名
項目 | 内容 | 設定値 |
---|---|---|
ドメイン | <base_domain> | home.lab |
クラスター名 | <cluster_name> | ocp |
必要なDNSレコード
項目 | 内容 | 設定値 |
---|---|---|
Kubernetes API | api.<cluster_name>. <base_domain> | api.ocp.home.lab |
Kubernetes API(内部クラスター通信) | api-int.<cluster_name>. <base_domain> | api-int.ocp.home.lab |
アプリケーションIngressトラフィック | *.apps.<cluster_name>. <base_domain> | *.apps.ocp.home.lab |
OpenShift ノード1 | <host_name>. <cluster_name>. <base_domain> | node-01.ocp.home.lab |
OpenShift ノード2 | <host_name>. <cluster_name>. <base_domain> | node-02.ocp.home.lab |
OpenShift ノード3 | <host_name>. <cluster_name>. <base_domain> | node-03.ocp.home.lab |
ESXiホスト | <host_name>. <base_domain> | esxi.home.lab |
- PTRレコードは、OpenShiftノード、Kubernetes API(内部クラスター通信も含む)に登録が必要です。
ESXiホストの情報
本記事執筆時に使用したESXiホストのスペック情報です。構成の参考にしてください。
項目 | 内容 | 備考 |
---|---|---|
CPU | Core i7-9700 | |
RAM | 128GB | |
SSD | Samsung 970 EVO Plus 1TB | PCIe Gen3 NVMe接続 |
1. 事前作業
事前作業として下記の作業を行います。
- Red Hatアカウントの作成
- OpenShiftの評価版の申請
- RHELインストールイメージのダウンロード
- SSHキーの作成
1-1 Red Hatアカウントの作成
OpenShiftの評価版の申請やRHELのインストールイメージをダウンロードするためにRed Hatアカウントが必要です。Red HatアカウントはRed Hatのカスタマーポータルから無料で作成可能です。
1-2 OpenShiftの評価版の申請
OpenShiftは60日間のセルフサポートの評価版が利用いただけます。下記の製品トライアルのサイトにアクセスし「無料トライアルを利用する」を押します。 Red Hatアカウントでログインし「製品トライアルを開始されました。」と表示されたら評価版の申請は完了です。
OpenShiftの評価版の申請サイトには下記の記載があります。
同製品の利用可能なすべてのバージョンの 32 コア (64 vCPU) のエンタイトルメント
ここで記載されている32コアとはOpenShiftを実行するホスト上の物理コアをカウントします*5。 本記事では1台のESXiホスト(8コア)で実行しますのでこの制限には引っかかりません。たとえば複数のESXiホストで実行する場合や、物理サーバーでOpenShiftノードを実行する場合は合計で32コアの上限を超えないようにご注意ください。
1-3 RHELインストールイメージのダウンロード
踏み台サーバーのOSにRHEL 9を使用します。OpenShiftと同じくRHELも評価版はありますが、Red Hatアカウント1つに付きRHEL×1台が60日間の使用上の制限となります。個人での利用ならRed Hat Develperに登録すれば無償で16台までRHELが利用できます。この際に合わせてご登録のうえ無償版のRHELをご利用ください。
なお、この無償でRHELを利用できるRed Hat Developer Subscription for Individualsについての詳細は下記FAQを参照ください。
No-cost Red Hat Enterprise Linux Individual Developer Subscription: FAQs | Red Hat Developer
1-4 SSHキーペアの作成
下記を参考に作業用端末でSSHキーペアを作成します。OpenSSHがインストールされている最近のOS環境であればWindows、macOS、Linuxでコマンドは共通です。
ssh-keygen -t ed25519
- 保存先はデフォルトで
~/.ssh/id_ed25519
です - パスフレーズは無しで作成します
下記の2つの鍵ファイルが作成されていることを確認します。
- id_ed25519:秘密鍵
- id_ed25519.pub:公開鍵
(作業用端末で実行) % ls -d ~/.ssh/id_ed25519* /Users/your-username/.ssh/id_ed25519 /Users/your-username/.ssh/id_ed25519.pub
2. 踏み台サーバーの構築
踏み台サーバーはOpenShiftインストール時の各種作業を行ったり、DNSサーバーおよびNFSサーバーを実行するサーバーです。今回はOSにRHEL 9を使用しDNSサーバーにはdnsmasqを使用します。既存のDNSサーバーがある場合はそちらを流用いただいても問題ありません。またその他のコマンドとして下記を使用します。
- OpenShift CLI(oc)
- govc
- Podman
- Skopeo
- wget(httpd-toolsに含む)
- dig(bind-utilsに含む)
- helm(連載第3回でインストールします)
踏み台サーバーはvSphere上の仮想マシンとして作成します。下記はサンプルの仮想マシン構成です。CPU、Memoryは使用環境に合わせて調整ください。
<踏み台サーバーの仮想マシン設定>
項目 | 内容 | 備考 |
---|---|---|
Guest OS | Linux | |
Guest OS Version | Red Hat Enterprise Linux 9 (64bit) | RHEL 9.4 |
CPU | 1 vCPU | |
Memory | 4GB | |
Hard disk 1 | 100GB | Thin provisioned 有効、OS領域 |
Hard disk 2 | 500GB | Thin provisioned 有効、NFSエクスポート領域。連載第3回以降で使用します。 |
SCSI Controller 0 | VMware Paravirtual | |
Network Adapter Type | VMXNET 3 | |
仮想マシンの互換性 | 仮想HW v15以上 | ゲストOSにRHEL 9を使用するため |
事前作業で入手したRHELのインストールイメージを使用してOSのインストールを行います。RHELのインストールは最小構成で問題ありません。ただし、OSのインストール時に一般ユーザーを管理者として作成します(sudoを利用するため)。本記事ではユーザー名:user
を使用します。
2-1 SSH公開鍵のコピー
OSのインストール後、作業用端末からSSH公開鍵をコピーしてパスワードを入力すること無く作業用端末から踏み台サーバーにSSH接続できる設定を行います。
(作業用端末で実行) % ssh-copy-id user@192.168.1.206
フィンガープリントの登録を行い、パスワードを入力するとSSH公開鍵が踏み台サーバーに登録されます。
(踏み台サーバー上で実行。公開鍵がauthorized_keysとして登録される) [user@bastion ~]$ ls -d ~/.ssh/authorized_keys /home/user/.ssh/authorized_keys
SSHコンフィグファイル(~/.ssh/config
)にホスト情報を登録し、簡単なコマンドで踏み台サーバーに接続できる設定を行います。vi
コマンドなどでファイルに下記の内容を追記してください。
(作業用端末で実行) % vi ~/.ssh/config Host bastion HostName 192.168.1.206 User user
踏み台サーバーにSSH接続する際はssh bastion
と入力するだけで接続できます。
(作業用端末で実行) % ssh bastion [user@bastion ~]$
以後は踏み台サーバーのシェルプロンプトは$
のみで記載します。
踏み台サーバーからOpenShiftノードへSSH接続する場合はSSHエージェント転送を利用します。
作業用端末でssh-agent
コマンドを実行しSSHエージェントにSSH秘密鍵を登録します。
(作業用端末で実行) % eval "$(ssh-agent -s)" % ssh-add ~/.ssh/id_ed25519
登録したSSH秘密鍵がリストに表示されることを確認します。
(作業用端末で実行) % ssh-add -l
作業用端末から踏み台サーバーへSSHエージェント転送を有効にして接続するには-A
オプションを使用します。
(作業用端末で実行) % ssh -A bastion
2-2 作業ディレクトリの作成
作業用のディレクトリを作成し、そこへ移動します。
$ mkdir $HOME/work $ cd $HOME/work
以降の作業で作成したファイル類はこの作業ディレクトリに配置することとします。
2-3 パッケージのインストール
サブスクリプションの登録がまだ行われていない場合はsubscription-manager
コマンドを使ってRHELシステムを登録します。なお、Simple Content Access(SCA)が無効の場合はサブスクリプションのアタッチが必要です。SCAが有効の場合はサブスクリプションのアタッチは不要です。
SCA無効の場合の例
$ sudo subscription-manager register --auto-attach
SCA有効の場合の例
$ sudo subscription-manager register
SCA無効/有効、どちらの場合もユーザー名とパスワードを入力して登録を完了します。
RHELシステムのサブスクライブが完了すれば、パッケージマネージャーで追加するツール類をインストールします。
$ sudo dnf install bash-completion dnsmasq podman skopeo bind-utils httpd-tools nfs-utils wget -y
インストールが完了したら、bash-completion
を有効化します
$ exec bash
コマンドに続けてTABキーを押し、コマンド補完が有効になっていることを確認します。
$ podman (<--スペースに続けてTABキーを押す) attach (Attach to a running container) mount (Mount a working container's root filesystem) auto-update (Auto update containers according to their auto-update policy) network (Manage networks) ...
2-4 その他ツール類のインストール
パッケージマネージャーで追加できないツール類を手動でインストールします。
(1) OpenShift CLI(oc)のインストール
OpenShift CLI(以下、ocコマンド)はOpenShiftの各種操作をCLIで行うツールです。 ocコマンドのGUIでの入手方法は製品ドキュメント*6に記載があります。
- Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページに移動します。
- Product Variant ドロップダウンリストからアーキテクチャーを選択します。
- バージョン ドロップダウンリストから適切なバージョンを選択します。
- OpenShift v4.XX Linux Client エントリーの横にある Download Now をクリックして、ファイルを保存します。
GUIを使わず、CLIでocコマンドを直接インストールする場合は下記のコマンドを実行します。
(x86_64アーキテクチャーのLinuxサーバー上で実行する場合の例)
$ curl -L -o - "https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/ocp/latest/openshift-client-linux.tar.gz" | sudo tar -C /usr/local/bin -xvzf - oc
ocコマンドが実行できることを確認します。
$ oc version Client Version: 4.16.0 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
ocコマンドの自動補完を有効化します。
$ oc completion bash > oc_bash_completion $ sudo cp oc_bash_completion /etc/bash_completion.d/ $ exec bash $ oc (<--スペースに続けてTABキーを押す) adm (Tools for managing a cluster) login (Log in to a server) annotate (リソースのアノテーションを更新する) logout (End the current server session) ...
(2) govcのインストール
govcコマンドはGo言語で実装されたvSphere環境を管理するためのOSSのコマンドラインツールです。GUIのみで作業を行うのであれば導入は不要です(無償版のvSphere Hypervisorを使う場合など)。 なお、govcコマンドはRed Hatがサポートするツールではありません。
GitHubの手順を参考にインストールします。
$ curl -L -o - "https://github.com/vmware/govmomi/releases/latest/download/govc_$(uname -s)_$(uname -m).tar.gz" | sudo tar -C /usr/local/bin -xvzf - govc
下記を実行し、govcコマンドのコマンド補完を有効化します
$ sudo curl -L https://raw.githubusercontent.com/vmware/govmomi/master/scripts/govc_bash_completion -o /etc/bash_completion.d/govc $ exec bash $ govc (<--スペースに続けてTABキーを押す) Display all 414 possibilities? (y or n)
govcコマンドを実行するにはGOVC環境変数を設定する必要があります。手動で毎回セットする代わりに下記のファイルを作成しsource
で読み込む方法を行います。慣れている方は.bashrcなどに設定する方法でも構いません。
GOVC環境変数をセットするgovc_env
を作成します。
$ cat > govc_env <<EOF export GOVC_URL=https://192.168.1.100 export GOVC_USERNAME=root export GOVC_PASSWORD=your-password export GOVC_INSECURE=true EOF
GOVC_URL
、GOVC_USERNAME
はvCenter ServerまたはESXiに接続するものを指定します- パスワードは平文でファイル上に保存されます。気になる方はgovc_envファイルから
GOVC_PASSWORD
の行を削除し、export GOVC_PASSWORD
を手動で実行するようにしてください。 GOVC_INSECURE=true
は自己証明書を使っている環境でSSL 証明書の検証が無効化します
source govc_env
を実行し、現在のシェルセッションにGOVC環境変数を設定します。
$ source govc_env
govc env
コマンドでGOVC環境変数がセットされているか確認します。
$ govc env GOVC_USERNAME=root GOVC_PASSWORD=your-password GOVC_URL=192.168.1.100 GOVC_INSECURE=true
govcコマンドの接続テストを行います。govc find
コマンドを実行しリソース情報が取得できることを確認します。
$ govc find / / /ha-datacenter /ha-datacenter/vm /ha-datacenter/host /ha-datacenter/datastore /ha-datacenter/network /ha-datacenter/network/VM Network /ha-datacenter/datastore/NVMe /ha-datacenter/host/esxi.home.lab /ha-datacenter/host/esxi.home.lab/Resources /ha-datacenter/host/esxi.home.lab/esxi.home.lab ...
2-5 dnsmasqの設定
(1) dnsmasq.confのバックアップ
デフォルトのファイルをバックアップします。
$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
(2) dnsmasq.confの作成
新規でdnsmasq.confを作成します
$ sudo vi /etc/dnsmasq.conf
利用する環境に合わせてドメイン名、ホスト名、IPアドレスを修正します。 (dnsmasq.confの例)
user=root port= 53 expand-hosts log-queries log-facility=- local=/home.lab/ domain=home.lab rev-server=192.168.1.0/24,127.0.0.1 server=192.168.1.253 server=192.168.1.1 address=/esxi.home.lab/192.168.1.100 address=/node-01.ocp.home.lab/192.168.1.201 ptr-record=201.1.168.192.in-addr.arpa,node-01.ocp.home.lab address=/node-02.ocp.home.lab/192.168.1.202 ptr-record=202.1.168.192.in-addr.arpa,node-02.ocp.home.lab address=/node-03.ocp.home.lab/192.168.1.203 ptr-record=203.1.168.192.in-addr.arpa,node-03.ocp.home.lab address=/api.ocp.home.lab/192.168.1.204 ptr-record=204.1.168.192.in-addr.arpa,api.ocp.home.lab address=/api-int.ocp.home.lab/192.168.1.204 ptr-record=204.1.168.192.in-addr.arpa,api-int.ocp.home.lab address=/apps.ocp.home.lab/192.168.1.205
log-queries
とlog-facility
:デバッグ目的でログファイル(デフォルトは/var/log/messages
)にクエリログを出力します。不要であれば削除可能です。ptr-record
:OpenShiftノードには逆引き設定が必要です。これがないとインストールが正常に完了しません。*7rev-server
:逆引きを行うDNSサーバーは自分自身(127.0.0.1)を指定します。server
:踏み台サーバーの上位のDNSサーバーを指定します。複数指定する場合はserver
を複数行記述します。
(3) dnsmasqのサービスを自動起動に登録
dnsmasqのサービスを自動起動サービスに登録し、同時に起動します。
$ sudo systemctl enable dnsmasq.service --now
systemctl status
コマンドを実行し、dnsmasqが正常に起動していることを確認します。
$ sudo systemctl status dnsmasq.service ● dnsmasq.service - DNS caching server. Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; preset: disabled) Active: active (running) since Mon 2024-07-01 02:08:14 JST; 28s ago ...
(4) ファイアーウォールのポート解放
踏み台サーバー以外から接続を許可するためにファイアーウォールのポートを開放します。
$ sudo firewall-cmd --add-port=53/udp --permanent $ sudo firewall-cmd --reload
指定したポートが正常に登録されているか確認します。
$ sudo firewall-cmd --list-all | grep 53 ports: 53/udp
(5) 踏み台サーバー自身のDNSサーバー設定変更
踏み台サーバー自身のDNSサーバーの設定を自分自身に変更します。合わせて検索ドメインリストに(ocp.home.lab
)も追加します。
Network Managerを使用する場合とNetWork Managerを無効化して直接/etc/resolv.conf
を直接書き換える手順のどちらかを利用ください。
Network Managerを使用する場合
nmcli con show
コマンドでネットワーク接続名を確認します。
$ nmcli -t -f NAME connection show ens34 lo
DNSサーバーの変更と検索ドメインリストの追加を行います。
$ sudo nmcli con modify ens34 ipv4.dns 127.0.0.1 $ sudo nmcli con modify ens34 ipv4.dns-search home.lab,ocp.home.lab
ネットワーク接続を再起動して設定を反映します。
$ sudo nmcli con down ens34; sudo nmcli con up ens34
NetWork Managerを無効化する場合
NetWork Managerを無効化して、/etc/resolv.conf
を直接書き換えます。
NetWork Managerの設定ファイルであるNetworkManager.conf
を編集し、mainセクションにdns=non
を追加します。
$ sudo vi /etc/NetworkManager/NetworkManager.conf [main] dns=none
NetWork Managerを再起動します。
$ sudo systemctl restart NetworkManager
/etc/resolv.conf
ファイルを編集します。
$ sudo vi /etc/resolv.conf nameserver 127.0.0.1 search home.lab ocp.home.lab
(6) DNSのテスト
正引きと逆引きのテストを行います。登録したDNSレコードが踏み台サーバーおよび踏み台サーバー以外から正常に名前解決できるか確認します。
(正引きの例)
% dig @192.168.1.206 +short api.ocp.home.lab 192.168.1.204
(逆引きの例)
% dig @192.168.1.206 +short -x 192.168.1.201 node-01.ocp.home.lab.
3. ISOファイルの作成
ここからがインストール作業の本番開始です。作業用端末のブラウザを使ったGUIでの操作がメインです。
3-1 クラスターの新規作成
Red Hat Hybrid Cloud コンソールにログインし、下記のOpenShiftのクラスター作成画面に移動します。
Create an OpenShift cluster | Red Hat OpenShift Cluster Manager
「Datacenter」タブへ切り替え、「Create cluster」を押します。
(1) Cluster details
クラスターの詳細情報を入力します。下記のパラメーターを入力し「Next」を押します。
項目 | 設定 | 説明 |
---|---|---|
Cluster name | ocp | |
Base domain | home.lab | |
OpenShift version | OpenShift 4.16.0 | 2024/7/1現在のデフォルト |
CPU architecture | x86_64 | |
Install single node OpenShift(SNO) | チェック無し | |
Edit pull secret | チェック無し | |
Integrate with external partner platforms | No platform integration | |
Include custom manifests | チェック無し | |
Host's network configuration | Static IP,bridges and bonds | OpenShiftノードに固定IPアドレスをセットするため |
Encryption of installation disks | 「Control plane nodes」「Workers」 無効 |
(2) Static network configurations
ネットワークの設定情報を入力します。 下記のパラメーターを入力後、「Next」を押します。
項目 | 設定値 | 説明 |
---|---|---|
Configure via | Form view | |
Networking stack type | IPv4 | |
Use VLAN | チェック無し | |
DNS | 192.168.1.206 | 2つ以上指定する場合はカンマ区切り |
Machine network | 192.168.1.0/24 | |
Default gateway | 192.168.1.1 |
次の画面でOpenShiftノードのMACアドレスとIPアドレスを入力します。 1台目のホストを入力後、「Add another host configration」を押すと次のホストの入力ができるようになります。 下記のパラメーターを入力後、「Next」を押します。
ホスト | MACアドレス | IPアドレス |
---|---|---|
Host1 | 00:50:56:00:00:01 | 192.168.1.201 |
Host2 | 00:50:56:00:00:02 | 192.168.1.202 |
Host3 | 00:50:56:00:00:03 | 192.168.1.203 |
指定された仮想マシンを利用する場合や物理サーバーを使用する場合は、事前にMACアドレスを確認のうえ入力してください
(3) Operators
Operatorはクラスター導入後に追加できます。連載第4回でOpenShift Virtualizationのインストール時に実施します。 ここでは何も選択せず、「Next」を押します。
(4) Host discovery
ここではインストールに必要な設定が入力済みのDiscovery ISO
ファイルを作成し、ダウンロードします。
「Add host」を選択します。
Discovery ISO
はドキュメントでは検出ISO、検出イメージなどど呼ばれますが、以降は単にISOファイルと呼びます。 このISOファイルを使ってOpenShiftノードの起動を行いますが、インストールに必要なファイルはインターネットからダウンロードを行います。 そのためこのISOファイルは一般的なインストーラーとは違い、インストールに必要最低限の情報が入った起動イメージになります。
Add host
下記のパラメーターを入力後、「Generate Discovery ISO」を押します。
項目 | 設定値 | 説明 |
---|---|---|
Provisioning type | Full image file | デフォルトはMinimalですが各ノードが個別にダウンロードを行う作業をスキップするためにFullを使用します |
SSH public key | <YOUR KEY> |
事前に作成済みのSSH公開鍵を入力します |
Configure cluster-wide proxy settings | チェック無し | |
Configure cluster-wide trusted certificates | チェック無し |
Proxy導入済みの環境でインストールを行う場合は「Configure cluster-wide proxy settings」にチェックを入れ、ProxyのURLを設定してください
ブラウザ用のダウンロードボタンが表示されますが、踏み台サーバーでダウンロードを行うのでCLIダウンロード用のコマンドをコピーします。
踏み台サーバーにコマンドをペーストしてISOファイルのダウンロードを実行します。
$ wget -O discovery_image_ocp.iso 'https://api.openshift.com/api/assisted-images/bytoken/..../full.iso'
タイミングによってはダウンロードに30分以上かかる場合があるので、時間に余裕を持って作業を行いましょう
ISOファイルのダウンロードが完了したら次の作業に移ります。
4. OpenShiftノード用仮想マシンの作成
ESXi上にOpenShiftノード用の仮想マシンを作成します。3ノード構成のためMACアドレスを除き、同じパラメーターで3台の仮想マシンを作成します。
<OpenShiftノード用仮想マシンの設定>
項目 | 内容 | 備考 |
---|---|---|
Guest OS | Linux | |
Guest OS Version | Red Hat Enterprise Linux 9 (64bit) | 実際に稼働するOSはRed Hat Enterprise Linux CoreOS(RHCOS)です |
CPU | 8 vCPU | |
Memory | 32GB | |
Hard disk 1 | 100GB | Thin provisioned 有効 |
SCSI Controller 0 | VMware Paravirtual | |
Network Adapter Type | VMXNET 3 | |
CD/DVD drive 1 | discovery_image_ocp.iso | 後ほどホストにアップロード |
Hardware virtualization | Enable | |
disk.enableUUID | TRUE | |
仮想マシンの互換性 | 仮想HW v15以上 | VMware Compatibility GuideのRHEL 9ゲストの情報を参照*8 |
ホスト名 | MACアドレス |
---|---|
node-01 | 00:50:56:00:00:01 |
node-02 | 00:50:56:00:00:02 |
node-03 | 00:50:56:00:00:03 |
4-1 ISOファイルのアップロード
GUIまたはCLIでESXi上へISOファイルをアップロードします。
govcコマンドを使う場合は下記のコマンドを実行してISOファイルをアップロードします。
(データストア名:NVMe、ISOファイル名:discovery_image_ocp.iso の例)
$ govc datastore.upload \ -ds NVMe \ ./discovery_image_ocp.iso \ discovery_image_ocp.iso
4-2 仮想マシンの作成
GUIまたはCLIで仮想マシンの作成を行います。
govcコマンドを使う場合は下記のコマンドを実行して仮想マシンの作成を行います。
$ for node in node-01 node-02 node-03; do case $node in node-01) MAC="00:50:56:00:00:01" ;; node-02) MAC="00:50:56:00:00:02" ;; node-03) MAC="00:50:56:00:00:03" ;; *) echo "Unsupported node: $node" continue ;; esac govc vm.create \ -c=8 \ -m=32768 \ -disk=100GB \ -g=rhel9_64Guest \ -net.adapter=vmxnet3 \ -net.address=$MAC \ -disk.controller=pvscsi \ -iso-datastore=NVMe \ -iso=discovery_image_ocp.iso \ -ds=NVMe \ -on=false \ $node govc vm.change \ -e "disk.enableUUID=true" \ -nested-hv-enabled=true \ -vm=$node done
- ノード名でループを実行し、対応するMACアドレスを変数にセットします
disk.enableUUID
とnested-hv-enabled
はvm.create
時に指定できないため、仮想マシンの作成後にvm.change
でパラメーターを設定します。- ISOファイルが存在しないとコマンドの実行がエラーになります。必ず事前にデータストア上にISOファイルをアップロードしてください。
4-3 仮想マシンの起動
GUIまたはCLIで仮想マシンの起動を行います。
govcコマンドを使う場合は下記のコマンドを実行して仮想マシンの起動を行います。
$ for node in node-01 node-02 node-03; do govc vm.power -on $node done
5. OpenShiftインストールの実行
正常にVMの起動後、数分するとHost Inventory上に起動したOpenShiftノードが自動で表示されます。
- 事前にDNSの設定が適切に行われているとホスト名が自動で設定されます
- ホスト名の左側を展開すると、ホストの詳細が確認できます。CPUアーキテクチャーやハードウェアの情報が確認できます。
インストールに必要な条件を満たすと、StatusがReady
になり「Next」が選択できます。
詳細の確認後、「Next」を押します。
5-1 Storage
ストレージの確認画面です。ISOの起動ディスクとは別にインストール先のディスクが登録されていることを確認します。 確認後「Next」を押します。
- インストール先ディスクの容量が実際の容量(100GB)よりも多いのはSwap領域も含めての数字となっていると思われます。正常な動作です。
5-2 Networking
最初に入力したネットワーク情報が正しく反映されているか確認します。 詳細の確認後、「Next」を押します。
項目 | 設定値 | 説明 |
---|---|---|
Network Management | Cluster-Managed Networking | |
Networking stack type | IPv4 | |
Machine network | 192.168.1.0/24(192.168.1.0-192.168.1.255) | |
API IP | 192.168.1.204 | |
Ingress IP | 192.168.1.205 | |
Use advanced networking | チェック無し | |
Use the same host discovery SSH key | チェック有り | すべてのノードに同じ公開鍵を登録する |
5-3 Review and create
ここまででインストールに必要な情報の入力、ノードのチェックは完了しています。 Preflight checksの各項目がグリーンマークになっていることを確認し「Install cluster」を押してインストールを開始します。
5-4 インストールのモニタリング
インストールが開始すると自動で作業が進むのであとは放置で問題ありません。 環境によりますが、インストールの完了にはおおよそ1時間程度かかります。
インストールの途中で「Download kubeconfig」を押し他場合は
kubeconfig-ingress
という名前のファイルがダウンロードされます。中身が異なりますのでインストール完了後に再度ダウンロードを実行してください。
インストール作業の概要(詳細は省略)
- ノードのうち1台がブートストラップマシンとして構成し、単一ノードのetcdクラスターと一時的なKubernetesコントロールプレーンを起動します。
- 残り2台はコントロールプレーンのインストールを実施します。
- 2台のコントロールプレーンのインストールが完了後、ブーストラップマシンは解除されコントロールプレーンのインストールを実施します。
- コンピュートノードの設定、Cluster Operatorの起動が完了するとインストールが完了します。
5-5 インストールの完了
インストール完了後、「Launch OpenShift Console」を押すとWebコンソールに接続できます。 初期の管理者ユーザー名は「kubeadmin」です。パスワードはクリップボードへのコピーボタンを押すとコピーされます。
「Download kubeconfig」を押しkubeconfigファイルは必ずローカルに保存してください。このkubeconfigファイルを使って
system:admin
としてクラスターにログインが可能です。このkubeconfigファイルのこの画面でのダウンロードは20日間のみ利用可能です。
- デフォルトではOpenShiftの自己署名証明書を使用しているため、ブラウザでの接続時に警告がでます(合計2回)。
- OpenShiftのインストールを行うと、自動で60日間のセルフサポートのトライアルが開始します。ライセンスの設定などの作業は不要です。そのまますべての機能が利用できます。
- インストール直後はInsightsに警告が出ます。しばらくそのままにしていると自動的に警告は消えます。
まとめ
vSphere(ESXi)上に3ノードクラスターのOpenShiftのインストールを行いました。 作業の大半は事前作業や踏み台サーバーの構築であり、OpenShiftのインストール自体は自動で行われるためほとんど何もすることなく簡単に実施が可能です。 Assisted Installerはこれまで難易度の高かったOpenShiftのインストールを簡略化するものです。 今回ご紹介した手順を何度か繰り返せば、実稼働環境向けの物理サーバーなどでもほぼ同じ手順でOpenShiftのインストールが可能です。 是非いろんな環境にOpenShiftをインストールすることにトライしてみてください。
(次回予告) 次回はOpenShiftのインストール後の作業について解説します。
*1:OpenShift Container Platform 4.x Tested Integrations (for x86_x64) - Red Hat Customer Portal
*2:https://docs.redhat.com/ja/documentation/openshift_container_platform/4.15/html/virtualization/installing#preparing-cluster-for-virt
*3:https://knowledge.broadcom.com/external/article?legacyId=2009916
*4:https://docs.redhat.com/ja/documentation/openshift_container_platform/4.15/html-single/installing/index#virt-planning-bare-metal-cluster-for-ocp-virt_preparing-to-install-on-bare-metal
*5:64vCPUの方は、物理CPU上でHyper-Threading(HT)が有効の場合の換算値(1:2)です。本記事では詳細については割愛します。
*6:第2章 OpenShift CLI (oc) | Red Hat Product Documentation
*7:ハマりポイント。このPTRレコードがないとCluster Operatorの起動終盤で進まなくなります。