LoginSignup
15
7

More than 5 years have passed since last update.

TerraformでHA構成のOpenShiftクラスタを1時間で立ち上げる

Last updated at Posted at 2018-03-17

(本当は30分で立ち上げると書きたかったところでしたが、OpenShiftのインストーラーが走ってる時間が30分くらいあったので。。。)

OpenShiftをHA構成で立ち上げるterraformモジュールを公開したので紹介します。

OpenShiftはピュアなKubernetesクラスタの上に構築されるので、Kubernetesクラスタを構築できるということでもあります。

OpenShift自体はopenshift-ansibleでインストールするのですが、
AWSのASGやLB、SecurityGroupを設定するのがなかなか面倒なのでその作業を省力化するものです。

この記事ではOpenShift Originを使用しますが、このモジュールは商用版のOCP(OpenShift Container Platform)にも対応しているので、サブスクリプションがあればOCPのクラスタを立てることも可能です。

作成されるOpenShiftの構成は以下のような形になります。

OpenShift Reference Architecture.png

前提条件

この記事の手順では、AWSの上に新規のVPCとサブネット、ゲートウェイなどのネットワーク設定の他、
m4.largeのEC2インスタンス2〜4個(master x1〜3、node x1)やLB、セキュリティグループなどが作成されます。

terraformが使用するAWSのプロファイルに適切な権限を設定してください。

export AWS_PROFILE=openshift_administrator

また、独自ドメインを運用できることを前提にしていますが、この記事ではfreenomの無料ドメインの取得とその設定方法を紹介します。

Terraformモジュールの使用準備

terraformコマンドが入っていない場合は、以下を参考に導入します。

terraform-aws-openshiftを、適当なディレクトリにクローンしてください。

git clone https://github.com/literalice/terraform-aws-openshift
cd terraform-aws-openshift

このプロジェクトは、Terraformモジュールの標準ディレクトリ構成に従い、examplesディレクトリに実際にOpenShiftを構築するためのプロジェクトが入っています。

OpenShift Originで構築するoriginディレクトリと、OCPで構築するocpディレクトリがありますが、ここではOriginを利用するのでこのディレクトリに移動します。

cd examples/origin

移動したら、このプロジェクトを以下のように初期化してください。

terraform init

OpenShiftをインストールするためのインフラを構築する

OpenShiftをインストールする対象のマシン、EC2インスタンスやセキュリティグループ、LBを作成します。

export AWS_DEFAULT_REGION=ap-northeast-1 # クラスタを作成するリージョン

export TF_VAR_platform_name=platform1 # 任意のクラスタID
export TF_VAR_platform_default_subdomain=openshift-example-xxxx.tk # クラスタにアクセスするためのドメイン

export TF_VAR_master_count=3 # Masterノードの数。HA構成って題しているので3にしていますが、別に1でもいいです

 # OpenShiftの管理機能にアクセスできるIP帯のリスト。 
 # https://www.cman.jp/network/support/go_access.cgi あたりから自分のIPをセットしてください。
export TF_VAR_operator_cidrs='["0.0.0.0/0"]'

make

OpenShiftクラスタにアクセスできるようドメインを設定する

上記コマンドを実行した際、以下のようにドメイン一覧が出力されるはずです。

public_dns_nameservers = [
    ns-xxx.awsdns-xx.org,
    ns-xxx.awsdns-xx.co.uk,
    ns-xxx.awsdns-xx.com,
    ns-xxx.awsdns-xx.net
]

これは、これから構築するOpenShiftクラスタのドメイン解決を委譲するために使うネームサーバーのリストです。
すでにお名前.comなどでドメインの運用を行なっている場合は、このネームサーバーをOpenShiftドメイン(ここでは openshift-example-xxx.tk )のNSレコードに設定することで以下のようなドメイン名を解決できるようになります。

  • master.openshift-example-xxx.tk # OpenShiftの管理コンソール
  • bastion.openshift-example-xxx.tk # OpenShiftの管理用踏み台サーバー
  • *.openshift-example-xxx.tk # OpenShiftにデプロイされたアプリケーションにアクセスするためのワイルドカードドメイン

ここでは、freenomでドメインを無料で取得し、必要なOpenShiftドメインが解決できるよう設定します。

freenomの無料ドメインを取得する

まず、 freenomにサインアップしていない場合はサインアップしてログインしてください。

freenom_01.png

「Services」->「Register a New Domain」からOpenShiftクラスタのドメイン(ここでは openshift-example-xxx.tk )を取得します。

freenom_02.png

「Check Availability」を押下します。

freenom_03.png

「CheckOut」を選択します。

Route53のネームサーバーをfreenomに設定する

Nameserverの欄に、makeを実行した際に出力された以下のドメインから、適当に二つ設定し、「Continue」を押下します。

public_dns_nameservers = [
    ns-xxx.awsdns-xx.org,
    ns-xxx.awsdns-xx.co.uk,
    ns-xxx.awsdns-xx.com,
    ns-xxx.awsdns-xx.net
]

freenom_04.png

次の画面、「Your Details」のところは、何も変更せず「I have read and agree to the Terms & Conditions」にチェックを入れるだけで大丈夫でした。

ドメインが設定されたことを確認する

dig master.openshift-example-xxx.tk

上記でOpenShift管理コンソールのLBのIPが解決されることを確認します。

なお、まだOpenShiftをインストールしていないので、この時点ではURLにアクセスできません。

OpenShiftのインストール

上記で設定したドメインが使用できるようになったら、make install コマンドでOpenShiftを作成したインフラにインストールします。

make install

エラーが発生した場合は、少し間を置いて再実行してください。

処理内容としては、踏み台にあるinventoryとOpenShiftをインストールするための公式ansible playbookを、Terraformのremote-execで使用しているだけです。

確認

インスールのansible-playbook実行が終わると、OpenShiftのクラスタにアクセスできるようになっているはずです。
masterのアクセス先URLはmake installコマンドの実行結果として出力されています。

bastion_public_dns = bastion.openshift-sample-xxx.tk
master_url = https://master.openshift-sample-xxx.tk:8443

任意のユーザー名/パスワードでログインできるので、一通り機能を確認してみてください。
(近いうちに、任意の認証方法を設定できるようにする予定です。)

後片付け

make destroy コマンドで、作成した全てのAWSリソースが削除されます。

make destroy

まとめ

この記事では、OpenShiftのクラスタ構築をTerraformで自動化しました。
OpenShiftの環境が簡単に構築できるので、いろいろと遊んでみていただければと思います。

OpenShiftやKubernetesのクラスタを運用する際は、この記事で行ったように、再現性を高めるため構築を自動化しておくのがいいですね。

15
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
7