すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Nginx Ingress を使用したサービスの公開

最終更新日:Mar 26, 2026

Ingress は、Kubernetes クラスター内の Service への外部アクセスを有効にするために使用される Kubernetes リソースオブジェクトです。このトピックでは、Container Service for Kubernetes (ACK) で NGINX Ingress を作成、表示、更新、削除する方法について、ACK コンソールまたは kubectl を使用して説明します。

前提条件

開始する前に、以下を確認してください:

制限事項

NGINX Ingress コントローラーが正しく実行されるかどうかに影響するため、以下の制限事項に違反しないでください:

  • kube-system/nginx-ingress-lb Service を削除しないでください。これは NGINX Ingress コントローラーが使用するデフォルトの Service です。削除すると、コントローラーが失敗したり停止したりする可能性があります。

  • コンポーネントのパラメーターは、ACK コンソールまたは ACK API を介してのみカスタマイズしてください。他の方法を使用すると、予期しない動作や更新の失敗を引き起こす可能性があります。

推奨事項

  • コンポーネントの機能は、スニペットや Lua コードではなく、アノテーションとパラメーターを介して設定してください。ACK は、スニペット設定によって引き起こされた問題に対するテクニカルサポートを提供しません。

  • アップストリームのオープンソースリリースからの既知のバグや脆弱性を避けるため、NGINX Ingress コントローラーを最新バージョンに更新してください。

  • 高負荷シナリオでは、各 NGINX Ingress コントローラー Pod を専用ノードにデプロイします。詳細については、「Ingress コントローラーを高信頼性アーキテクチャでデプロイする」をご参照ください。

完全な使用リファレンスについては、「NGINX Ingress コントローラーの使用上の注意」をご参照ください。

ACK コンソールでの NGINX Ingress の作成

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象クラスターの名前をクリックします。左側のペインで、[ネットワーク] > [Ingress] を選択します。

  3. [Ingress] ページで、[Ingress の作成] をクリックします。[Ingress の作成] ダイアログボックスで、次のパラメーターを設定します:

    パラメーター説明
    ゲートウェイタイプALBMSE クラウドネイティブゲートウェイ、または Nginx を選択します。比較については、「Nginx Ingress、ALB Ingress、MSE Ingress の比較」をご参照ください。Nginx
    名前Ingress の名前。nginx-ingress
    Ingress クラスIngress のクラス。nginx
    ルール[+ ルールの追加] をクリックしてルーティングルールを定義します。各ルールについて、[ドメイン名] (カスタムドメイン)、[パス] (バックエンド Service の URL パス)、[ルール] (Prefix、Exact、または ImplementationSpecific)、Service (バックエンド Service)、および [ポート] (公開される Service ポート) を指定します。[+ 追加] をクリックして、同じドメインに複数のパスを追加します。ドメイン名: test.example.com、パス: /、ルール: ImplementationSpecific、Service: nginx-ingress-lb、ポート: 80
    TLS 設定TLS 認証を有効にします。ドメイン名を指定し、Secret を選択または作成します ( [名前][証明書][キー] が必要です)。[+ 追加] をクリックして、複数の TLS 証明書をアタッチします。詳細については、「Ingress のサポート」をご参照ください。ドメイン名: test.example.com、Secret: cert
    その他オプション機能を設定します: [カナリアリリース] — リクエストヘッダー (nginx.ingress.kubernetes.io/canary-by-headernginx.ingress.kubernetes.io/canary-by-header-valuenginx.ingress.kubernetes.io/canary-by-header-pattern)、Cookie (nginx.ingress.kubernetes.io/canary-by-cookie)、または重み (nginx.ingress.kubernetes.io/canary-weight、整数 0–100) によってトラフィックをルーティングします。複数のメソッドがアクティブな場合、リクエストヘッダーが Cookie よりも優先され、Cookie が重みよりも優先されます。[プロトコル] — バックエンドプロトコル (nginx.ingress.kubernetes.io/backend-protocol) を設定します: HTTP、HTTPS、gRPC、または gRPCS。[パスの書き換え] — 転送前にリクエストパスを書き換えます (nginx.ingress.kubernetes.io/rewrite-target)。カナリアリリース: リクエストヘッダー foo: bar (完全一致) に基づく。プロトコル: gRPC
    アノテーション名前と値でカスタムアノテーションを追加します。ドロップダウンリストから選択するか、カスタムキーを入力します。アノテーションの数に制限はありません。詳細については、「アノテーション」をご参照ください。名前: nginx.ingress.kubernetes.io/proxy-body-size、値: 10m
    ラベルIngress の特性を記述するためのラベルを追加します。ラベルの数に制限はありません。名前: foo、値: bar
  4. [OK] をクリックします。

Ingress が [Ingress] ページに表示されます。

既存の Ingress の管理

[Ingress] ページで、[操作] 列を使用して既存の Ingress を管理します:

  • [更新] — Ingress の構成を編集します

  • [YAML の編集] — Ingress の YAML を直接変更します

  • [監視] — 監視メトリクスを表示します

  • 更多 > [削除] — Ingress を削除します

kubectl を使用した NGINX Ingress の作成

ステップ 1:Deployment と Service の作成

Ingress はトラフィックを Service にルーティングするため、Ingress を作成する前に Service が存在している必要があります。

  1. test-deployment-service.yaml という名前のファイルを次の内容で作成します:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-web1
      labels:
        app: test-web1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test-web1
      template:
        metadata:
          labels:
            app: test-web1
        spec:
          containers:
          - name: test-web1
            imagePullPolicy: IfNotPresent
            image: registry.cn-hangzhou.aliyuncs.com/yilong/ingress-test:web1
            ports:
            - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: web1-service
    spec:
      type: ClusterIP
      selector:
        app: test-web1
      ports:
        - port: 8080
          targetPort: 8080
  2. マニフェストを適用します:

    kubectl apply -f test-deployment-service.yaml

ステップ 2:Ingress の作成

Ingress のマニフェストフォーマットは Kubernetes のバージョンによって異なります。主な違いは、API バージョンフィールドとバックエンドサービスを指定するための spec 構造です。以下の両方の例では、/foo/bar をポート 8080 の web1-service にルーティングします。

Kubernetes 1.19 以降 (明示的な pathType を持つ networking.k8s.io/v1 を使用):

  1. test-ingress.yaml という名前のファイルを次の内容で作成します:

    フィールド説明
    metadata.nameIngress リソースの名前 (test-ingress)。
    spec.rules[].host外部アクセス用のドメイン名 (test-ingress.com)。hostpath の両方がインバウンドリクエストに一致する場合にのみ、トラフィックがバックエンドに転送されます。
    spec.rules[].http.paths[].path一致させる URL パス (/foo/bar)。
    spec.rules[].http.paths[].pathTypeパスのマッチングモード。ImplementationSpecific は、動作を Ingress コントローラーにデリゲートします。
    backend.service.nameバックエンド Service の名前 (web1-service)。
    backend.service.port.numberトラフィックを転送する Service ポート (8080)。
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test-ingress
      namespace: default
    spec:
      rules:
      - host: test-ingress.com
        http:
          paths:
          - path: /foo
            backend:
              service:
                name: web1-service
                port:
                  number: 8080
            pathType: ImplementationSpecific
          - path: /bar
            backend:
              service:
                name: web1-service
                port:
                  number: 8080
            pathType: ImplementationSpecific

    主要なフィールド:

Kubernetes 1.19 より前のバージョン (pathType なしで networking.k8s.io/v1beta1 を使用):

  1. test-ingress.yaml という名前のファイルを次の内容で作成します:

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: test-ingress
      namespace: default
    spec:
      rules:
      - host: test-ingress.com
        http:
          paths:
          - path: /foo
            backend:
              serviceName: web1-service
              servicePort: 8080
          - path: /bar
            backend:
              serviceName: web1-service
              servicePort: 8080
  2. マニフェストを適用します:

    kubectl apply -f test-ingress.yaml

ステップ 3:Ingress の確認

次のコマンドを実行して、Ingress が作成されたことを確認します:

   kubectl get ingress

Ingress の表示、更新、削除

操作コマンド
すべての Ingress を表示kubectl get ingress
Ingress を更新kubectl edit ingress <Ingress name>
Ingress を削除kubectl delete ingress <Ingress name>

次のステップ