ゼロからはじめるOpenShift Virtualization(1)OpenShiftのインストール

Red Hatでソリューションアーキテクトをしている田中司恩(@tnk4on)です。 この連載はvSphere環境上にOpenShift Container Platform(以下、OpenShift)およびOpenShift Virtualizationの環境構築を解説するシリーズです。 可能な限り最小構成での検証環境の構築を目指し、1台のESXi上にOpenShiftをインストールしてネスト仮想環境でOpenShift Virtualizationを実行する方法を解説します。 また環境の構築後はvSphere上の仮想マシンを移行ツール(Migration Toolkit for Virtualization)を使ってOpenShift Virtualization上へ移行することもできます。

初回の本記事ではOpenShiftのインストールについて解説します。 今後の連載予定は下記の通りです。

-目次-


OpenShiftインストール作業の概要

全体の作業の流れは下記の通りです。

  1. 事前作業
  2. 踏み台サーバーの構築
  3. ISOファイルの作成
  4. OpenShiftノード用仮想マシンの作成
  5. インストールの実行

本記事のゴールは下記の通りです。

  • 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インストール時の構成
OpenShiftインストール時の構成

OpenShiftインストール完了後の構成

インストール完了後は作業用端末からWebコンソールを使用してOpenShiftに接続します。

OpenShiftインストール完了後の構成
OpenShiftインストール完了後の構成

OpenShiftの構成(3ノードクラスター)

クラスタの可用性を持ちつつ最小のノード数で構成できる3ノードクラスターを採用します。3ノードクラスターは1台のノードでコントロールプレーンとコンピュートの2つの役割を持ち、最小の3台のノードのみでOpenShiftを構成する方法です。3ノードクラスターはOpenShift v4.5からサポートされています。

1.2. 新機能および機能拡張 | Red Hat Product Documentation

なお、OpenShift Virtualizationの仮想マシンをホスト間で移動するライブマイグレーションを使用する場合は、インストール時点で3台以上のコンピュートノードで構成してインストールする必要があります

(ドキュメントより抜粋)ライブマイグレーション機能を使用する場合は、クラスターのインストール時に 複数のワーカーノードが必要です。これは、ライブマイグレーションではクラスターレベルの高可用性 (HA) フラグを true に設定する必要があるためです。HA フラグは、クラスターのインストール時に設定され、後で変更することはできません。クラスターのインストール時に定義されたワーカーノードが 2 つ未満の場合、クラスターの存続期間中、HA フラグは false に設定されます。*4

ネットワーク要件

ネットワーク構成図
ネットワーク構成図

  • API VIPとIngress VIPはVRRPを使用した仮想IPアドレスです。OpenShiftノード内部で実行するKeepalivedによって構成されます。

基本要件

OpenShiftおよび、その他すべての機器からインターネット接続できることが推奨です。プロキシ経由での接続でも問題ありません。 インターネットの出口のファイアーウォールにポートを通す必要がある場合は、下記のドキュメントを参照してください。

25.2. ファイアウォールの設定 | Red Hat Product Documentation

OpenShiftクラスターのコンポーネント間の通信も阻害することなく通信が行えるようにしてください。通信に使用されるポートの情報は下記のドキュメントを参照してください。

第25章 任意のプラットフォームへのインストール | Red Hat Product Documentation

ネットワーク設計

下記の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>. <cluster_name>. <base_domain> esxi.ocp.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のカスタマーポータルから無料で作成可能です。

Red Hatカスタマーポータル
Red Hatカスタマーポータル

1-2 OpenShiftの評価版の申請

OpenShiftは60日間のセルフサポートの評価版が利用いただけます。下記の製品トライアルのサイトにアクセスし「無料トライアルを利用する」を押します。 Red Hatアカウントでログインし「製品トライアルを開始されました。」と表示されたら評価版の申請は完了です。

Red Hat OpenShift Container Platform | 製品トライアル

OpenShift Container Platformの評価版申請
OpenShift Container Platformの評価版申請

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をご利用ください。

Red Hat Enterprise Linux Overview | Red Hat Developer

なお、この無償でRHELを利用できるRed Hat Developer Subscription for Individualsについての詳細は下記FAQを参照ください。

No-cost Red Hat Enterprise Linux Individual Developer Subscription: FAQs | Red Hat Developer

Red HatカスタマーポータルでRHELのインストールイメージのダウンロード
Red HatカスタマーポータルでRHELのインストールイメージのダウンロード

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が有効の場合はサブスクリプションのアタッチは不要です。

Simple Content Access - Red Hat Customer Portal

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に記載があります。

  1. Red Hat カスタマーポータルの OpenShift Container Platform ダウンロードページに移動します。
  2. Product Variant ドロップダウンリストからアーキテクチャーを選択します。
  3. バージョン ドロップダウンリストから適切なバージョンを選択します。
  4. 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がサポートするツールではありません。

govmomi/govc/README.md at main · vmware/govmomi · GitHub

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_URLGOVC_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-querieslog-facility:デバッグ目的でログファイル(デフォルトは/var/log/messages)にクエリログを出力します。不要であれば削除可能です。
  • ptr-record:OpenShiftノードには逆引き設定が必要です。これがないとインストールが正常に完了しません。*7
  • rev-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)も追加します。

$ 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」 無効

Cluster details
Cluster details

(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

 Static network configurations
Static network configurations(1/2)

次の画面で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アドレスを確認のうえ入力してください

Static network configurations(2/2)
Static network configurations(2/2)

(3) Operators

Operatorはクラスター導入後に追加できます。連載第4回でOpenShift Virtualizationのインストール時に実施します。 ここでは何も選択せず、「Next」を押します。

Operators
Operators

(4) Host discovery

ここではインストールに必要な設定が入力済みのDiscovery ISOファイルを作成し、ダウンロードします。 「Add host」を選択します。

Discovery ISOはドキュメントでは検出ISO、検出イメージなどど呼ばれますが、以降は単にISOファイルと呼びます。 このISOファイルを使ってOpenShiftノードの起動を行いますが、インストールに必要なファイルはインターネットからダウンロードを行います。 そのためこのISOファイルは一般的なインストーラーとは違い、インストールに必要最低限の情報が入った起動イメージになります。

Host discovery
Host discovery

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 チェック無し

Full image fileを選択し、ISOファイルを作成する
Full image fileを選択し、ISOファイルを作成する

Proxy導入済みの環境でインストールを行う場合は「Configure cluster-wide proxy settings」にチェックを入れ、ProxyのURLを設定してください

ブラウザ用のダウンロードボタンが表示されますが、踏み台サーバーでダウンロードを行うのでCLIダウンロード用のコマンドをコピーします。

CLIダウンロード用のコマンドをコピーする
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 \
    -on=false \
    $node

  govc vm.change \
    -e "disk.enableUUID=true" \
    -nested-hv-enabled=true \
    -vm=$node
done
  • ノード名でループを実行し、対応するMACアドレスを変数にセットします
  • disk.enableUUIDnested-hv-enabledvm.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ノードが自動で表示されます。

起動したOpenShiftノードが表示される
起動したOpenShiftノードが表示される

  • 事前にDNSの設定が適切に行われているとホスト名が自動で設定されます
  • ホスト名の左側を展開すると、ホストの詳細が確認できます。CPUアーキテクチャーやハードウェアの情報が確認できます。

インストールに必要な条件を満たすと、StatusがReadyになり「Next」が選択できます。 詳細の確認後、「Next」を押します。

5-1 Storage

ストレージの確認画面です。ISOの起動ディスクとは別にインストール先のディスクが登録されていることを確認します。 確認後「Next」を押します。

Storage
Storage

  • インストール先ディスクの容量が実際の容量(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 チェック有り すべてのノードに同じ公開鍵を登録する

Networking
Networking

5-3 Review and create

ここまででインストールに必要な情報の入力、ノードのチェックは完了しています。 Preflight checksの各項目がグリーンマークになっていることを確認し「Install cluster」を押してインストールを開始します。

Review and create(1/3)
Review and create(1/3)

Review and create(2/3)
Review and create(2/3)

Review and create(3/3)
Review and create(3/3)

5-4 インストールのモニタリング

インストールが開始すると自動で作業が進むのであとは放置で問題ありません。 環境によりますが、インストールの完了にはおおよそ1時間程度かかります。

インストールの進捗状況を確認
インストールの進捗状況を確認

インストールの途中で「Download kubeconfig」を押し他場合はkubeconfig-ingressという名前のファイルがダウンロードされます。中身が異なりますのでインストール完了後に再度ダウンロードを実行してください。

インストール作業の概要(詳細は省略)

  1. ノードのうち1台がブートストラップマシンとして構成し、単一ノードのetcdクラスターと一時的なKubernetesコントロールプレーンを起動します。
  2. 残り2台はコントロールプレーンのインストールを実施します。
  3. 2台のコントロールプレーンのインストールが完了後、ブーストラップマシンは解除されコントロールプレーンのインストールを実施します。
  4. コンピュートノードの設定、Cluster Operatorの起動が完了するとインストールが完了します。

5-5 インストールの完了

インストール完了後、「Launch OpenShift Console」を押すとWebコンソールに接続できます。 初期の管理者ユーザー名は「kubeadmin」です。パスワードはクリップボードへのコピーボタンを押すとコピーされます。

インストールの完了画面
インストールの完了画面

「Download kubeconfig」を押しkubeconfigファイルは必ずローカルに保存してください。このkubeconfigファイルを使ってsystem:adminとしてクラスターにログインが可能です。このkubeconfigファイルのこの画面でのダウンロードは20日間のみ利用可能です。

OpenShift Webコンソールのログイン画面
OpenShift Webコンソールのログイン画面

  • デフォルトではOpenShiftの自己署名証明書を使用しているため、ブラウザでの接続時に警告がでます(合計2回)。

OpenShiftのWebコンソール画面
OpenShiftのWebコンソール画面

  • OpenShiftのインストールを行うと、自動で60日間のセルフサポートのトライアルが開始します。ライセンスの設定などの作業は不要です。そのまますべての機能が利用できます。
  • インストール直後はInsightsに警告が出ます。しばらくそのままにしていると自動的に警告は消えます。

まとめ

vSphere(ESXi)上に3ノードクラスターのOpenShiftのインストールを行いました。 作業の大半は事前作業や踏み台サーバーの構築であり、OpenShiftのインストール自体は自動で行われるためほとんど何もすることなく簡単に実施が可能です。 Assisted Installerはこれまで難易度の高かったOpenShiftのインストールを簡略化するものです。 今回ご紹介した手順を何度か繰り返せば、実稼働環境向けの物理サーバーなどでもほぼ同じ手順でOpenShiftのインストールが可能です。 是非いろんな環境にOpenShiftをインストールすることにトライしてみてください。

(次回予告) 次回はOpenShiftのインストール後の作業について解説します。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。