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

Container Service for Kubernetes:ALB Ingress の転送ルールのカスタマイズ

最終更新日:Apr 10, 2026

ALB Ingress は、カスタム転送ルールをサポートしています。転送ルールは、転送条件と転送アクションで構成されます。ドメイン名、パス、リクエストヘッダー、クエリ文字列、リクエストメソッド、Cookie、またはソース IP に基づいてカスタム転送条件を定義できます。また、固定レスポンスの返却、リダイレクトの作成、リクエストヘッダーの挿入または削除、トラフィックミラーリング、複数のバックエンドサーバーグループへのリクエスト転送、リクエストの書き換えなどのカスタム転送アクションも定義できます。これらのカスタム転送ルールは、コンソールで設定するか、Ingress リソースにアノテーションを追加することで設定できます。

前提条件

ALB Ingress Controller コンポーネントがインストールされており、バージョンが v2.5.0 以降である必要があります。詳細については、「コンポーネントの管理」をご参照ください。

転送条件

重要
  • 1 つの転送ルールには、最大 10 個の条件を含めることができます。

  • ResponseHeader および ResponseStatusCode 転送条件は、レスポンスベースの転送ルールに対してのみ有効です。

転送条件

ALB Ingress は、alb.ingress.kubernetes.io/conditions.<service-name> アノテーションで転送条件の設定をサポートしています。異なるルーティングルールブロック間には論理 AND 関係があり、同じルーティングルールブロック内の値には論理 OR 関係があります。たとえば、2 つの異なる Header ルールブロックは論理 AND 関係にありますが、同じ Header ルールブロックで指定された値は論理 OR 関係にあります。ルーティングルールの詳細な説明は以下の通りです。

転送条件

説明

ドメイン名

一致するドメイン名に基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
      "type": "Host",
      "hostConfig": {
        "values": [
          "anno.example.com"
        ]
      }
  }]
  • type:一致タイプ。ドメイン名で一致させるには、値を Host に設定します。

  • hostConfig:一致させるドメイン名。複数のドメイン名を指定した場合、それらは OR 論理で評価されます。

パス

一致するパスに基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "Path",
    "pathConfig": {
      "values": [
        "/pathvalue1",
        "/pathvalue2"
      ]
    }
  }]
  • type:一致タイプ。リクエストパスと一致させるには、値を Path に設定します。

  • pathConfig:一致させるパス。複数のパスを指定した場合、それらは OR 論理で評価されます。

ヘッダー

一致するリクエストヘッダーに基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "Header",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type:一致タイプ。リクエストヘッダーと一致させるには、Header に設定します。

  • headerConfig:ヘッダーのキーと値。複数のヘッダー値を指定した場合、それらは OR 論理で評価されます。

クエリ文字列

一致するクエリ文字列に基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "QueryString",
    "queryStringConfig": {
      "values": [
        {
           "key":"querystringkey1",
           "value":"querystringvalue2"
        }
      ]
    }
  }]
  • type:一致タイプ。リクエストのクエリ文字列と一致させるには、値を QueryString に設定します。

  • queryStringConfig:クエリ文字列のキーと値のペア。キーと値の長さは 1~100 文字である必要があります。キーと値には、小文字、表示可能な文字、ワイルドカード文字のアスタリスク (*) と疑問符 (?) を含めることができます。スペースおよび文字 #[]{}\|<>& はサポートされていません。複数のクエリ文字列を指定した場合、それらは論理 OR で評価されます。

ユースケースと例については、「ユースケース 3:クエリ文字列、複数のヘッダー、複数のパスに基づくトラフィックのルーティング」をご参照ください。

リクエストメソッド

一致するリクエストメソッドに基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "Method",
    "methodConfig": {
      "values": [
        "GET",
        "HEAD"
      ]
    }
  }]
  • type:一致タイプ。リクエストメソッドと一致させるには、これを Method に設定します。

  • methodConfig:リクエストメソッド。サポートされている値:GETPOSTPUTDELETEHEADOPTIONSPATCH。複数のメソッドを指定した場合、それらは OR 論理で評価されます。

Cookie

一致する Cookie に基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "Cookie",
    "cookieConfig": {
      "values": [
        {
           "key":"cookiekey1",
           "value":"cookievalue2"
        }
      ]
     }
  }]
  • type:一致タイプ。Cookie と一致させるには、値を Cookie に設定します。

  • cookieConfig:Cookie のキーと値のペア。キーと値の長さは 1~100 文字である必要があります。キーと値には、小文字、表示可能な文字、ワイルドカードのアスタリスク (*)、疑問符 (?) を含めることができます。スペースおよび次の文字はサポートされていません:#[]{}\|<>&。複数の Cookie を設定した場合、Cookie は論理 OR で評価されます。

ユースケースと例については、「ユースケース 2:ドメイン名、リクエストメソッド、Cookie に基づくトラフィックのルーティング」をご参照ください。

ソース IP

一致するソース IP アドレスに基づいてリクエストをルーティングします。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "SourceIp",
    "sourceIpConfig": {
      "values": [
        "192.168.0.0/16",
        "172.16.0.0/16"
      ]
    }
  }]
  • type:一致タイプ。リクエストのソース IP と一致させるには、値を SourceIP に設定します。

  • sourceIpConfig:ソース IP アドレスまたは CIDR ブロック。複数の IP アドレスまたは CIDR ブロックを指定した場合、それらは OR 論理で評価されます。

ユースケースと例については、「ユースケース 1:ソース IP とヘッダーに基づくトラフィックのルーティング」をご参照ください。

レスポンスヘッダー

レスポンスヘッダーを照合し、正しいヘッダーを含むレスポンスに対してのみ転送アクションを実行します。これは alb.ingress.kubernetes.io/rule-direction.<service-name>: Response アノテーションと組み合わせて使用する必要があることに注意してください。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "ResponseHeader",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type:条件タイプ。レスポンス内のヘッダーと一致させるには、これを ResponseHeader に設定します。

  • headerConfig:ヘッダーのキーと値。複数のヘッダー値を指定した場合、それらは OR 論理で評価されます。

レスポンスステータスコード

レスポンスステータスコードを照合します。サービスには、正しいステータスコードが返された場合にのみアクセスできます。この機能は、レスポンス方向の転送アクションとレスポンス方向の転送ルールアノテーション alb.ingress.kubernetes.io/rule-direction.<service-name>: Response と組み合わせて使用する必要があることに注意してください。以下に例を示します。

alb.ingress.kubernetes.io/conditions.service-name: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
  [{
    "type": "ResponseStatusCode",
    "responseStatusCodeConfig": {
      "values": [
        "statuscode1",
        "statuscode2"
      ]
    }
  }]
  • type:一致タイプ。レスポンスステータスコードと一致させるには、ResponseStatusCode に設定します。

  • responseStatusCodeConfig:レスポンスステータスコード。複数のステータスコードを指定した場合、それらは OR 論理で評価されます。

ユースケース 1:ソース IP とヘッダーのルーティング

重要

1 つの転送ルールに最大 5 つの ソース IP 条件を指定できます。

この YAML は、ソース IP、ヘッダー、パスが指定された条件に一致する場合にのみリクエストをルーティングする Ingress を定義します。

リクエストのソース IP アドレスが 192.168.0.0/16 または 172.16.0.0/16 であり、リクエストヘッダーに値が value1 または value2gray-hello が含まれ、リクエストパスが /hello の場合、リクエストは gray-hello-svc サービスにルーティングされます。それ以外の場合、リクエストは他のサービスにルーティングされます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/order: "1"
   alb.ingress.kubernetes.io/conditions.gray-hello-svc: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
     [{
       "type": "Header",
       "headerConfig": {
          "key":"gray-hello",
           "values": [
              "value1",
              "value2"
           ]
       }
      },
      {
         "type": "SourceIp",
         "sourceIpConfig": {
           "values": [
             "192.168.0.0/16",
             "172.16.0.0/16"
           ]
         }
     }]
  name: gray-hello-ingress
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /hello
        pathType: ImplementationSpecific
        backend:
          service:
            name: gray-hello-svc # このバックエンドサービス名は、`conditions` アノテーションの名前と一致する必要があります。これにより、それらの条件が適用されます。
            port:
              number: 88

alb.ingress.kubernetes.io/order:Ingress の優先度を指定します。数値が小さいほど優先度が高くなります。

ユースケース 2:ドメイン、メソッド、Cookie のルーティング

この YAML は、ドメイン名、リクエストメソッド、Cookie が指定された条件に一致する場合にのみリクエストをルーティングする Ingress を定義します。

これは、リクエストメソッドが GET または HEAD であり、リクエストホストが example.com または *.edu であり、リクエスト Cookie のキーが cookiekey1 で値が cookievalue1 であり、リクエストパスが /test の場合にのみ、リクエストが service-a にルーティングされることを意味します。それ以外の場合、リクエストは service-b にルーティングされます。

説明

ドメイン名の転送ルールはワイルドカードをサポートしています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
     [{
       "type": "Cookie",
       "cookieConfig": {
         "values": [
           {
             "key":"cookiekey1",
             "value":"cookievalue1"
           }
        ]
       }
      },
      {
       "type": "Method",
       "methodConfig": {
         "values": [
           "GET",
           "HEAD"
         ]
       }
      },
     {
       "type": "Host",
       "hostConfig": {
           "values": [
              "example.com",
              "*.edu" 
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a # このバックエンドサービス名は、`conditions` アノテーションの名前と一致する必要があります。これにより、それらの条件が適用されます。
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

ユースケース 3:クエリ文字列、ヘッダー、パスのルーティング

この YAML は、クエリ文字列、ヘッダー、パスが指定された条件に一致する場合にのみリクエストをルーティングする Ingress を定義します。

これは、リクエストパスが /pathvalue1/pathvalue2、または /test であり、クエリ文字列のキーが querystringkey1 で値が querystringvalue2 であり、リクエストヘッダーに headerkey1headerkey2 が含まれている必要があることを意味します。さらに、headerkey1 を含むリクエストヘッダーの値は headervalue1 または headervalue2 でなければならず、headerkey2 を含むリクエストヘッダーの値は headervalue3 または headervalue4 でなければなりません。それ以外の場合、リクエストは service-b サービスにルーティングされます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: | # サービス名は spec.rules のバックエンドサービス名と一致する必要があります。これらの条件はそのサービスに適用されます。
     [{
       "type": "Path",
       "pathConfig": {
           "values": [
              "/pathvalue1",
              "/pathvalue2"
           ]
       }
      },
      {
       "type": "QueryString",
       "queryStringConfig": {
         "values": [
           {
             "key":"querystringkey1",
             "value":"querystringvalue2"
           }
        ]
       }
      },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey1",
           "values": [
              "headervalue1",
              "headervalue2"
           ]
       }
     },
     {
       "type": "Header",
       "headerConfig": {
          "key":"headerkey2",
           "values": [
              "headervalue3",
              "headervalue4"
           ]
       }
     }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a # このバックエンドサービス名は、`conditions` アノテーションの名前と一致する必要があります。これにより、それらの条件が適用されます。
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

転送アクション

転送アクション

ALB Ingress では、 alb.ingress.kubernetes.io/actions.<service-name> アノテーションを使用して、リクエストとレスポンスの転送アクションを設定できます。サポートされているアクションには、固定レスポンスの返却、リダイレクト、ヘッダーの挿入または削除、トラフィックミラーリング、複数のバックエンドサーバーグループへの転送、リクエストの書き換えなどがあります。これらの転送アクションを定義することで、ALB Ingress でリクエストとレスポンスがどのように処理されるかを柔軟に管理できます。

重要
  • alb.ingress.kubernetes.io/actions.<service-name> アノテーションでは、アノテーション内のサービス名が rule フィールドの backend の下にあるサービス名と一致することを確認してください。

  • 同じ転送ルールでは、リダイレクト、固定レスポンス、複数のサーバーグループへの転送など、終端となる転送アクションは 1 つだけ使用してください。

  • リダイレクト、固定レスポンス、または複数のサーバーグループへの転送を設定する場合、backend.service.port.nameuse-annotation に設定する必要があります。

リクエスト転送アクション

アクション

説明

固定レスポンス

Application Load Balancer (ALB) からクライアントに固定レスポンスを送信します。レスポンスのステータスコード、コンテンツ、コンテンツタイプを設定できます。以下のコードは例です。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
  [{
      "type": "FixedResponse",
      "FixedResponseConfig": {
          "contentType": "text/plain",
          "httpCode": "503",
          "content": "503 error text"
      }
  }]
  • type:転送アクションのタイプ。このアクションでは FixedResponse に設定します。

  • contentType:レスポンスボディのコンテンツタイプ。

  • httpCode:レスポンスステータスコード。

  • content:レスポンスボディ。

ユースケースと例については、「ユースケース 1:固定レスポンスの設定」をご参照ください。

リダイレクト

HTTP 3xx ステータスコードを使用して、クライアントを別のアドレスにリダイレクトします。以下のコードは例です。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
  [{
      "type": "Redirect",
      "RedirectConfig": {
          "host": "${host}",
          "path": "/test",
          "port": "443",
          "protocol": "https",
          "query": "querystring",
          "httpCode": "301"
      }
  }]
  • type:転送アクションのタイプ。このアクションでは Redirect に設定します。

  • host:リクエストがリダイレクトされるホスト。

  • path:リクエストがリダイレクトされるパス。

  • port:リクエストがリダイレクトされるポート。

  • protocol:リクエストがリダイレクトされるプロトコル。

  • query:リダイレクトされたリクエストのクエリ文字列。

  • httpCode:リダイレクト後に返されるステータスコード。

重要

hostpathportprotocolquery パラメーターを元のリクエストの値を使用するように設定できますが、少なくとも 1 つはデフォルト以外の値に設定する必要があります。たとえば、host${host} に設定するか、空のままにするか ("host": "")、またはパラメーターを含めない場合、元のリクエストの値が使用されます。

ユースケースと例については、「ユースケース 2:301 リダイレクトの使用」をご参照ください。

トラフィックミラーリング

リクエストをコピーし、トラフィックミラーリングサーバーグループに転送します。サーバーグループの ID を指定する必要があります。以下のコードは例です。

重要
  • トラフィックミラーリング転送アクションは、転送、ヘッダーの挿入、ヘッダーの削除、QPS 制限とのみ使用できます。書き換え、固定レスポンス、リダイレクトとは使用できません。

  • トラフィックミラーリングサーバーグループは、その ServerGroupID を指定することによってのみアタッチできます。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
      [{
          "type": "TrafficMirror",
          "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
      }]
  • type:転送アクションのタイプ。トラフィックミラーリングを設定するには、これを TrafficMirror に設定します。

  • TargetType:ミラーリングのターゲットタイプ。現在、サーバーグループにリクエストをミラーリングする ForwardGroupMirror のみがサポートされています。

  • ServerGroupID:トラフィックミラーリングサーバーグループの ID。

ユースケースと例については、「ユースケース 4:トラフィックのミラーリング」をご参照ください。

複数のバックエンドサーバーグループへの転送

ALB リクエストを複数のバックエンドサーバーグループに転送します。ServerGroupID を使用してバックエンドサーバーグループを指定するか、ServiceName+ServicePort を使用してサーバーグループを作成またはアタッチできます。また、各バックエンドサーバーグループに転送の重みを設定し、サーバーグループ間のセッション維持を有効にすることもできます。

重要
  • 標準の ALB インスタンスは、最大 5 つのサーバーグループにアタッチできます。

  • ServerGroupIDServiceName+ServicePort の両方を使用してサーバーグループをアタッチする場合、照合は ServerGroupID を優先します。

  • セッション維持が有効な場合、ALB Ingress は同じセッションからのリクエストを同じバックエンドに転送します。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 30,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             },
             {
               "ServerGroupID": "sgp-71aexb9y93ypo*****",
               "Weight": 20
             },
             {
               "ServerGroupID": "sgp-slygpbvm2cydo*****",
               "Weight": 30
             }],
             "ServerGroupStickySession": {
              "Enabled": true,
              "Timeout": 80
             }
           }
       }]
  • type:転送アクションのタイプ。複数のバックエンドサーバーグループへの転送を設定するには、これを ForwardGroup に設定します。

  • ForwardConfig:バックエンドサーバーグループのパラメーター。複数のサーバーグループを設定した場合、リクエストは各サーバーグループの重みに基づいて転送されます。

  • ServerGroupID:サーバーグループの ID。

  • ServiceName:サービスの名前。

  • ServicePort:サービスのポート。

  • Weight:各サーバーグループにリクエストを転送するための重み。

  • Enabled:サーバーグループ間のセッション維持を有効にするかどうかを指定します。

  • Timeout:サーバーグループ間のセッション維持のタイムアウト期間。

ユースケースと例については、「ユースケース 5:複数のサーバーグループへの転送」をご参照ください。

書き換え

バックエンドに転送する前にリクエストを書き換えます。Application Load Balancer (ALB) は、リクエストのホスト、パス、クエリ文字列を変更できます。

重要
  • 書き換えアクションは rewrite-target アノテーションと競合します。一緒に使用しないでください。

  • 書き換えアクションは、固定レスポンスまたはリダイレクトアクションとは使用できません。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
  • type:転送アクションのタイプ。書き換え機能を使用するには、これを Rewrite に設定します。

  • host:書き換えられたリクエストで使用されるホスト。これを ${host} に設定するか、空のままにするか ("host": "")、またはパラメーターを含めない場合、元のリクエストの値が使用されます。

  • path:書き換えられたリクエストで使用されるパス。これを ${path} に設定するか、空のままにするか ("path": "")、またはパラメーターを含めない場合、元のリクエストの値が使用されます。

  • query:書き換えられたリクエストのクエリ文字列。これを ${query} に設定するか、空のままにするか ("query": "")、またはパラメーターを含めない場合、元のリクエストの値が使用されます。

重要

パラメーター hostpathquery は、元のリクエストの値を使用するように設定できます。ただし、これらのパラメーターの少なくとも 1 つは、デフォルト以外の値に設定する必要があります。たとえば、host${host} に設定するか、空のままにするか ("host": "")、またはパラメーターを含めない場合、元のリクエストの値が使用されます。

ユースケースと例については、「ユースケース 6:リクエストの書き換え」をご参照ください。

ヘッダーの挿入

ヘッダーフィールド名とコンテンツを設定します。これにより、リクエスト内の同じ名前の既存のヘッダーが上書きされます。以下のコードは例です。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type:転送アクションのタイプ。リクエストヘッダーを挿入するには、これを InsertHeader に設定します。

  • key:ヘッダーフィールドの名前。

  • value:ヘッダーフィールドのコンテンツ。

  • valueType:値のタイプ。

ユースケースと例については、「ユースケース 3:リクエストヘッダーの挿入」をご参照ください。

ヘッダーの削除

リクエストからヘッダーを削除します。以下のコードは例です。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type:転送アクションのタイプ。リクエストヘッダーを削除するには、これを RemoveHeader に設定します。

key:削除するヘッダーフィールドの名前。

QPS 制限

このアクションは、リクエストレートを秒間クエリ数 (QPS) で制限します。全体的な制限と、クライアントのソース IP ごとの個別の制限を設定できます。

以下のコードは設定例です:

重要
  • QPS 制限転送アクションは、サーバーグループへの転送と組み合わせて使用する必要があります。

  • X-Forwarded-For リクエストヘッダーに複数の IP アドレスが含まれている場合 (例:X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …)、左端のアドレスが実際のクライアント IP です。クライアントのソース IP に基づく制限を使用するには、リスナーでクライアント IP アドレスの取得を有効にする必要があります。これにより、ALB インスタンスは X-Forwarded-For ヘッダーからクライアント IP アドレスを抽出できます。詳細については、「XForwardedForConfig」をご参照ください。

 annotations:
    alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
      [{
          "type": "TrafficLimit",
          "TrafficLimitConfig": {
              "QPS": "1000",
              "QPSPerIp": "100"
          }
      }]
  • type:転送アクションのタイプを指定します。レート制限を設定するには、これを TrafficLimit に設定します。

  • QPS:秒間クエリ数 (QPS) での全体的なリクエストレート制限。値は 1~1,000,000 の範囲である必要があります。リクエストレートが指定された制限を超えると、超過したリクエストは拒否され、クライアントは HTTP 503 ステータスコードを受け取ります。

  • QPSPerIp:クライアントのソース IP ごとのリクエストレート制限 (QPS)。値は 1~1,000,000 の範囲である必要があります。QPS (全体制限) と QPSPerIp (IP ごとの制限) の両方が設定されている場合、QPSPerIp の値は QPS の値より小さくなければなりません。単一の IP アドレスからのリクエストレートが指定された制限を超えると、超過したリクエストは拒否され、クライアントは HTTP 503 ステータスコードを受け取ります。

レスポンス転送アクション

アクション

説明

ヘッダーの挿入

レスポンスルールに適用されると、このアクションはレスポンスにヘッダーフィールドとその値を設定します。これにより、同じ名前の既存のレスポンスヘッダーが上書きされます。以下のコードは例です。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type:転送アクションのタイプ。レスポンスヘッダーを挿入するには、これを InsertHeader に設定します。

  • key:ヘッダーフィールドの名前。

  • value:ヘッダーフィールドのコンテンツ。

  • valueType:値のタイプ。

レスポンスヘッダーの変更に関するユースケースと例については、「ユースケース 7:レスポンスヘッダーの変更」および「ユースケース 8:ステータスコードによるレスポンスヘッダーの変更」をご参照ください。

ヘッダーの削除

レスポンスルールに適用されると、このアクションはレスポンスからヘッダーを削除します。以下のコードは例です。

alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type:転送アクションのタイプ。レスポンスヘッダーを削除するには、これを RemoveHeader に設定します。

key:削除するヘッダーフィールドの名前。

ユースケース 1:固定レスポンスの設定

コンソール

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

  2. クラスターリスト ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、ネットワーク > Ingress をクリックします。

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

    パラメーター

    説明

    ゲートウェイタイプ

    ビジネス要件に応じて、[ALB Ingress][MSE Ingress]、または [Nginx Ingress] を選択できます。

    3 つのゲートウェイタイプの違いについては、「Nginx Ingress、ALB Ingress、MSE Ingress の比較」をご参照ください。

    [ALB Ingress]

    名前

    Ingress のカスタム名。

    ingress

    Ingress クラス

    関連付けられた Ingress クラスの名前。

    alb

    ルール

    [+ ルールの追加] をクリックしてルーティングルールを追加します。

    • [ホスト]:カスタムホスト。

    • [マッピング]:以下のパラメーターを設定します。

      • [パス]URL パスに基づいてリクエストをルーティングします

      • [一致タイプ]

        • [プレフィックス一致]:リクエスト URL パスのプレフィックスに一致します。

        • [完全一致]:リクエスト URL パスに完全に一致します。

        • [ImplementationSpecific (デフォルト値)]:動作は Ingress コントローラーの実装に依存します。ALB Ingress の場合、これは完全一致にデフォルト設定されます。

      • [サービス]:ターゲットサービスを選択します。これは Kubernetes サービスです。

      • [ポート]:サービスが公開するポートを選択します。

    • Ingress は同じホストの下で複数のパスをサポートします。[+ 追加] をクリックしてパスを追加します。

    • [ホスト]:空のままにします。

    • [マッピング]

      • [パス]:/

      • [一致タイプ]:プレフィックス一致

      • [サービス]:response-503

      • [ポート]:80

    カスタム転送ルール

    詳細なトラフィック管理のためにカスタム転送ルールを設定します。

    説明

    1 つの転送ルールには、最大 10 個の条件を含めることができます。

    • [条件の追加] ドロップダウンリストからオプションを選択します。

      • ホスト

        リクエストホストに一致します。複数のホストを指定した場合、それらは OR 論理で評価されます。これを設定すると、alb.ingress.kubernetes.io/conditions.host-example アノテーションが追加されます。

      • [パス]

        リクエストパスに一致します。複数のパスを指定した場合、それらは OR 論理で評価されます。これを設定すると、alb.ingress.kubernetes.io/conditions.path-example アノテーションが追加されます。

      • [HTTP ヘッダー]

        キーと値のペアとしてリクエストヘッダー情報に一致します。たとえば、[キー]headername に、[値]headervalue1 に設定します。複数のヘッダー値を指定した場合、それらは OR 論理で評価されます。これを設定すると、alb.ingress.kubernetes.io/conditions.http-header-example アノテーションが追加されます。

    • [アクション] ドロップダウンリストからオプションを選択します。

      [固定レスポンスを返す]

      ALB を介してクライアントに固定レスポンスを返します。レスポンスのステータスコード、コンテンツ、コンテンツタイプを設定できます。必要に応じて、[レスポンスステータスコード][レスポンスコンテンツタイプ (オプション)][レスポンスコンテンツ (オプション)] を設定します。

      レスポンスコンテンツタイプ

      • [text/plain]:プレーンテキストのコンテンツタイプ。

      • text/css: CSS のコンテンツタイプです。

      • [text/html]:HTML のコンテンツタイプ。

      • application/javascript: JavaScript のコンテンツタイプです。

      • application/json: JSON コンテンツタイプです。

    • [条件の追加][パス] を選択します。(デフォルト値を維持)

    • [アクション][固定レスポンスを返す]

      • [レスポンスステータスコード]:503

      • [レスポンスコンテンツタイプ (オプション)][text/plain]

      • [レスポンスコンテンツ (オプション)]:error

    他のパラメーターはデフォルト値のままにします。

  4. 設定が完了したら、OK をクリックします。

Kubectl

以下の YAML は、サービスへのリクエストが行われたときに 503 ステータスコードとテキスト 503 error text を返す方法の例を示しています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
      [{
          "type": "FixedResponse",
          "FixedResponseConfig": {
              "contentType": "text/plain",
              "httpCode": "503",
              "content": "503 error text"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service-name  # 注:バックエンドサービスの名前は、カスタム転送アクションアノテーションの "service-name" と一致する必要があります。転送アクションはこのバックエンドサービスに適用されます。
                port:
                  name: use-annotation # サービスポート名は use-annotation に設定する必要があります。

ユースケース 2:301 リダイレクトの使用

この YAML の例は、リクエストをサービスの HTTPS ポートにリダイレクトする方法を示しています。

リダイレクト

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect: | # 注:このアノテーションの "redirect" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "demo.domain.ingress.top",
              "path": "/test",
              "port": "443",
              "protocol": "https",
              "query": "querystring",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect # 注:バックエンドサービスの名前は、カスタム転送アクションアノテーションの "redirect" と一致する必要があります。転送アクションはこのバックエンドサービスに適用されます。
                port:
                  name: use-annotation # サービスポート名は use-annotation に設定する必要があります。

複数のリダイレクト

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/listen-ports: |
     [{"HTTP": 8001}]
    alb.ingress.kubernetes.io/actions.redirect-1: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "demo.domain.ingress.top",
              "path": "/test",
              "port": "443",
              "protocol": "https",
              "query": "querystring",
              "httpCode": "301"
          }
      }]
    alb.ingress.kubernetes.io/actions.redirect-2: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "demo.domain.ingress.top",
              "path": "/test",
              "port": "443",
              "protocol": "https",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: ml-test-ingressclass-rolechain-2
  rules:
    - http:
        paths:
          - path: /foo
            pathType: Prefix
            backend:
              service:
                name: redirect-1
                port:
                  name: use-annotation 
          - path: /bar
            pathType: Prefix
            backend:
              service:
                name: redirect-2
                port:
                  name: use-annotation

ユースケース 3:リクエストヘッダーの挿入

この YAML の例は、リクエストヘッダーを source: alibaba に追加または上書きする方法を示しています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.insert-header: | # 注:このアノテーションの "insert-header" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
      [{
          "type": "InsertHeader",
          "InsertHeaderConfig": {
              "key": "source",
              "value": "alibaba",
              "valueType": "UserDefined"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: insert-header # 注:バックエンドサービスの名前は、カスタム転送アクションアノテーションの "insert-header" と一致する必要があります。転送アクションはこのバックエンドサービスに適用されます。
                port:
                  number: 80

ユースケース 4:トラフィックのミラーリング

以下の YAML は、トラフィックをサーバーグループにミラーリングする方法の例を示しています。

Application Load Balancer (ALB) コンソールにログインします。左側のナビゲーションウィンドウで、[Application Load Balancer] > [サーバーグループ] を選択します。[サーバーグループ] ページで、サーバーグループ ID を取得します。服务器组

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # mirror-svc は、以下で指定された backend.service 名のいずれかである必要があります。
  # ALB Ingress は、mirror-svc に転送されるトラフィックを "ServerGroupID" で指定されたバックエンドサーバーにミラーリングします。
  # 複数のサービスに対してトラフィックミラーリングを設定するには、各サービスに個別のアノテーションを追加します。
   alb.ingress.kubernetes.io/actions.mirror-svc: | # 注:このアノテーションの "mirror-svc" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
       [{
           "type": "TrafficMirror",
           "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /test
        pathType: Prefix
        backend:
          service:
            name: mirror-svc # 注:バックエンドサービスの名前は、カスタム転送アクションアノテーションの "mirror-svc" と一致する必要があります。転送アクションはこのバックエンドサービスに適用されます。
            port:
              number: 80

ユースケース 5:複数のサーバーグループへの転送

コンソール

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

  2. クラスターリスト ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、ネットワーク > Ingress をクリックします。

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

    パラメーター

    説明

    ゲートウェイタイプ

    ビジネス要件に応じて、[ALB Ingress][MSE Ingress]、または [Nginx Ingress] を選択できます。

    3 つのゲートウェイタイプの違いについては、「Nginx Ingress、ALB Ingress、MSE Ingress の比較」をご参照ください。

    [ALB Ingress]

    名前

    Ingress のカスタム名。

    forward-ingress

    Ingress クラス

    関連付けられた Ingress クラスの名前。

    alb

    ルール

    [+ ルールの追加] をクリックしてルーティングルールを追加します。

    • [ホスト]:カスタムホスト。

    • [マッピング]:以下のパラメーターを設定します。

      • [パス]URL パスに基づいてリクエストをルーティングします

      • マッチタイプ

        • [プレフィックス一致]:リクエスト URL パスのプレフィックスに一致します。

        • [完全一致]:リクエスト URL パスに完全に一致します。

        • [ImplementationSpecific (デフォルト値)]:Ingress コントローラーによって実装されたロジックに依存します。ALB Ingress は完全一致ロジックを使用します。

      • [サービス]:ターゲットサービスを選択します。これは Kubernetes サービスです。

      • [ポート]:サービスが公開するポートを選択します。

    • Ingress は同じホストの下で複数のパスをサポートします。[+ 追加] をクリックしてパスを追加します。

    • [ホスト]:demo.domain.ingress.top

    • [マッピング]

      • [パス]:/path

      • [一致タイプ]:プレフィックス一致

      • サービス: 転送

      • [ポート]:80

    カスタム転送ルール

    インバウンドトラフィックを詳細に制御するために、カスタム転送ルールを有効にします。

    説明

    1 つの転送ルールには、最大 10 個の条件を含めることができます。

    • [条件の追加] ドロップダウンリストからオプションを選択します。

      • ホスト

        リクエストホストに一致します。複数のホストを指定した場合、それらは OR 論理で評価されます。これを設定すると、alb.ingress.kubernetes.io/conditions.host-example アノテーションが追加されます。

      • [パス]

        リクエストパスに一致します。複数のパスを指定した場合、それらは OR 論理で評価されます。これを設定すると、alb.ingress.kubernetes.io/conditions.path-example アノテーションが追加されます。

      • [HTTP ヘッダー]

        キーと値のペアとしてリクエストヘッダー情報に一致します。たとえば、[キー]headername に、[値]headervalue1 に設定します。複数のヘッダー値を指定した場合、それらは OR 論理で評価されます。これを設定すると、alb.ingress.kubernetes.io/conditions.http-header-example アノテーションが追加されます。

    • [アクション] ドロップダウンリストからオプションを選択します。

      [転送先]

      リクエストを複数のバックエンドサーバーグループに転送します。[サービス名] フィールドでターゲットサービスを選択します。[ポート] フィールドでターゲットポート番号を選択します。次に、カスタムの重み値を設定します。

      説明
      • Flannel ネットワークプラグインを使用するクラスターでは、ClusterIP サービスはサポートされていません。

      • [転送先] を選択した場合、ルールでパスのマッピングを設定する必要はありません。

    • [条件の追加][ホスト] を選択します。ホスト:demo.domain.ingress.top

    • [アクション][転送先]

      • [サービス名]:tea-svc

      • [ポート]:80

      • 重みの設定:80

    • [サービスの追加]

      • [サービス名]:coffee-svc

      • [ポート]:80

      • 重みの設定:20

    他のパラメーターはデフォルト値のままにします。

  4. 設定が完了したら、[Ingress の作成] ページ左下の [OK] をクリックします。

Kubectl

以下の YAML は、クラスター内の複数のサービスにリクエストを転送する方法の例を示しています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: forward-ingress
  annotations:
  # アノテーション内のサービスはクラスター内に存在する必要があり、その名前は rule フィールドの backend の下のサービス名と一致する必要があります。
    alb.ingress.kubernetes.io/actions.service-name: | # 注:このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
       [{
           "type": "ForwardGroup",
           "ForwardConfig": {
             "ServerGroups" : [{
               "ServiceName": "tea-svc",
               "Weight": 80,
               "ServicePort": 80
             },
             {
               "ServiceName": "coffee-svc",
               "Weight": 20,
               "ServicePort": 80
             }]
           }
       }]
spec:
  ingressClassName: alb
  rules:
   - host: demo.domain.ingress.top
     http:
      paths:
      - path: /path
        pathType: Prefix
        backend:
          service:
            name: service-name # 注:バックエンドサービスの名前は、カスタム転送アクションアノテーションの "service-name" と一致する必要があります。転送アクションはこのバックエンドサービスに適用されます。
            port:
              name: use-annotation # サービスポート名は use-annotation に設定する必要があります。

ユースケース 6:リクエストの書き換え

書き換えは、リクエストがバックエンドに転送される前に URL を変更します。ALB Ingress はホスト、パス、クエリ文字列を変更でき、URL の簡素化、クライアントに透過的なリダイレクトの実行、バックエンドの実装詳細の隠蔽に役立ちます。以下の例では、alb.ingress.kubernetes.io/actions.service-name アノテーションを使用して書き換えが設定されています。

たとえば、クライアントが https://example.com/api/users にアクセスすると、書き換えによって URL は https://example.org/users に変更されますが、元のクエリ文字列は保持されます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/actions.service-name: | # このアノテーションの "service-name" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "example.org", 
               "Path": "/users", 
               "Query": "${query}" # ${query} は、元のリクエストのクエリ文字列が使用されることを示します。 
           }
       }]
spec:
  ingressClassName: alb
  rules:
    - host: example.com
      http:
        paths:
          - path: /api/users
            pathType: ImplementationSpecific
            backend:
              service:
                name: service-name # バックエンドサービスの名前は、カスタム転送アクションアノテーションの "service-name" と一致する必要があります。転送アクションはこのバックエンドサービスに適用されます。
                port: 
                  number: 80

ユースケース 7:レスポンスヘッダーの変更

重要
  • デフォルトでは、ALB Ingress の転送ルールはリクエストに適用されます。ルールをレスポンスに適用するには、alb.ingress.kubernetes.io/rule-direction.<service-name> アノテーションを Response に設定する必要があります。

  • レスポンスの転送ルールを作成する場合、backend.service.port.nameuse-annotation に設定する必要があります。

以下のコードブロックは、ResponseHeader が一致した場合、つまりヘッダーに値が value1 または value2response-hello が含まれている場合に、新しいリクエストヘッダー source: alibaba を挿入することを定義しています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-header: Response
   alb.ingress.kubernetes.io/conditions.response-header: | # 注:このアノテーションの "response-header" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送条件はそのバックエンドサービスに適用されます。
     [{
         "type": "ResponseHeader",
         "responseHeaderConfig": {
            "key": "response-hello",
            "values": [
               "value1",
               "value2"
            ]
         }
     }]
   alb.ingress.kubernetes.io/actions.response-header: | # 注:このアノテーションの "response-header" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
     [{
         "type": "InsertHeader",
         "InsertHeaderConfig": {
             "key": "source",
             "value": "alibaba",
             "valueType": "UserDefined"
         }
     }]
  name: response-header
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-header # 注:バックエンドサービスの名前は、カスタム転送条件およびアクションアノテーションの "response-header" と一致する必要があります。設定された条件とアクションはこのバックエンドサービスに適用されます。
            port:
              name: use-annotation # サービスポート名は use-annotation に設定する必要があります。

ユースケース 8:ステータスコードによるレスポンスヘッダーの変更

重要
  • デフォルトでは、ALB Ingress の転送ルールはリクエストに適用されます。ルールをレスポンスに適用するには、alb.ingress.kubernetes.io/rule-direction.<service-name> アノテーションを Response に設定する必要があります。

  • レスポンスの転送ルールを作成する場合、backend.service.port.nameuse-annotation に設定する必要があります。

この YAML の例では、レスポンスステータスコードが 200 または 300 の場合に、レスポンスから response-hello ヘッダーを削除します。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/rule-direction.response-hello: Response
   alb.ingress.kubernetes.io/conditions.response-hello: | # 注:このアノテーションの "response-hello" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送条件はそのバックエンドサービスに適用されます。
     [{
       "type": "ResponseStatusCode",
       "responseStatusCodeConfig": {
         "values": [
             "200",
             "300"
         ]
       }
     }]
   alb.ingress.kubernetes.io/actions.response-hello: | # 注:このアノテーションの "response-hello" は、spec.rules で設定されたバックエンドサービスの名前と一致する必要があります。転送アクションはそのバックエンドサービスに適用されます。
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "response-hello"
         }
     }]
  name: response-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-hello # 注:バックエンドサービスの名前は、カスタム転送条件およびアクションアノテーションの "response-hello" と一致する必要があります。設定された条件とアクションはこのバックエンドサービスに適用されます。
            port:
              name: use-annotation # サービスポート名は use-annotation に設定する必要があります。

転送条件とアクション

ユースケース 1:ドメイン名に基づくトラフィックの転送

このセクションでは、ACK コンソールでドメイン名に基づいて転送条件とアクションを設定し、特定のサービスにトラフィックをルーティングする方法を説明します。

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

  2. クラスターリスト ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、ネットワーク > Ingress をクリックします。

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

    パラメーター

    説明

    ゲートウェイタイプ

    ビジネス要件に応じて、[ALB Ingress][MSE Ingress]、または [Nginx Ingress] を選択できます。

    3 つのゲートウェイタイプの違いについては、「Nginx Ingress、ALB Ingress、MSE Ingress の比較」をご参照ください。

    ALB イングレス

    名前

    Ingress のカスタム名。

    alb_ingress

    Ingress クラス

    関連付けられた IngressClass の名前。

    alb

    [ルール]

    [+ ルールの追加] をクリックして、1 つ以上のルーティングルールを追加します。

    • [ドメイン名]:カスタムドメイン名。

    • [マッピング]:以下のパラメーターを設定します。

      • [パス]リクエストマッチングのための URL パス

      • [ルール]

        • [プレフィックス (プレフィックス一致)]:リクエスト URL パスのプレフィックスに一致します。

        • [完全 (完全一致)]:リクエスト URL パスに完全に一致します。

        • [ImplementationSpecific (デフォルト)]:動作は Ingress コントローラーの実装に依存します。ALB Ingress の場合、このオプションは完全一致として機能します。

      • [サービス名]:ターゲットサービスを選択します。これは Kubernetes サービスです。

      • [ポート]:サービスが公開するポートを選択します。

    • Ingress は同じドメイン名の下で複数のパスをサポートします。[+ パスの追加] をクリックして、さらにパスを追加します。

    • [ドメイン名]:*.example.com

    • [マッピング]

      • [パス]:/tes

      • ルール:ImplementationSpecific

      • [サービス名]:tea-svc

      • [ポート]:80

    [カスタム転送ルール]

    インバウンドトラフィックを詳細に制御するために、カスタム転送ルールを定義します。

    説明

    1 つの転送ルールには、最大 10 個の条件を含めることができます。

    • [条件] ドロップダウンリストからオプションを選択します。

      • ドメイン名

        リクエストのドメイン名に一致します。複数のドメイン名を指定した場合、それらは OR 論理で評価されます。この条件が設定されると、alb.ingress.kubernetes.io/conditions.host-example アノテーションが追加されます。

      • [パス]

        リクエストパスに一致します。複数のパスを指定した場合、それらは OR 論理で評価されます。この条件が設定されると、alb.ingress.kubernetes.io/conditions.path-example アノテーションが追加されます。

        重要

        パス転送条件を設定すると、コンソールは自動的にパス /created-by-<ALB-ID> を持つ転送ルールを Ingress に追加します。

      • [HTTP ヘッダー]

        リクエストヘッダー内の指定されたキーと値のペアに一致します。たとえば、[キー]headername に、[値]headervalue1 に設定します。複数のヘッダー値を指定した場合、それらは OR 論理で評価されます。この条件が設定されると、alb.ingress.kubernetes.io/conditions.http-header-example アノテーションが追加されます。

    • [アクション] ドロップダウンリストからオプションを選択します。

      • [転送先]

        リクエストを複数のバックエンドサーバーグループに転送します。[サービス名] フィールドでターゲットサービスを選択します。[ポート] フィールドでターゲットポートを選択します。次に、重みを設定します。

        説明

    • [条件][ドメイン名][パス][HTTP ヘッダー] を選択します。

      • [ドメイン名]:example.com。[ドメイン名の追加] をクリックして、test.com などの別のドメイン名を追加します。

    • [アクション][転送先] を選択します。

      • [サービス名]:tea-svc

      • [ポート]:80

      • 重み: 100

    他のパラメーターはデフォルト値のままにします。

  4. 設定は完了です。[Ingress の作成] ページの左下隅にある [OK] をクリックします。