NGINX(エンジンエックス)|日本公式サイト

NGINXはF5ファミリーの一員となりました。新体制の詳細はこちらを御覧ください。

Kubernetes向けエンタープライズグレードのアプリケーションデリバリ

Kubernetesはオープンソースコンテナのスケジューリングおよびオーケストレーションシステムです。元々、Googleで開発され、その後Cloud Native Computing Foundationに寄贈されました。Kubernetesでは、サーバクラスタで均等に稼働するようにコンテナを自動的にスケジューリングし、開発者や運用者の複雑なタスクを削減します。現在、Kubernetesはコンテナのオーケストレータ―およびスケジューラ―として高い人気を誇っています。

NGINX Ingress Controller for Kubernetesは、Kubernetesアプリケーション向けにエンタープライズグレードのデリバリサービスを提供し、オープンソースNGINXとNGINX Plusの両方のユーザーにメリットをもたらします。NGINX Ingress Controller for Kubernetesは基本的なロードバランシング、SSL/TLSターミネ―ション、URIの書き換えサポート、およびアップストリームのSSL/TLS暗号化といった機能を備えています。さらにNGINX Plusユーザーは、ステートフルアプリケーション向けのセッションパーシステンスと、API向けのJSON Web Token(JWT)認証機能を利用することができます。

 
 
 
備考: NGINX Plusの顧客は、追加コストなしでNGINX Ingress Controller for Kubernetesのサポートを受けることができます。

NGINX Ingress Controller for Kubernetesの仕組み

Kubernetesサービスは、デフォルトでは外部ネットワークからアクセスできず、Kubernetesクラスタ内の他のポッドからのみアクセスできます。Kubernetesは、Ingressと呼ばれるHTTPロードバランシングの構成が内蔵されており、Kubernetesサービスへの外部接続のルールを定義します。Kubernetesサービスへの外部アクセスが必要なユーザーは、URIパス、バッキングされたサービスネーム、およびその他の情報を含むルールを定義するIngressリソースを作成します。その後でIngress Controllerでフロントエンドのロードバランサーを自動的にプログラムし、Ingressの構成を有効にすることができます。NGINX Ingress Controller for Kubernetesにより、KubernetesでNGINXおよびNGINX PlusにおいてKubernetesサービスのロードバランシングを構成することができます。

備考: インストール方法はGitHubのリポジトリをご覧下さい。

以下のexample.ymlファイルがKubernetes Ingressリソースを作成し、リクエストURIおよびホストヘッダに応じて、クライアントリクエストを異なるサービスに転送します。ホストヘッダcafe.example.comのクライアントリクエスト、および/teaURIのリクエストはteaサービスに転送され、/coffeeURIのリクエストはcoffeeサービスに転送されます。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: cafe-ingress
  annotations:
    nginx.org/sticky-cookie-services: "serviceName=coffee-svc srv_id expires=1h path=/coffee"
    nginx.com/jwt-realm: "Cafe App"  
    nginx.com/jwt-token: "$cookie_auth_token"
    nginx.com/jwt-key: "cafe-jwk" 
spec:
  tls:
  - hosts:
    - cafe.example.com
    secretName: cafe-secret
  rules:
  - host: cafe.example.com
    http:
      paths:
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80

SSL/TLSトラフィックを終了させるには、SSL/TLS証明書と鍵を備えたKubernetes Secretオブジェクトを作成し、Kubernetes Ingressリソースにアサインします(Secretは、データを暗号化するための証明書と鍵といった少量の機密データを含んでいます)。Secretに関する詳細はKubernetes documentationをご覧下さい。

Ingress controllerは容易にカスタマイズすることが可能であり、IngressリソースのYAMLファイルでアノテ―ションを明記する、もしくはConfigMapsなどのKubernetesリソースをIngress controllerにマッピングする方法があります。上記の例では、アノテ―ションを利用してcoffeeサービスにセッションパーシステンスを有効にし、JWTバリデーションを構成することにより、Ingress controllerをカスタマイズしています。GitHubリポジトリには、NGINX PlusとKubernetes Ingress controllerの実装に関する多くの事例が掲載されています。

NGINXおよびNGINX PlusとIngress controllerで構成可能な全ての追加機能に関する詳細リストは、リポジトリをご覧下さい。

バージョン比較

機能OSSPlus
SSl/TLS ターミネ―ション
WebSocket
URLの書き換え
HTTP/2
Prometheus exporter
Helmチャート
リアルタイムモニタリング
ヘルスチェック
セッションパーシステンス
ダイナミック再構成
24時間365日サポート