Hatの福岡オフィスでソリューションアーキテクトをしている田中司恩です。4.1をUPIでベアメタル環境にインストールする方法について解説します。基本的にはインストールドキュメントの要約になりますが、初めてOpenShiftに触れる方にも分かりやすいように順を追って説明していきます。*1なお、AWSへのUPIインストールについては、前の記事で林さんが書かれていますのでそちらを参考にしてください。rheb.hatenablog.com2019/10/30追記。4.2がGAになりましたので、4.1からの変更点について下記の記事にまとめました。rheb.hatenablog.com本記事の章立てはこのようになります。4.1をインストールし手順について理解する」です。4.1のUPIインストールの概要から説明していきます。ドキュメントインストール方法について記載されたドキュメントは日本語、英語どちらもあります。本記事では下記の日本語ドキュメントを対象とします。4のインストール方法はIPIとUPIの2種類があります。Infrastructure」の略で、自動でインフラ環境を作成してインストールを行う方法です。Infrastructure」の略で、ユーザーがインフラ環境を事前に用意してインストールを行う方法です。ユーザーが環境を準備する手間はありますが、自由に用意した環境にインストールを行うことができます。現時点でUPIで対応しているインストール環境は下記の通りです。ProviderUPIインストール構成UPIではユーザーが自由に環境を用意できる反面、必要な要件を満たすインフラの知識が無いと、どのようにインフラ環境を構成すればよいか悩むことと思います。そこで、本記事では下記の検証環境をサンプルとして説明を進めていきます。次に、構成に必要なものについて説明していきます。UPIインストールにおいて、ここが一番時間のかかるポイントになります。この事前準備がきっちりと出来ていれば、インストール作業自体はそれほど時間はかかりません。*6ノードの準備UPIインストールで必要なノードの情報は下記の通りです。CoreOS(RHCOS)」を使用します*7インストーラー、イメージの入手この記事の検証環境ではRHCOSはISO起動、BIOSマシンを使用します。実際に必要なファイルの例は下記のようになります。OpenShiftのリリースバージョンと必ずしも一致するものではありません。製品のダウンロードについては、試用や評価に関する解説記事ができましたのでこちらを参照ください。※※※rheb.hatenablog.comネットワーク要件UPIインストールに必要なネットワークの要件について説明します。ユーザーによってプロビジョニングされるインフラストラクチャーの作成です。内では、各ノードの全ての通信が通る構成となります。インターネットへは自由に通信ができる構成です。設ける場合は、OpenShiftの内部で使用するネットワークアドレスと被らないようにする必要があります。ドキュメントでは下記のアドレスが例として載っています。アドレスプール)検証環境でも上記をそのまま使用します。検証環境のネットワーク設計は下記のようになります。DHCPRHCOSマシンは初回起動時にDHCPによるIPアドレスの割り当てが必要です。検証環境では、MACアドレスを指定して固定でホスト名、IPアドレスを割り当てる方法を行います。検証環境のDHCPの設定例は下記のようになります。DNS下記の指定されたレコードの名前解決が必須です。Master検証環境で登録したDNSの設定例は下記のようになります。LBの内側アドレスを指定。ワイルドカードDNSレコード。Serverドキュメントには詳細な記載はありませんが、インストール作業に必要なファイルをHTTPサーバーに配置する必要があります。Serverを稼動し、Web公開ディレクトリに必要なファイルの配置を行います。80→8008へ変更しています。*13検証環境で使用するWeb公開ディレクトリのサンプルは下記のようになります。Imageの元のファイル名は長いので、リンクで短縮名にしています。リネームして配置しても問題ありません。検証環境では、RHEL8のサーバーを1台用意してネットワーク要件で必要なサービスを全てここで稼動しています。踏み台サーバーとして備えるべき、必要な要件は下記の通りです。2つのネットワークカード(社内ネットワーク、検証用ネットワークに接続)社内ネットワークからインターネットへアクセスが可能な固定IPを一つネットワーク要件で上げたサービスが稼動できるリソースを持つマシン詳細な設定内容については、記事の最後の「参考:踏み台サーバーの構築」を参考にしてください。社内ネットワークから踏み台サーバーを経由して、検証用ネットワークにアクセスするために使用します。社内ネットワークのルーターなどに検証用ネットワークへのルーティングの追加が難しい場合は、操作端末に静的ルートを追加して対応してください。Client:踏み台サーバーにログインしてopenshift-installコマンドの実行、他。踏み台サーバーから各ノードにSSH接続してデバッグ操作、ログ確認など。Consoleへの接続用。SSHキーペアの準備この作業では、各ノードに対してSSH公開鍵認証でアクセスするために必要なSSHキーペアの作成を行います。プライベートキーの生成およびエージェントへの追加です。*16ドキュメントでは下記のコマンドが例として載っています。~/.ssh/new_rsaドキュメントではキーの生成後にssh-agentの起動の手順がありますが、UPIインストールをする目的においては必須ではありませんので、飛ばしても大丈夫です。*17UPIインストールの実施手順ここから、実際のインストール作業について説明していきます。インストールのステップインストールの進行は下記の順で行います。各項目はドキュメントの3.1.8〜3.1.15に対応します。各項目の作業内容は基本的にドキュメント通りとなりますので、詳細はドキュメントの該当箇所を参照ください。時間後に期限が切れる証明書が含まれます。万が一24時間を超えてインストールを実行する場合は、再度1.bから行ってください。インストール設定ファイルの手動作成この作業は踏み台サーバーで行います。ここでの作業の目標は、インストールディレクトリの作成と、インストール設定ファイルinstall-config.yamlを作成することです。注意点は、ドキュメントにも記述がある通り、install-config.yamlをインストールディレクトリ以外に保存しておくことです。bare-metal/検証環境のinstall-config.yamlは下記のような内容になります。Secretを押してコピーした内容を貼り付けます。https://cloud.redhat.com/openshift/install/metal/user-provisionedsshKey:には、事前準備で用意したSSH公開鍵の内容(~/.ssh/new_rsa.pub)を貼り付けます。引き続きこの作業も踏み台サーバーで行います。設定ファイルなどを作成します。行うことは下記のコマンドを1行実行するだけです。--dir=bare-metalこのコマンドの実行後に、インストールディレクトリ内のinstall-config.yamlは削除されます。実行後のインストールディレクトリは下記のようになります。Serverの公開ディレクトリにコピーします。検証環境では下記のようになります。マシンの作成この作業は各ノードのコンソール画面で行います。ここでは、各ノードのベースOSのRHCOSを用意して、起動→初期パラメーターの入力を行うところまでを行います。用意した各ノードをISOイメージで起動します。Nodeからコンフィグファイルを取得するプロセスがあります。Nodeを先に起動するのが望ましいです。URLの指定先を除く)。InstallerのGUI画面が表示されます。CoreOSが選択されていますので、そのままエンターキーを押します。URLの入力を求められますので、デフォルトの入力内容を消して指定のURLパスを入力し、エンターキーを押します。URLの入力このタイミングでファイルにアクセスできるかチェックが行われます。URLの入力を求められます。先程と同様に、デフォルトの入力内容を消して指定のURLパスを入力し、エンターキーを押します。URLの入力ここも、先程と同様にファイルにアクセスできるかチェックが行われます。*.ignファイルは、各ノードの種類に合わせて変更します最後に、インストール先デバイスの指定を求められます。sdaを選択し、OKを押します。CoreOSが起動します。この作業を全ノードについて行います。Consoleへのログインまでは、踏み台サーバーでの作業となります。前項1.cの終了時点から、ブートストラッププロセスは自動的に進行しています。ここでは、下記のコマンドを実行し、ブートストラッププロセスの進行と完了をモニタリングします。bootstrap-complete下記のような表示になるとブートストラッププロセスが完了したことが分かります。resources30分以上掛かっても完了しない場合は、事前準備が不足か間違っている可能性が高いです。クラスターへのログインここでは、kubeadmin認証情報をエクスポートし、デフォルトシステムユーザーでログインできることを確認します。whoamiの結果、system:adminが返ってくれば完了です。ブートストラッププロセスの完了直後すぐだと、エラーが返ってくることがあります。その場合は、少し時間を置いて再度実行します。承認ここでは、各ノードがクラスタに追加された際に作成される証明書署名要求が、全て承認されているか確認します。v1.13.4+b626c2fe1証明書署名要求の承認状態を確認します。なっていなければ、ドキュメントの手順で手動で承認を行なってください。初期設定ここでは、全てのOperatorが正常に稼動していること確認します。clusteroperatorsの結果をモニタリングします。Operatorが次々と立ち上がっていく様子が確認できます。最終的に全てのOperatorのステータスにおいてAVAILABLEがTRUE、DEGRADEDがFALSEになることがゴールです。*21※ストレージのイメージレジストリーへの提供(対象ドキュメント:3.1.14.1)image-registryoperatorについては、自動的にAVAILABLEがTRUEにはなりません。下記のコマンドを実行して、空のディレクトリを指定します。'{"spec":{"storage":{"emptyDir":{}}}}'ドキュメントにも記載はありますが、このオプションは実稼働用以外のクラスターにのみ設定します。この記事ではインストールの完了を目標としますので、このオプションを実行します。本番運用時は適切な設定に変更してください。詳細な設定方法は下記を参照。ベアメタルの場合のレジストリーストレージの設定Operatorが正常に起動した状態は下記のようになります。UPIのインストールの完了インストール作業の最終段階です。前項2.dで全てのOperatorが正常に動作していることを確認後、下記のコマンドを実行します。Consoleへのログイン情報が表示されます。これでUPIのインストール作業は完了です。Consoleへログインします。Consoleにアクセスして、クラスタが正常に稼動しているか確認します。検証環境では、下記のアドレスにアクセスします。Statusでクラスターのステータスに問題が無ければ正常稼動しています。4.1をベアメタル環境にインストールする手順の紹介でした。ここから先はOpenShiftに実際に触れる世界になります。本記事の検証環境で使用した踏み台サーバーを構築するための設定のサンプルを載せておきます。/etc/haproxy/haproxy.cfgサンプルコンフィグ(global,defaultsは初期コンフィグから変更無し。4の基本のアーキテクチャについて理解が深まり、他の環境へのインストールにも応用ができるようになると思います*2:openshift.comにも英語のみですが同様のドキュメントがあります。Managerからリンクしているドキュメントはこちらになります。本記事の内容と合わせて読み進め下さい。各リリースごとに変更されない可能性があります。バージョンと等しいか、それ以下のバージョンの内で最も新しいバージョンのイメージをダウンロードする必要があります。バージョンに一致するイメージのバージョンを使用します。登録されている番号を使用*14:リリースが増えてた場合を見越して指定しやすいようにしています*15:RHCOSの各ノードへは公開鍵認証方式でのSSH接続が必要です。」とありますが、実際にはBootstrap,Master,WorkerいづれのノードにもSSHでアクセスできます。*17:ログの確認などの手順はまた別記事でまとめられればと思います*18:baseDomain(ドメイン名)とname(クラスタ名)以外はドキュメントのサンプル通り。pullSecretとsshKeyの内容はシングルクォーテーションで囲まれるように。*19:全台同時起動でも問題無いです。Nodeは待機します。*20:あくまで経験上ですが、繰り返し新規クラスタを作成している中ではここは必ず全て承認状態になっていました。*21:ドキュメントには「全てのOperatorがAVAILABLEの場合インストールを完了することができます」と記載があります。実際、一部にDEGRADEDがある状態でもコマンド上はインストール完了になります。Console上ではエラーが発生していたり、OpenShiftとしての構築が未完了の状態になることがあります。HatでOpenShiftのサポートエンジニアをしている林です。各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。