NGINX Ingress Controller は、Container Service for Kubernetes (ACK) のマネージドクラスターのイングレスゲートウェイとして機能し、柔軟なルーティングルールによって外部トラフィックを内部サービスにルーティングします。HTTPS 暗号化、カナリアリリース、アノテーションによるカスタム構成などの機能をサポートし、セキュアで高可用性かつスケーラブルなレイヤー 7 (L7) ネットワークアクセスを提供します。
-
2025 年 9 月 11 日より、Classic Load Balancer (CLB) の仕様ベース課金の廃止に伴い、Container Service for Kubernetes コンソールでロードバランサータイプのサービスを作成するか、新しい NGINX Ingress コントローラーをインストールする際に、デフォルトで Network Load Balancer (NLB) インスタンスが使用されるようになります。CLB ベースのサービスの作成は許可リストに制限され、これらのサービスは、デフォルトで従量課金モデルを使用します。詳細については、「[製品変更] 新規サービスおよび NGINX Ingress コントローラーのデフォルトのロードバランサータイプと課金方法の変更に関するお知らせ」をご参照ください。
-
アップストリームのオープンソースである Ingress-NGINX プロジェクトは、2026 年 3 月をもってメンテナンスを終了します。その結果、Container Service for Kubernetes は NGINX Ingress コントローラーコンポーネントのメンテナンスを終了します。関連するリスクにご注意ください。詳細については、「[製品発表] NGINX Ingress コントローラーコンポーネントのメンテナンス終了に関するお知らせ」をご参照ください。
注意事項
-
NGINX Ingress Controller が使用するデフォルトの Service は削除しないでください。アドオンがインストールされると、
kube-system名前空間にnginx-ingress-lbという名前のデフォルトの Service が作成されます。この Service を削除すると、アドオンが不安定になり、クラッシュする可能性があります。 -
アドオンのカスタムパラメーターを設定するには、アドオン または OpenAPI を使用してください。他の方法で設定を変更すると、アドオンが誤動作し、将来のアップグレードに支障をきたす可能性があります。
-
カスタム設定には、NGINX Ingress ConfigMap を使用してください。スニペットや Lua コードなどの追加設定が原因で発生した問題は、テクニカルサポートの対象外です。
-
アップストリームコミュニティバージョンのバグやセキュリティ脆弱性による業務の中断を防ぐために、NGINX Ingress Controller アドオン を速やかにアップグレードしてください。
NGINX Ingress Controller アドオンのインストール
サンプルアプリケーションの作成
このサンプルアプリケーションは、coffee と tea という 2 つのステートレスワークロードである Deployment、およびそれらに対応する coffee-svc と tea-svc という Service をデプロイします。
コンソール
|
1. リソースの作成
|
|
2. 結果の表示 YAML リソース作成結果 ダイアログボックスで、リソースの アクション 列にある ビュー をクリックすると、リソースが作成されたことを確認できます。 |
kubectl
-
次の内容で test-deployment-service.yaml という名前のファイルを作成します。
-
設定を適用して Deployment と Service を作成します。
kubectl apply -f test-deployment-service.yaml -
coffeeとteaの Deployment のステータスを確認します。kubectl get deployment coffee tea出力は次のようになります。
NAME READY UP-TO-DATE AVAILABLE AGE coffee 2/2 2 2 14m tea 2/2 2 2 14m -
coffee-svcとtea-svcの Service のステータスを確認します。kubectl get service coffee-svc tea-svc出力は次のようになります。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m tea-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m
NGINX Ingress の作成
この例では、ドメイン名 (ホスト) として test-nginx-ingress.com を使用しています。これをお客様自身の登録済みドメイン名に置き換えてください。パスマッピング (paths) は、サンプルアプリケーションの作成の例のものです。これらのパスをアプリケーションの設定に合わせて変更してください。
コンソール
|
1. Ingress の作成
|
|
2. Endpoint の取得 約 1 分後にページを更新します。エンドポイント 列に Elastic IP (EIP) が表示されれば、Nginx Ingress は正常に作成されています。この EIP は、関連付けられている Cloud Load Balancer (CLB) インスタンスのパブリックサービスアドレスです。 数分経っても Endpoint 情報が表示されない場合は、Ingress 名をクリックし、イベント タブを確認して、トラブルシューティングを行ってください。 |
kubectl
-
次の内容で test-ingress.yaml という名前のファイルを作成します。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-nginx-ingress namespace: default spec: ingressClassName: nginx rules: - host: test-nginx-ingress.com # 登録済みのドメイン名に置き換えます http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecific - host: www.test-nginx-ingress.com # 登録済みのドメイン名に置き換えます http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecificパラメーターの説明:
-
name:Ingress の名前です。この例では、名前はtest-nginx-ingressです。 -
host:Service にアクセスするために使用するドメイン名です。この例では、ドメイン名はtest-nginx-ingress.comです。これを登録済みのドメイン名に置き換えてください。 -
path:ルールの URL パスです。リクエストが backend にルーティングされるには、指定された host と path に一致する必要があります。この例では、パスは/coffeeと/teaです。 -
backend:Service 名と Service ポートで構成されます。-
Service 名:Ingress がトラフィックを転送する backend Service の名前です。例:
coffee-svc、tea-svc。 -
Service ポート:バックエンド Service のターゲットポートです。この例では、ポートは
80です。
-
-
-
Ingress を作成します。
kubectl apply -f test-ingress.yaml -
Ingress を表示し、
8.xxx.xxx.117などの Elastic IP (EIP) を取得します。kubectl get ingress想定される出力:
NAME CLASS HOSTS ADDRESS PORTS AGE test-nginx-ingress nginx test-nginx-ingress.com,www.test-nginx-ingress.com 8.xxx.xxx.117 80 2m39s -
この EIP を使用して、Nginx Ingress が正しく動作していることを確認します。
curl http://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"想定される出力:
... <title>Hello World</title> ... <p><span>Server address:</span> <span>10.xxx.xxx.19:80</span></p> <p><span>Server name:</span> <span>coffee-96d4bc87-l29dh</span></p> <p class="smaller"><span>Date:</span> <span>08/Aug/2025:02:21:02 +0000</span></p> <p class="smaller"><span>URI:</span> <span>/coffee</span></p> ... <div id="footer"> <div id="center" align="center"> Request ID: 42e2d73c85b16b55b6ab52deb7d995d4<br/> © NGINX, Inc. 2018 </div> </div> ...
DNS 名前解決の設定
ドメイン名を登録。ドメイン名を追加する必要があるのは、サードパーティのプロバイダーで登録されている場合のみです。Alibaba Cloud は、自社プラットフォームで購入したドメイン名を Alibaba Cloud DNS のパブリック権威ゾーンに自動的に追加するため、直接 DNS レコードを追加できます。
|
1. ドメイン名の追加
|
|
2. DNS レコードの追加
詳細については、「ウェブサイト解決レコードの追加」をご参照ください。 |
|
3. ドメイン名とパスの検証 ブラウザーで リクエストが成功すると、ページは NGINX バックエンド Pod からの情報 (server address、server name、Date、URI フィールドなど) を返します。 結果を確認するには、「DNS名前解決をテストする方法」も参照できます。DNS レコードが有効にならない場合は、「DNS名前解決の失敗を迅速にトラブルシューティングする」をご参照ください。 |
HTTPS セキュリティの設定
商用証明書を購入し、証明書を申請します。証明書が [発行済み] であることを確認します。次に、これらの手順に従って証明書をダウンロードし、TLS 設定を追加します。これにより、ドメインへの暗号化された HTTPS アクセスが可能になります。
コンソール
|
1. 証明書のダウンロード
詳細については、「SSL 証明書のダウンロード」をご参照ください。 |
|
2. Secret の作成
|
|
3. TLS 設定の追加
|
|
4. HTTPS アクセスの検証 Web ブラウザーで |
Kubectl
-
Certificate Management Service コンソールにログインします。左側メニューで、 を選択します。
-
公式証明書 タブで、ダウンロードする証明書を選択し、証明書リストの左下隅にある ダウンロード をクリックします。
-
表示されるダイアログボックスで、サーバータイプとして [Nginx] を選択し、証明書パッケージをダウンロードして解凍します。
-
ダウンロードした証明書ファイル (.pem) と秘密鍵ファイル (.key) を使用して Secret を作成します。
kubectl create secret tls nginx-ingress-tls --cert test-nginx-ingress.com.pem --key test-nginx-ingress.com.key -n default -
test-nginx-ingressIngress に TLS 設定を追加します。コマンド内のtest-nginx-ingress.comを実際の登録済みドメイン名に置き換えてください。kubectl patch ingress test-nginx-ingress -p '{"spec":{"tls":[{"hosts":["test-nginx-ingress.com"],"secretName":"nginx-ingress-tls"}]}}' -
実際の Elastic IP Address を使用して次のコマンドを実行し、サービスパスへの暗号化された HTTPS アクセスを検証します。
curl -v -k https://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"-
パラメーター:
-
-v: 詳細な出力 (TLS ハンドシェイクを含む) を表示します。 -
-k(または --insecure): 証明書の検証をスキップします。自己署名証明書を使用している場合は、このオプションを使用します。
-
-
期待される出力:
... * Trying 8.xxx.xxx.117:443... * Connected to 8.xxx.xxx.117 (8.xxx.xxx.117) port 443 * ALPN: curl offers h2,http/1.1 * (304) (OUT), TLS handshake, Client hello (1): * (304) (IN), TLS handshake, Server hello (2): * (304) (IN), TLS handshake, Unknown (8): * (304) (IN), TLS handshake, Certificate (11): * (304) (IN), TLS handshake, CERT verify (15): * (304) (IN), TLS handshake, Finished (20): * (304) (OUT), TLS handshake, Finished (20): ... <title>Hello World</title> ... <p><span>Server address:</span> <span>10.xxx.xxx.159:80</span></p> <p><span>Server name:</span> <span>coffee-96d4bc87-6cstv</span></p> <p class="smaller"><span>Date:</span> <span>14/Aug/2025:09:27:42 +0000</span></p> <p class="smaller"><span>URI:</span> <span>/coffee</span></p> ... <div id="footer"> <div id="center" align="center"> Request ID: fee5fe107106748a35d99a2dbbbc6652<br/> © NGINX, Inc. 2018 </div> </div> ...
-
その他の設定
カナリアリリース
サービスをアップグレードするには、ローリングアップデート、段階的リリース、ブルー/グリーンデプロイメント、カナリアリリースなど、さまざまなデプロイ戦略を使用できます。詳細な手順については、「NGINX Ingress を使用した段階的リリースとブルー/グリーンデプロイメントの実装」をご参照ください。
バックエンドサービスのプロトコル
バックエンドサービスのプロトコルを指定するには、nginx.ingress.kubernetes.io/backend-protocol アノテーションを追加します。サポートされているプロトコルは、HTTP、HTTPS、gRPC、gRPCS です。設定例については、「NGINX Ingress の gRPC サービスの設定」をご参照ください。
URL リライト
NGINX Ingress コントローラーを使用する場合、NGINX は完全なリクエストパスに基づいてリクエストを転送します。 たとえば、NGINX Ingress コントローラーは、/service1/api パスへのリクエストを、バックエンド Pod の /service1/api パスに直接転送します。 バックエンドサービスのパスが /api の場合、パスが正しくないため、404 ステータスコードが返されます。 この場合、nginx.ingress.kubernetes.io/rewrite-target アノテーションを設定して、リクエストパスを正しいディレクトリに再書き込みできます。
詳細な手順については、「URL リライトの設定」をご参照ください。
アノテーション
NGINX Ingress は、アノテーションで有効にできる広範な機能をサポートしています。詳細については、「NGINX Ingress 設定ディクショナリ」および「高度な NGINX Ingress 設定」をご参照ください。
可観測性
クラスター作成時に Simple Log Service (SLS) を有効にすると、包括的な NGINX Ingress のアクセスログ分析レポートとリアルタイムモニタリングダッシュボードにアクセスできます。詳細については、「NGINX Ingress アクセスログの分析とモニタリング」をご参照ください。
高負荷シナリオ
高負荷シナリオで NGINX Ingress Controller のパフォーマンスと安定性を向上させるには、「高ペイロードシナリオ向けの NGINX Ingress Controller の設定」および「NGINX Ingress Controller の使用に関する推奨事項」をご参照ください。
よくある質問
クラスター内から外部 IP にアクセスできない
大きなヘッダーまたはクッキー
CORS 設定
クライアント IP パススルー
関連ドキュメント
-
バージョンとリリースノートは、「NGINX Ingress Controller」をご参照ください。
-
一般的な問題とトラブルシューティングは、「NGINX Ingress よくある質問」および「Troubleshoot NGINX Ingress issues」をご参照ください。