IDCF テックブログ

IDCF テックブログ

クラウド・データセンターを提供するIDCフロンティアの公式テックブログ

IDCFクラウド コンテナ での NGINX Ingress の使い方

こんにちは、藤城(@tafujish)です。「IDCFクラウド コンテナ」で利用可能な4つのロードバランサーについて以前に紹介しました。

blog.idcf.jp

この中の一つ、L7のNGINX Ingressが思っていた以上にニーズがあったので、改めて使い方を紹介したいと思います。具体的には以下のようなケースだとNGINX Ingressが有用です。

  • IDCFプライベートクラウドやオンプレミス(カスタム)などのIngressが標準で実装されていない環境でのL7ロードバランサー
  • IDCFクラウドコンピュートで大量の証明書を利用したいとき(インフィニットLBだと利用料が高額になってしまう)

それでは、実際の設定の流れを見てみましょう。

クラスターでの事前設定

まずはクラスターにて、NGINX Ingressの機能を有効化します。クラスター作成時、またはクラスターの「設定を編集」にて

拡張オプション内の「イングレスプロバイダー」を「有効」にします。

なお、IDCFクラウドコンテナ for IDCFプライベートクラウド と for カスタム(オンプレミス)ではイングレスプロバイダーはデフォルトで有効になっています。for IDCFクラウドでは、インフィニットLBが標準で利用できますので、イングレスプロバイダーはデフォルトで無効になっています。後から、有効・無効の変更も可能です。

イングレスプロバイダーを有効にするとSystem上で nginx-ingress-controller がActiveとなります。

以上で、クラスターの事前準備は終わりです。

対象のワークロードを準備

では、次に分散先となるワークロードを準備します。ここでの例では、WEBサーバーとしてnginxのワークロードをデプロイしておきます。この時、ポートの設定として「クラスターIP」を指定しておきます。


NGINX Ingress を作成

いよいよ、NGINX Ingress を作っていきます。左メニューのサービスディスカバリ内の「Ingresses」を選び、「作成」を押します。

次に、ロードバランサーとして設定を入れていきます。HTTPで分散するときの最低限の設定は、Ingressの名前、パス(デフォルトパスの場合は、Prefixを選びパスは / としておきます)、ターゲットサービス(先ほど作成したワークロードのクラスターIPを指定します)、ポートです。HTTPSの場合は証明書を設定しておきます。

IDCFクラウドコンテナ for IDCFプライベートクラウド と for カスタム(オンプレミス)の場合は、このまま「作成」で完了です。
for IDCFクラウドでは、Ingressの標準がインフィニットLBのためNGINX Ingressを指定する必要があります。「ラベル・アノテーション」を選び以下の通り、アノテーションを追加した上で「作成」する必要があります。

キー: kubernetes.io/ingress.class
値: nginx

また動作として現状必須ではありませんが、ingressClassNameもデフォルトではインフィニットLBが設定されるため、NGINX Ingressを指定しておくのが安全です。「YAMLを編集」から spec の下に

  ingressClassName: nginx

を追加して、「保存」してください。


以上で設定は完了です。作成したIngressがActiveになれば完成です。

インターネット接続

NGINX Ingressは無事デプロイできてもこのままではインターネットからワークロードにはアクセスできないです。NGINX Ingressはコンテナとして動作しているので、インターネットからの接続経路を設定する必要があります。

IDCFクラウドコンテナ for IDCFプライベートクラウド と for カスタム(オンプレミス)の場合は、インターネット接続しているファイアウォール機器やロードバランサー機器があると思いますので、そちらでクラスターのワーカーノードのTCP80ないしTCP443への設定を入れてください。

for IDCFクラウドでは、仮想ルーターのロードバランサーやインフィニットLBで、クラスターのワーカーノードのTCP80ないしTCP443への設定を入れます。以下は仮想ルーターでの設定例です。なお、ノードの追加や削除、ノードの再作成のたびにロードバランサーの設定が必要ですのでご注意ください。

このようなネットワーク構成となります。


まとめ

以上のように、IDCFクラウドコンテナではNGINX Ingressが組み込まれているため、どこの環境でも簡単にIngressを使いはじめることができます。もし、IDCFクラウドコンテナを利用していてネットワーク構成に悩むことがあればご相談いただければと存じます。

Copyright © IDC Frontier Inc.