最近、KubernetesやOpenShiftを操作する機会が増えてきたので、個人検証環境用としてAWS上にOpenShiftをインストールしてみました。本記事ではその手順についてご紹介します。OpenShiftをパブリッククラウド上に構築することは珍しくありませんので手順についてはナレッジがある程度普及しておりますが、これからOpenShiftを触り始める方々の一助となればと思います。
OpenShiftとは
手順の前にOpenShiftについて簡単に説明すると、OpenShiftはコンテナオーケストレーションシステムKubernetesのエンタープライズ向けのディストリビューションです。RedHat社から提供されています。 Kubernetesはコンテナオーケストレーションのデファクトスタンダードと言えるほど、非常に優れたコンテナ運用の自動化を実現するものですが、実際に導入するにあたっては監視やロギングなどをシステム提供者側が検討・実装していく必要があるため商用環境でそのまま利用するには敷居が高く感じる場面も多くあります。 OpenShiftはKubernetesをコアコンポーネントとしつつ様々な付帯サービスをOpenShift内のデフォルトの機能として提供しています。また、長期サポートや脆弱性対応のセキュリティパッチの提供など、商用サービスにKubernetesを利用したい企業向けの機能が揃ったプロダクトとなっています。
OpenShiftのインストール方法
OpenShiftのインストール方法については大きく分けて以下の2つがあります。
今回はIPIでOpenShiftのインストールを行います。
※OpenShiftに限らずハードな方法で基盤構築を行うとそのアーキテクチャを理解しやすいというメリットもありますので、UPIでのインストールについても別途ご紹介したいと思います。
IPIでのOpenShiftインストール
それではOpenShiftをインストールしていきます。全体的な手順については以下のようになります。
※環境作成後はAWSの従量課金が発生しますので、OpenShiftを利用しない時は忘れずに環境を削除しましょう。
1.事前準備
OpenShiftのインストールを実施する前に以下を準備します。OpenShift installerは2022年8月現在ではLinuxかMac OSでのみ実行できますので、作業端末としてどちらかを用意します。Windows端末で実行したい場合はVirtual Boxなどの仮想環境をローカルPCに作成し、仮想環境情のLinuxサーバからでも作業可能です。今回はAWS上に作業用サーバとしてAmazon Linux2をデプロイし各種インストールのための設定を行いました。
・公開ドメインの準備
OpenShiftではOpenShiftクラスタのベースドメインが必要になりますので、OpenShift環境を構築する前に自前で用意しておきます。今回はAWSのRoute53で新規ドメインを作成し、パブリックホストゾーンとして公開しました。本記事では便宜的にドメイン名を「sample-openshift10.com」としておきます。
・作業用端末にOpenShift IPI インストーラをセットアップする
RedHatのアカウントでhttps://console.redhat.com/にログインし、[Openshift]>[Create Cluster]とクリックし、「Run it yourself」の項目で「AWS (x86_64」を選択します。 下記の画面でインストールタイプをIPIかUPIを選択できるので、[Installer-provisioned infrastructure]をクリックします。
OpenShiftインストーラのダウンロード画面に遷移しますので、[Download installer]ボタンを右クリックして、リンクのアドレスをコピーします(作業端末に直接インストーラをダウンロードしてもokです)。 また、インストール時に必要になりますのでPull secretについてもダウンロードして、大切に保管しておきましょう。
作業端末に戻り以下のコマンドを実行しOpenShiftインストーラをインストールします。URLについては先ほどコピーしたインストーラのリンクになります。解凍したパッケージの移動先のパスは各個人の作業環境のものに置き換えてください。
>curl -O https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-install-linux.tar.gz >tar xvf openshift-install-linux.tar.gz >sudo mv ./openshift-install /usr/local/bin
openshift-install versionコマンドで正常にインストーラを実行できるかを確認します。以下のような出力があれば正常にセットアップできています。今回は2022年8月の最新バージョンである4.10がインストールされます。
・SSH鍵の作成 OpenShiftのマスターノードに接続するためのSSH鍵を作成しておきます。Linuxの場合はssh-keygenコマンドで鍵を作成し、ssh-addコマンドで鍵を登録できます。本環境では.$HOME/.ssh/ディレクトリに公開鍵を配置しています。
本手順ではAWS上にOpenShiftを構築するので作業時にAWSへの認証が必要になります。作業端末にAWS CLI v2をインストールして、awsコマンドを利用できるようにしておきます。AWS CLIのインストール手順については以下の公式ページを参照ください。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
また、インストール時にAWS各種リソースをデプロイするための権限が必要になりますので、認証に利用するIAMユーザには適した権限を付与しておきます。設定手順の詳細は割愛しますが本記事ではAministratorAccessポリシーをIAMユーザに割り当てています。
事前準備としては以上になりますが、証明書を設定していないのでOpenShiftコンソールへのログイン時やコンテナアプリケーションにブラウザで接続する際には証明書の警告が発生します。証明書の警告を抑止したい場合は、別途証明書を準備しOpenShiftクラスター作成後に証明書を適用する必要があります。
2.Openshiftクラスタの作成
OpenShiftをインストールする前にどのような構成でインストールを行うかを決めるためのYAML形式の構成ファイルを作成します。作業用ディレクトリ「ocp」を作成して、その中で構成ファイルの作成、インストールの実行を行います。構成ファイルは「openshift-install create install-config」コマンドを実行し、ダイアログ形式で設定値を入力することで作成可能です。
>mkdir ocp >cd ocp >openshift-install create install-config
「openshift-install create install-config」コマンドを実行時に入力する項目は以下のようになります。
SSH Public Key ⇒ 事前準備で作成した公開鍵のフルパス。
Platform ⇒ インストールを行う環境。今回は「aws」を指定。
Region ⇒ インストール先のリージョン。今回はAWS東京リージョン(ap-northeast-1)
Base Domain ⇒ 事前準備で用意したドメイン名(「sample-openshift10.com」)
Cluster Name ⇒ 作成するOpenShiftクラスタ-名。ここでは便宜的に「ocp-sample-cluster」とします。
Pull Secret ⇒ 事前準備のOpenShiftインストーラをダウンロードした際のPull Secretの値
処理が完了するとカレントディレクトリに「install-config.yaml」が作成されます。この構成ファイル内の設定に沿って、OpenShiftが構築されます。このファイルは環境を削除する際に自動的に削除されてしまうので、このタイミングでファイルのバックアップを取得しておきます。
また、この構成ファイルを変更することでOpenShiftのノードとして利用されるEC2のインスタンスタイプを変更できたりしますが、今回はデフォルトの設定で構築を行います。
それでは、OpenShiftを構築します。OpenShiftクラスタを構築するコマンドを実施する前に、AWSの認証情報を読み込んでいることを確認してください。AWSへの認証を正常に完了できたら以下のコマンドを実行してOpenShiftクラスタを構築します。
>openshift-install create cluster
インストールコマンド実行の出力にOpenShiftコンソールへの接続URLとクラスタ接続のためのAPIエンドポイントや初期ユーザのパスワードが表示されていますのでメモしておきます。初期ユーザは「kubeadmin」になります。
インストールが完了したらAWSコンソールを確認するとOpenShiftを構成する各種リソースが作成されていることを確認できます。EC2一覧には「***bootstrap」というインスタンスが終了状態で存在していますが、これはクラスタ作成の際に一時的に利用されたサーバになります。
EC2の他にもVPC,サブネット,ロードバランサーなどOpenShiftに必要なインフラ基盤が全て自動的にデプロイされていることがAWSコンソール上で確認できます。
OpenShiftの管理コンソールに接続してみます。OpenShiftクラスタ構築コマンドを実行した際の出力から「https://console-openshift-console.apps.**************」 をブラウザで開きます(証明書警告が発生しますがここでは無視します)。OpenShift管理コンソールのログイン画面が表示されます。
初期ユーザ,パスワードを入力しログインボタンを押下すると、管理コンソールにログインできました。
これでOpenShiftのIPIインストールについては完了です。コンテナを自由に動作させることができます。※TOP画面に表示されているように、この段階では評価版ライセンスのため60日間の有効期限となり、この有効期間内で操作が可能となります。
3.OpenShiftクラスタの削除
検証が完了したらOpenShiftクラスタを削除します。本OpenShiftの環境は個人で利用する分には費用が高めですので、必要が無くなったらすぐに環境ごと削除しておくといいでしょう。再び利用したい場合は、構成ファイルのバックアップを利用して簡単に環境の再構築が可能です。また、環境の削除は手動で行わず以下のコマンドで削除します。削除コマンドは内部的にはterraformを介して実行されるので、作成した環境をリソースの紐づけなども含めて全て自動的に削除してくれます。手動で削除すると思わぬリソースが残ったままになる可能性もありますので注意しましょう。
・openshiftクラスタ削除コマンド
>openshift-install destroy cluster
AWS上からOpenShiftの関連リソースが全て削除されたことが確認できます。AWS上の作業端末を作成した場合は、このEC2も必要がなければ忘れずにシャットダウンしておきましょう。
これでIPI形式のOpenShiftのインストール手順は完了となります。簡単にOpenShift環境を構築し利用することができました。OpenShiftの操作を試したい場合はIPIでのインストールが構築時間も少なく済みますのでお勧めですが、OpenShiftの基盤側のアーキテクチャを把握するのであればUPIでのインストールを行うと理解が進みやすいかと思います。UPIでのインストールについては後日、別の記事でご紹介させていただく予定です。