VMware vSphere環境にrhcos ovaを使ってOpenShift4環境を作ってみる


この投稿はOpenShift Advent Calendar 2019の18日目の記事です。

ここではVMware vSphereで構成されたインフラ上にrhcosのovaをデプロイしてOpenShift4環境を作って一先ず動かすことをゴールとします。
基本的には以下の手順を参考にしています。

ただ、OpenShift4に関連するコンポーネントのインストールや一部設定がないので補足してやってみます。
後、一部Ansibleを使って自動化もしてみます。

検証環境

環境図

今回構成する環境は以下の通りです。

  • Web
    • OpenShiftのコンポーネントがIgnitionファイルをダウンロードするのに必要なWebサーバです
  • DHCP
    • OpenShiftのコンポーネントにIPを払い出すDHCPサーバです
    • OpenShiftのコンポーネントIPは固定化する必要があるのでMacアドレスで固定化します
  • HAProxy
    • サービスへのアクセスやセットアップで使用します

VMスペック

項目 CPU Mem Disk
bootstrap 2 8GB 120GB
master1 4 16GB 120GB
master2 4 16GB 120GB
master3 4 16GB 120GB
worker1 2 8GB 120GB
worker2 2 8GB 120GB

バージョン

項目 バージョン 備考
OpenShift 4.2.4
vCenter 6.7.0
ESXi 6.7.0
rhcos 4.2.0
Ansible 2.9.2 モジュールはdevelを使う
CentOS 7.7 web/dhcp/haproxy/dns OS

ハマったポイント

  • ESXiの時間がズレているとインストール作業が開始されない
  • rhcosのテンプレートをvCenterのインベントリから削除して違うvCenterへ移動したらインストール作業が開始されなかった

関連コンポーネント構築

DNS

bindのインストール

bindをインストールします。

bindの設定と起動

named.confは以下のように設定しています。

ここでは、ゾーンを持っていない場合に問い合わせる上位DNSは 8.8.8.8 を指定しています。

正引きファイルを作成します。

逆引きファイルを作成します。

bindを起動します。

Webサーバ

Apacheインストール

Apacheをインストールします。

Apacheの起動

ここでは(後で作る)Ignitionファイルのダウンロードが出来れば良いのでApacheを起動するだけにします。

DHCPサーバ

DHCPインストール

DHCPをインストールします。

設定ファイル(Ansibleで自動生成する)の変更と起動は後でやります。

HAProxy

HAProxyインストール

HAProxyをインストールします。

HAProxy設定と起動

HAProxyの設定は以下のようにしています。

syslog経由でログを出力するようにrsyslogの設定を変更します。

HAProxy用のログファイルを作成します。

rsyslogを再起動します。

HAProxyを起動します。

OpenShift4

OpenShift4のデプロイ作業はwebサーバ上で行います。
そのため、以下の作業は全てwebサーバで実行します。

Ansibleインストール

virtualenvを用意してAnsibleとpyvmomiをインストールします。

Ansibleを使ってrhcosのクローンを後で作ります。
クローンする時にカスタム値を設定するのですが、2.9.xの vmware_guest と module_utilsの vmware を使うと以下のエラーが発生します。

そのため vmware_guestvmware modules_utilsの最新版をダウンロードします。

必要ツールのインストール

以下のURLから openshift-install-linux-4.2.10.tar.gz をダウンロードして openshift-install コマンドをインストールします。

以下のURLから ockubectl コマンドをダウンロードしてインストールします。

ovaのデプロイ

以下のURLから rhcos-4.2.0-x86_64-vmware.ova をダウンロードします。

以下のplaybookを作成してovaをデプロイします。
vCenterにESXiをホスト名またはFQDNで登録している場合は名前解決ができる必要があります

以下の change me 部分を修正してください。

playbookを実行してovaをデプロイします。

インストール用設定ファイルの作成

OpenShift4をインストールするための設定ファイルを作成します。

pullSecret は以下のURLにアクセスしてログインし VMware vSphere をクリックし Copy Pull Secret をクリックして貼り付けてください。

sshkey はSSHの公開鍵を貼り付けてください。ここでは /root/.ssh/id_rsa.pub の中身を貼り付けています。
change me はvSphere環境に合わせて設定してください。

Ignitionファイルを作成します。
まずは、インストール用のマニフェストを作成します。

ここでは masterSchedulable を無効化します。

Ignitionファイルを作成します。

次にbootstrap VMに埋め込む用の append-bootstrap.ign を作成します。
source には bootstrap.ign のURLを記述します。

bootstrap.ign を上記パスにコピーします。

bootstrap、master、workerに埋め込むIgnitionファイルをbase64でエンコードします。

元のディレクトリに戻ります。

VMのクローン

bootstrap、master、workerのVMをクローンします。
以下のplaybookとテンプレートを作成します。
VMの設定パラメーターに以下のキーと値を設定する必要があるので、Playbookで自動追加します。

key value
guestinfo.ignition.config.data base64でエンコードされた各Ignition
guestinfo.ignition.config.data.encoding base64
disk.EnableUUID TRUE

playbookを実行します。

DHCPサーバの設定が生成されているのでDHCPサーバにコピーしてサービスを再起動します。

VMのパワーオン

クローンしたbootstrap、master、workerのパワーをオンにします。

Bootstrap処理の完了

以下のコマンドを実行して処理完了状況を確認します。

上記のメッセージが表示されたらbootstrapサーバを停止します。

インストールの完了

KUBECONFIG 環境変数にkubeconfigのパスを指定します。

CSRの状態を確認します。

次のコマンドを実行して保留中のCSRを承認します。

ノード情報が表示されるか確認します。

イメージレス取りストレージを空のディレクトリに設定するため emptyDir の設定をします。

もし、以下のエラーが発生した場合はOperatorがコンポーネントの初期化が完了していないので数分待機した後にコマンドを再実行します。

次のコマンドを実行してインストールを完了します。

クライアントにDNS(ここでは 192.168.0.109)を登録するかhostsに以下を追加します。

https://console-openshift-console.apps.openshift4.example.com にアクセスします。

ログイン画面が表示されるので上記で表示された kubeadmin でログインします。

ログインできることを確認します。

参考

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください