Lab 2 - NGINX Controller の冗長化

このラボのゴールはNGINX Controller clusterの3つ目のメンバーとしてホストを追加することです

本番環境では、我々のサービスに対し冗長性をもたせることが一般的です。複数のインスタンスを水平スケール・動作の管理を行うNGINX Controllerを用いた場合、単一の事象が様々な事象の引き金となることがあります。冗長構成の実装はコンプライアンスやルールの要素としても求められることがあります。この機能により複数のコントローラを用いて安定した環境を実現します

Important

想定時間: 15分

Note

このラボの手順はラボを実施する方がWindows jumphost – jumphost-1 から操作する手順を示しています。 接続方法についてはこちらを参照ください。 F5 Labs - Index

追加するNGINX Controllerのノードを作成する

  1. jumphostのChromeで開かれているNGINX Controllerの管理画面を操作します。証明書エラーが表示されている場合には適切に操作をして画面を開いてください

    ../../_images/ControllerLogin.png
  2. もし開かれていない場合、Chromeブラウザを開いてください

  3. BookmarkからNGINX Controller UIにアクセスしてください

    ../../_images/ControllerBookmark.png
  4. NGINX Controller のadmin accountである、Peter Parker でログインしてください

    Username Password
    peter@acmefinancial.net Peter123!@#
    ../../_images/ControllerLogin-Peter.png
  5. 画面左上のナビゲーションバーを開き、ドロップダウンリストから Platform を選択してください

    ../../_images/Tile-Platform.png
  6. Cluster を開いてください

    ../../_images/M1L2ClusterTile.png
  7. 現在の “Cluster Configuration” を確認してください

    ../../_images/M1L2ClusterConfig.png

Note

“Cluster Configuration” の項目は、クラスタを構成するNGINX Controllerインスタンスを示します。 FQDNはAPI Gateway podに割り当てる証明書で利用するcommon nameに該当します 例: APIエンドポイントやGUIの接続先として公開するサービスの名称

Important

“load balancer”設定は今後リリースされるNGINX Controllerにて設定可能となる予定です 追加の情報はラボの 追加情報 を参照してください

Note

“Nodes”として現在2つのNGINX Controller インスタンスが表示されています ( “controller-1” および “controller-2” に該当するノード)

  1. 画面右上の Create Node ボタンをクリックしてください

    ../../_images/M1L2CreateNodeButton.png
  2. ダイアログに従って進め、”controller-3” インスタンスを追加するため、”Name” と “Hostname または IP Address” を指定してください。Save ボタンをクリックしてください

    Field Value
    Name controller-3
    Hostname or IP 10.1.1.10
    ../../_images/M1L2CreateNodeDialogue.png
  3. View にインストール手順が記載されています。インストールコマンドと “join key” をクリップボードにコピーしてください。

    ../../_images/M1L2NodeViewButton.png ../../_images/M1L2NodeJoinCommand.png

クラスタにインスタンスを追加するため install command を実行する

  1. “controller-3” インスタンスにログインしてください。”PuTTY” を開き、保存済みのホストより controller-3 を選択し、Open をクリックしてください

    ../../_images/M1L2puttyc3.png

    Important

    もし、Puttyがサーバのホスト鍵に関する警告を示した場合、接続のため Yes をクリックしてください これは、ラボ環境の各ホストでユニークなhost keyを生成するため生じるものです

  2. installerディレクトリより、install.sh コマンドを実行してください。そしてプロンプトの表示に対し “y” (“yes” の意味) を入力してください。
    解凍するファイル名はディレクトリに保存しているものと一致している事を確認してください。異なる場合、適宜ファイル名を変更ください。

    Important

    こちらの操作はubuntuユーザで行います。ファイルはホームディレクトリ/home/ubuntuに配置しております

    $ tar zxvf controller-installer-3.20.0.tar.gz
    $ cd controller-installer/
    $ ./install.sh --join-key {{base64 encoded key}}
    
    ../../_images/M1L2InstallCommand.png
  3. コマンドの実行結果として、クラスタに追加が完了したことがノードに表示されます

    ../../_images/M1L2NodeJoinSuccess.png

View the results

  1. Chromeを開き、Cluster の “Cluster Configuration” を確認してください

    ../../_images/M1L2NodesConfigured.png

(Optional) Kubernetes Cluster の確認

もし、Kubernetes (k8s) について確認されたい場合、NGINX Controllerによって作成される k8s クラスタの情報を確認することが可能です

  1. 先程ログインした PuTTY の “controller-3” への接続を利用するか、新たにNGINX Controllerインスタンスのいずれか一つに接続してください

    ../../_images/M1L2puttyc1.png

    Important

    もし、Puttyがサーバのホスト鍵に関する警告を示した場合、接続のため Yes をクリックしてください これは、ラボ環境の各ホストでユニークなhost keyを生成するため生じるものです

  2. クラスタノードを表示します

    kubectl get nodes
    
    ../../_images/M1L2Nodes.png

    Note

    コマンドの出力結果として、k8s クラスタに3つのノードが存在することが確認できます

  3. デプロイされたポッドを確認する

    kubectl get pods -n nginx-controller -o wide
    
    ../../_images/M1L2K8s.png

    Note

    コマンドの出力結果として、NGINX Controllerが複数のPodを3つのノードに対してデプロイしていることが確認できます (“NODE”カラムを確認ください)

追加情報

“load balancer”設定は今後リリースされるNGINX Controllerにて設定可能となる予定です 追加の情報はラボの 追加情報 を参照してください

将来リリースされるNGINX Controllerでは、API Gateway Kubernetes serviceを公開するために利用するfloating self-ipが “load balancer” によって作成される予定です。 オンプレミス環境ではL2 Failoverをサポートする MetalLB の構成、クラウド環境では k8sの type LoadBalancer を用いたクラウドネイティブな外部向けロードバランサー機能を利用する想定となります。