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

:ALBイングレスのルーティング規則のカスタマイズ

最終更新日:Jan 04, 2025

Application Load Balancer(ALB)イングレスを使用すると、カスタムルーティング規則を設定できます。ルーティング規則は、ルーティング条件とアクションで構成されます。リクエスト内のドメイン名、パス、リクエストヘッダー、クエリ文字列、リクエストメソッド、Cookie、または送信元IPアドレスに一致するルーティング条件を追加できます。また、固定レスポンスを返す、リクエストをリダイレクトする、リクエストヘッダーを挿入する、リクエストヘッダーを削除する、トラフィックをミラーリングする、複数のバックエンドサーバーグループにリクエストを転送する、またはリクエストを書き換えるルーティングアクションを追加することもできます。このトピックでは、ALBイングレスのルーティング規則をカスタマイズする方法について説明します。

前提条件

ALBイングレスコントローラー 2.5.0以降がクラスターにインストールされています。詳細については、「コンポーネントの管理」をご参照ください。

説明

ALBコンソールでALBイングレスのカスタムルーティング規則を設定できます。この機能はカナリーリリースされています。この機能を使用するには、チケットを送信してください。

ルーティング条件

重要
  • 1つのルーティング規則には最大10個のルーティング条件を追加できます。

  • ルーティング条件ResponseHeaderとResponseStatusCodeは、カスタムアウトバウンドルーティング規則でのみ有効です。

ルーティング条件の概要

ALBイングレスでは、alb.ingress.kubernetes.io/conditions.<サービス名>アノテーションでルーティング条件を設定できます。異なるルールブロック間の論理関係はANDです。1つのルールブロックで複数の値が指定されている場合、値間の論理関係はORです。たとえば、2つのヘッダールールブロックを設定した場合、2つのヘッダールールブロック間の論理関係はANDです。ヘッダールールブロックで複数のヘッダーを設定した場合、ヘッダー間の論理関係はORです。次の表に、ALBイングレスに作成できるルーティング規則を示します。

ルーティング条件

説明

ドメイン名

指定されたドメイン名宛てのリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.host-example: |
  [{
      "type": "Host",
      "hostConfig": {
        "values": [
          "anno.example.com"
        ]
      }
  }]
  • type: ルーティング条件のタイプ。ドメイン名に基づいてリクエストを照合するには、値を Host に設定します。

  • HostConfig: リクエストの照合に使用されるドメイン名。複数のドメイン名を指定した場合、ドメイン名間の論理関係はORです。

リクエストがリダイレクトされるURL。

指定されたパスに送信されたリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.path-example: |
  [{
    "type": "Path",
    "pathConfig": {
      "values": [
        "/pathvalue1",
        "/pathvalue2"
      ]
    }
  }]
  • type: ルーティング条件のタイプ。パスに基づいてリクエストを照合するには、値を Path に設定します。

  • pathConfig: リクエストの照合に使用されるパス。複数のパスを指定した場合、パス間の論理関係はORです。

ヘッダー

指定されたヘッダーを含むリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.http-header-example: |
  [{
    "type": "Header",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: ルーティング条件のタイプ。ヘッダーに基づいてリクエストを照合するには、値を Header に設定します。

  • headerConfig: リクエストの照合に使用されるキーと値のペア。複数のヘッダー値を指定した場合、ヘッダー値間の論理関係はORです。

クエリ文字列

指定されたクエリ文字列を含むリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.query-string-example: |
  [{
    "type": "QueryString",
    "queryStringConfig": {
      "values": [
        {
           "key":"querystringkey1",
           "value":"querystringvalue2"
        }
      ]
    }
  }]
  • type: ルーティング条件のタイプ。クエリ文字列に基づいてリクエストを照合するには、値を QueryString に設定します。

  • queryStringConfig: リクエストの照合に使用されるキーと値のペア。キーと値の長さは1~100文字で、小文字、表示可能な文字、アスタリスク(*)、疑問符(?)を含めることができます。キーと値には、スペース文字または次の特殊文字を含めることはできません:# [] {} \ | <> &。複数のクエリ文字列を指定した場合、クエリ文字列間の論理関係はORです。

リクエストメソッド

指定されたリクエストメソッドを使用するリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.http-method-example: |
  [{
    "type": "Method",
    "methodConfig": {
      "values": [
        "GET",
        "HEAD"
      ]
    }
  }]
  • type: ルーティング条件のタイプ。リクエストメソッドに基づいてリクエストを照合するには、値を Method に設定します。

  • methodConfig: リクエストの照合に使用されるリクエストメソッド。サポートされているメソッドは、GET、POST、PUT、DELETE、HEAD、OPTIONS、およびPATCHです。複数のリクエストメソッドを指定した場合、リクエストメソッド間の論理関係はORです。

Cookie

指定されたCookieを含むリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.http-cookie-example: |
  [{
    "type": "Cookie",
    "cookieConfig": {
      "values": [
        {
           "key":"cookiekey1",
           "value":"cookievalue2"
        }
      ]
     }
  }]
  • type: ルーティング条件のタイプ。Cookieに基づいてリクエストを照合するには、値を Cookie に設定します。

  • cookieConfig: リクエストの照合に使用されるキーと値のペア。キーと値の長さは1~100文字で、小文字、表示可能な文字、アスタリスク(*)、疑問符(?)を含めることができます。キーと値には、スペース文字または次の特殊文字を含めることはできません:# [] {} \ | <> &。複数のCookieを指定した場合、Cookie間の論理関係はORです。

SourceIP

指定された送信元IPアドレスからのリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.source-ip-example: |
  [{
    "type": "SourceIp",
    "sourceIpConfig": {
      "values": [
        "192.168.0.0/16",
        "172.16.0.0/16"
      ]
    }
  }]
  • type: ルーティング条件のタイプ。送信元IPアドレスに基づいてリクエストを照合するには、値を SourceIP に設定します。

  • sourceIpConfig: リクエストの照合に使用される送信元IPアドレス。複数の送信元IPアドレスを指定した場合、送信元IPアドレス間の論理関係はORです。

ResponseHeader

指定されたレスポンスヘッダーを含むレスポンスのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.response-header-example: |
  [{
    "type": "ResponseHeader",
    "headerConfig": {
      "key": "headername",
      "values": [
        "headervalue1",
        "headervalue2"
      ]
     }
  }]
  • type: ルーティング条件のタイプ。レスポンスヘッダーに基づいてレスポンスを照合するには、値をResponseHeaderに設定します。

  • headerConfig: レスポンスの照合に使用されるキーと値のペア。複数のヘッダー値を指定した場合、ヘッダー値間の論理関係はORです。

ResponseStatusCode

指定されたステータスコードを返すリクエストのみをルーティングするために、この条件を追加できます。例:

alb.ingress.kubernetes.io/conditions.response-code-example: |
  [{
    "type": "ResponseStatusCode",
    "responseStatusCodeConfig": {
      "values": [
        "statuscode1",
        "statuscode2"
      ]
    }
  }]
  • type: ルーティング条件のタイプ。レスポンスステータスコードに基づいてリクエストを照合するには、値をResponseStatusCodeに設定します。

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

シナリオ1: 送信元IPアドレスとリクエストヘッダーに基づいてトラフィックをルーティングする

重要

1つのルーティング規則のカスタム条件には、最大5つの送信元IPアドレスを追加できます。

次のコードブロックは、送信元IPアドレス、リクエストヘッダー、およびパスに基づいてパケットをルーティングするために使用されます。

次のコードブロックでは、送信元IPアドレスは 192.168.0.0/16 と 172.16.0.0/16 に設定され、ヘッダーキーは gray-hello に設定され、ヘッダー値は value1value2 に設定され、パスは /hello に設定されています。送信元IPアドレス、ヘッダー、およびパスが上記のすべての条件に一致するリクエストのみが gray-hello サービスにルーティングされます。その他のリクエストは他のサービスにルーティングされます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/order: "1"
   alb.ingress.kubernetes.io/conditions.gray-hello: |
     [{
       "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
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /hello
        pathType: ImplementationSpecific
        backend:
          service:
            name: gray-hello
            port:
              number: 88

alb.ingress.kubernetes.io/order: Ingressの優先順位。値が小さいほど優先順位が高くなります。

シナリオ2: ドメイン名、リクエストメソッド、およびCookieに基づいてトラフィックをルーティングする

次のコードブロックは、ドメイン名、リクエストメソッド、およびCookieに基づいてパケットをルーティングするために使用されます。

次のコードブロックでは、リクエストメソッドは GETHEAD に設定され、ドメイン名は www.hostvalue1.eduwww.hostvalue2.edu に設定され、Cookieのキーは cookiekey1 に設定され、Cookieの値は cookievalue1 に設定され、パスは /test に設定されています。ドメイン名、リクエストメソッド、Cookie、およびパスが上記のすべての条件に一致するリクエストのみが gray-hello サービスにルーティングされます。その他のリクエストは service-b サービスにルーティングされます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "type": "Cookie",
       "cookieConfig": {
         "values": [
           {
             "key":"cookiekey1",
             "value":"cookievalue1"
           }
        ]
       }
      },
      {
       "type": "Method",
       "methodConfig": {
         "values": [
           "GET",
           "HEAD"
         ]
       }
      },
     {
       "type": "Host",
       "hostConfig": {
           "values": [
              "www.hostvalue1.edu",
              "www.hostvalue2.edu"
           ]
       }
      }]
  name: ingress-example
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-a
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

シナリオ3: クエリ文字列、複数のリクエストヘッダー、および複数のパスに基づいてトラフィックをルーティングする

次のコードブロックでは、パケットはクエリ文字列、リクエストヘッダー、およびパスに基づいてルーティングされます。

次のコードブロックでは、パスは /pathvalue1/pathvalue2、および /test に設定され、クエリ文字列キーは querystringkey1 に設定され、クエリ文字列値は querystringvalue2 に設定されています。さらに、コードブロックでは、リクエストに headerkey1headerkey2 が含まれている必要があることを指定しています。headerkey1 のヘッダー値は headervalue1 または headervalue2 でなければならず、headervalue2 のヘッダー値は headervalue3 または headervalue4 でなければなりません。クエリ文字列、リクエストヘッダー、およびパスが上記のすべての条件に一致するリクエストのみが service-a サービスにルーティングされます。その他のリクエストは service-b サービスにルーティングされます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
   alb.ingress.kubernetes.io/conditions.service-a: |
     [{
       "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
            port:
              number: 88
      - path: /test
        pathType: ImplementationSpecific
        backend:
          service:
            name: service-b
            port:
              number: 88

ルーティングアクション

ルーティングアクションの概要

ALBイングレスでは、alb.ingress.kubernetes.io/actions.<サービス名>アノテーションで、インバウンドおよびアウトバウンドルーティング規則のルーティングアクションを設定できます。固定レスポンスを返す、リクエストをリダイレクトする、リクエストヘッダーを挿入する、リクエストヘッダーを削除する、トラフィックをミラーリングする、複数のバックエンドサーバーグループにリクエストを転送する、またはリクエストを書き換えるルーティングアクションを追加できます。ALBイングレスでは、必要に応じてリクエストとレスポンスを処理するために、さまざまなルーティングアクションを定義できます。

重要
  • alb.ingress.kubernetes.io/actions.<Service name> アノテーションのサービス名は、backend 内の rule フィールドで指定されたサービス名と同じである必要があります。

  • 同じルーティングルールでは、複数の終了アクションを同時に追加することはできません。たとえば、固定応答を返す、リクエストをリダイレクトする、または複数のバックエンドサーバーグループにリクエストを転送するルーティングアクションを同時に追加することはできません。

  • 固定応答を返す、リクエストをリダイレクトする、または複数のバックエンドサーバーグループにリクエストを転送するルーティングアクションを追加する場合、サービスポートbackendrule フィールドの アノテーションを使用 で指定された servicePort の名前は、 である必要があります。

受信ルーティング規則のルーティング アクション

ルーティングアクション

説明

固定レスポンスを返す

ALB Ingress を設定して、クライアントに固定コンテンツを返すことができます。クライアントに返されるステータスコード、コンテンツ、およびコンテンツのタイプを指定できます。例:

alb.ingress.kubernetes.io/actions.response-503: |
  [{
      "type": "FixedResponse",
      "FixedResponseConfig": {
          "contentType": "text/plain",
          "httpCode": "503",
          "content": "503 error text"
      }
  }]
  • type: ルーティングアクションのタイプ。固定レスポンスを返すには、値を FixedResponse に設定します。

  • contentType: 返されるコンテンツのタイプ。

  • httpCode: 返されるステータスコード。

  • content: 返されるコンテンツ。

リクエストをリダイレクトする

HTTP 3XX ステータスコードを使用して、リクエストを他のサービスアドレスにリダイレクトできます。例:

重要

httpCode を除き、すべてのリダイレクトパラメーターのデフォルト設定を同時に維持することはできません。

alb.ingress.kubernetes.io/actions.redirect: |
  [{
      "type": "Redirect",
      "RedirectConfig": {
          "host": "${host}",
          "path": "${path}",
          "port": "${port}",
          "protocol": "${protocol}",
          "query": "${query}",
          "httpCode": "301"
      }
  }]
  • type: ルーティングアクションのタイプ。リクエストをリダイレクトするには、値を Redirect に設定します。

  • host: リクエストがリダイレクトされるドメイン名。

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

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

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

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

  • httpCode: リダイレクトされたリクエストのステータスコード。

トラフィックをミラーリングする

サーバーグループの ID を指定して、トラフィックを指定したサーバーグループにミラーリングできます。例:

重要
  • トラフィックミラーリングアクションは、リクエストの転送、ヘッダーの書き込み、ヘッダーの削除、およびトラフィックの調整に使用するアクションとのみ一緒に使用できます。このアクションは、リクエストの書き換え、固定レスポンスの返却、およびリクエストのリダイレクトに使用するアクションとは相互に排他的です。

  • ServerGroupID パラメーターのみを使用して、トラフィックがミラーリングされるサーバーグループを指定できます。

alb.ingress.kubernetes.io/actions.traffic-mirror: |
      [{
          "type": "TrafficMirror",
          "TrafficMirrorConfig": {
              "TargetType" : "ForwardGroupMirror",
              "MirrorGroupConfig": {
                  "ServerGroupTuples" : [{
                      "ServerGroupID": "sgp-2auud2fxj1r46*****"
                  }]
              }
           }
      }]
  • type: アクションのタイプ。トラフィックをミラーリングするには、値を TrafficMirror に設定します。

  • TargetType: トラフィックがミラーリングされる宛先のタイプ。指定したサーバーグループにトラフィックをミラーリングするには、値を ForwardGroupMirror に設定します。

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

複数のバックエンドサーバーグループにリクエストを転送する

複数のバックエンドサーバーグループにリクエストを転送するには、ServerGroupID フィールドを設定してサーバーグループ ID を指定するか、ServiceName と ServicePort フィールドを設定してサーバーグループを作成または関連付ける必要があります。各バックエンドサーバーグループの重みを指定することもできます。例:

重要
  • 標準 ALB インスタンスには、最大 5 つのバックエンドサーバーグループを関連付けることができます。

  • ServerGroupIDServiceName、および ServicePort フィールドを同時に設定してバックエンドサーバーグループを関連付ける場合、ServerGroupID フィールドが優先されます。

alb.ingress.kubernetes.io/actions.forward: |
       [{
           "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
             }]
           }
       }]
  • type: アクションのタイプ。複数のバックエンドサーバーグループにリクエストを転送するには、値を ForwardGroup に設定します。

  • ForwardConfig: バックエンドサーバーグループの設定。リクエストは、重みに基づいて複数のサーバーグループに転送されます。

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

  • ServiceName: ALB インスタンスを使用して公開されるサービスの名前。

  • ServicePort: サービスポート。

  • Weight: サーバーグループの重み。

リクエストを書き換える

ALB インスタンスの書き換えルールを設定すると、リクエストのドメイン名、パス、およびクエリ文字列が書き換えられます。例:

重要
  • 書き換えアクションは、rewrite-target アノテーションと競合します。書き換えアクションを設定する場合は、rewrite-target アノテーションを指定しないでください。

  • リクエストを書き換えるルーティングアクションと固定レスポンスを返すルーティングアクションを同時に追加することはできません。リクエストを書き換えるルーティングアクションとリクエストをリダイレクトするルーティングアクションを同時に追加することはできません。

alb.ingress.kubernetes.io/actions.rewrite: |
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "querystring"
           }
       }]
  • type: アクションのタイプ。リクエストを書き換えるには、値を Rewrite に設定します。

  • RewriteConfig: 書き換えルールの設定。

  • Host: 一致するドメイン名を書き換えます。

  • Path: 一致するパスを書き換えます。

  • Query: 一致するクエリ文字列を書き換えます。

書き換えルールの詳細については、「書き換えルールを設定する」をご参照ください。

リクエストヘッダーを挿入する

ヘッダーフィールドの名前と値を指定して、リクエスト内の既存のヘッダー変数を上書きできます。例:

alb.ingress.kubernetes.io/actions.insert-header: |
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: ルーティングアクションのタイプ。リクエストヘッダーを挿入するには、値を InsertHeader に設定します。

  • key: 挿入するヘッダーフィールドの名前。

  • value: 挿入するヘッダーフィールドの値。

  • valueType: 値のタイプ。

リクエストヘッダーを削除する

リクエストヘッダーのキーと値を削除できます。例:

alb.ingress.kubernetes.io/actions.remove-header: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: ルーティングアクションのタイプ。リクエストヘッダーを削除するには、値を RemoveHeader に設定します。

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

QPS 調整

ALB インスタンスの転送ルールを設定する際に、グローバルリクエストレート制限とクライアント IP アドレスに基づくリクエストレート制限を設定できます。

サンプルコード:

重要
  • 1 秒あたりのクエリ数 (QPS) 調整アクションは、サーバーグループへのリクエスト転送アクションと共に使用する必要があります。

  • X-Forwarded-For ヘッダーに複数の IP アドレス (例: X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, ...) が含まれている場合、左端のアドレスがクライアント IP アドレスです。クライアント IP アドレスに基づいてリクエストレート制限を設定する場合、リスナーの詳細ページでクライアント IP アドレスを取得するためのスイッチをオンにする必要があります。これにより、X-Forwarded-For ヘッダーを使用してクライアント IP アドレスを保持できます。詳細については、「XForwardedForConfig」をご参照ください。

 annotations:
    alb.ingress.kubernetes.io/actions.traffic-limit: |
      [{
          "type": "TrafficLimit",
          "TrafficLimitConfig": {
              "QPS": "1000",
              "QPSPerIp": "100"
          }
      }]
  • type: ルーティングアクションのタイプ。この例では、値は TrafficLimit に設定されており、レート制限を示します。

  • QPS: グローバルリクエストレート制限。1 秒あたりに処理できるリクエストの最大数を示します。有効な値: 1 ~ 1000000。リクエストレートが指定された値を超えると、新しい接続リクエストは拒否され、クライアントは HTTP ステータスコード 503 を受信します。

  • QPSPerIp: クライアント IP アドレスに基づくリクエストレート制限。有効な値: 1 ~ 1000000。QPS (グローバルレート制限) と QPSPerIp (クライアント IP アドレスに基づくレート制限) の両方が設定されている場合、QPSPerIp の値は QPS の値よりも小さくする必要があります。リクエストレートが指定された値を超えると、新しい接続リクエストは拒否され、クライアントは HTTP ステータスコード 503 を受信します。

インバウンドルーティング規則のルーティングアクション

ルーティングアクション

説明

リクエストヘッダーの挿入

リクエスト内の既存のヘッダー変数を上書きするために、ヘッダーフィールドの名前と値を指定できます。例:

alb.ingress.kubernetes.io/actions.insert-header: |
  [{
      "type": "InsertHeader",
      "InsertHeaderConfig": {
          "key": "key",
          "value": "value",
          "valueType": "UserDefined"
      }
  }]
  • type: ルーティングアクションのタイプ。リクエストヘッダーを挿入するには、値を InsertHeader に設定します。

  • key: 挿入するヘッダーフィールドの名前。

  • value: 挿入するヘッダーフィールドの値。

  • valueType: 値のタイプ。

リクエストヘッダーの削除

リクエストヘッダーのキーと値を削除できます。例:

alb.ingress.kubernetes.io/actions.remove-header: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "key"
         }
     }]

type: ルーティングアクションのタイプ。リクエストヘッダーを削除するには、値を RemoveHeader に設定します。

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

シナリオ 1:ステータスコード 503 と固定コンテンツを返す

ACSコンソールを使用する

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

  2. [クラスター] ページで、管理するクラスターを見つけ、そのIDをクリックします。クラスター詳細ページの左側のナビゲーションペインで、[ネットワーク] > [イングレス] を選択します。

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

    パラメーター

    説明

    ゲートウェイタイプ

    ビジネス要件に基づいて、ALBまたはMSEイングレスを選択できます。

    ALB

    名前

    イングレスの名前を指定します。

    ingress

    イングレスクラス

    イングレスのクラスを指定します。

    alb

    リスナー/ポート

    AlbConfigで指定したALBインスタンスのリスナーポートとプロトコル。リスナーとプロトコルは、ALBインスタンスがトラフィックを受信および処理する方法を定義します。

    HTTP:80

    ルール

    [+ルールを追加] をクリックして、イングレスルールを追加します。

    • ドメイン名: カスタムドメイン名を入力します。

    • マッピング: 次のパラメーターを指定します。

      • パス: バックエンドサービスのURLパスを入力します。この例では、ルートパス / が使用されています。

      • ルール: [プレフィックス(プレフィックスベースのマッチ)][完全一致(完全一致)]、または [実装固有(デフォルト値)] を選択できます。

      • サービス: バックエンドサービスを選択します。

      • ポート: 公開するサービスポートを指定します。

    • ドメイン名に複数のパスを設定できます。[+追加] をクリックしてパスを追加します。

    • ドメイン名: このパラメーターは空のままにします。

    • マッピング:

      • パス: /

      • ルール: プレフィックス(プレフィックスベースのマッチ)がデフォルトで選択されています。

      • サービス: response-503

      • ポート: 80.

    TLS設定

    TLS認証を有効にするかどうかを指定します。イングレスのTLS認証を有効にすることができます。

    • ドメイン名: カスタムドメイン名を入力します。

    • シークレット: クラスターで使用されるシークレット。ビジネス要件に基づいてシークレットを選択します。

    [TLS設定] をオフにします。この例では、TLS証明書を設定する必要はありません。

    詳細

    • カナリアリリース: カナリアリリースを有効にします。リクエストヘッダー、Cookie、および重みに基づいてカナリアリリースルールを設定できます。

      説明

      リクエストヘッダー、Cookie、および重みのいずれか1つの要素のみに基づいてカナリアリリースルールを設定できます。また、リクエストヘッダー、Cookie、および重みに基づいて同時にカナリアリリースルールを設定することもできます。この場合、リクエストヘッダー、Cookie、および重みは優先順位の高い順に有効になります。

      • リクエストヘッダーに基づく: nginx.ingress.kubernetes.io/canary-by-headernginx.ingress.kubernetes.io/canary-by-header-value、または nginx.ingress.kubernetes.io/canary-by-header-pattern アノテーションを追加することにより、リクエストヘッダーに基づいてトラフィックを分散します。

      • Cookieに基づく: nginx.ingress.kubernetes.io/canary-by-cookie アノテーションを追加することにより、Cookieに基づいてトラフィックを分散します。

      • 重みに基づく: nginx.ingress.kubernetes.io/canary-weight アノテーションを追加することにより、サービスの重み(0~100の整数)に基づいてトラフィックを分散します。

    • プロトコル: nginx.ingress.kubernetes.io/backend-protocol アノテーションを追加することにより、バックエンドサービスで使用されるプロトコルを選択します。

      HTTP、HTTPS、gRPC、およびgRPCSがサポートされています。

    • パスの書き換え: nginx.ingress.kubernetes.io/rewrite-target アノテーションを追加して、リクエストがバックエンドサービスに転送される前に、クライアントリクエストのパスを書き換えます。

    [カナリアリリース] をオフにします。[プロトコル] パラメーターと [パスの書き換え] パラメーターのデフォルト値を使用します。この例では、これらのパラメーターを設定する必要はありません。

    カスタム転送ルール

    説明

    ALBコンソールでALBイングレスのカスタムルーティングルールを設定できます。この機能はカナリアリリース版です。この機能を使用するには、チケットを送信 してください。

    カスタム転送ルールを有効にして、受信トラフィックをきめ細かく管理できます。

    説明

    転送ルールには最大 10 個の条件を追加できます。

    • [条件を追加] ドロップダウンリストでは、次の条件タイプを使用できます。

      • ドメイン名:

        指定された1つ以上のドメイン名を含むリクエストのみがルーティングされます。複数のドメイン名の論理関係はORです。ドメイン名を指定すると、システムは alb.ingress.kubernetes.io/conditions.host-example アノテーションを追加します。

      • パス:

        指定された1つ以上のパスを含むリクエストのみがルーティングされます。複数のパスの論理関係はORです。パスを指定すると、システムは alb.ingress.kubernetes.io/conditions.path-example アノテーションを追加します。

      • HTTPヘッダー:

        指定された1つ以上のHTTPヘッダーを含むリクエストのみがルーティングされます。各HTTPリクエストヘッダーはキーと値のペアです。たとえば、[キー]headername に、[値]headervalue1 に設定できます。複数のヘッダー値を指定した場合、ヘッダー値間の論理関係はORです。ヘッダーを指定すると、システムは alb.ingress.kubernetes.io/conditions.http-header-example アノテーションを追加します。

    • [アクション] ドロップダウンリストでは、次のアクションを使用できます。

      • 転送先

        受信トラフィックを複数のバックエンドサーバーグループに転送します。受信トラフィックを転送するには、次の操作を実行します。[サービス] ドロップダウンリストからアクセスするサービスを選択します。[ポート] ドロップダウンリストからサービスへの接続に使用するポートを選択します。各バックエンドサーバーグループのカスタムの重みを指定します。

        説明
        • クラスターがFlannelコンポーネントを使用している場合、ClusterIPサービスはサポートされていません。

        • [アクション] ドロップダウンリストから [転送先] を選択した場合、ルールの [マッピング] パラメーターを設定する必要はありません。

      • 固定レスポンスを返す

        ALBインスタンスによってクライアントに固定コンテンツが返されるように指定します。クライアントに返されるステータスコード、コンテンツ、およびコンテンツのタイプを指定できます。ビジネス要件に基づいて、[レスポンスステータスコード][レスポンスコンテンツタイプ(オプション)]、および [レスポンスコンテンツ(オプション)] パラメーターを設定します。

        レスポンスコンテンツタイプ パラメーターの有効な値:

        • text/plain: コンテンツがプレーンテキストであることを示します。

        • text/css: コンテンツがXML形式であることを示します。

        • text/html: コンテンツがHTML形式であることを示します。

        • application/javascript: コンテンツがJavaScript形式であることを示します。

        • application/json: コンテンツがJSON形式であることを示します。

    カスタム転送ルールでは、複数の条件とアクションを指定できます。ドメイン名、パス、およびHTTPリクエストヘッダーを転送条件として設定し、受信トラフィックをバックエンドサーバーグループに転送したり、クライアントに固定コンテンツを返したりできます。

    • [条件の追加] ドロップダウンリストでは、デフォルトで [パス] が選択されています。(デフォルト設定を維持します)

    • アクション ドロップダウンリストで、固定応答を返す が選択されています。

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

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

      • レスポンスコンテンツ(オプション): エラー

    アノテーション

    カスタムアノテーション名と値を入力できます。ドロップダウンリストから名前でアノテーションを選択または検索することもできます。イングレスアノテーションの詳細については、「ALBイングレスGlobalConfigurationディクショナリ」をご参照ください。

    [+アノテーションを追加] をクリックして、アノテーションを追加します。ACSでは、追加できるイングレスアノテーションの数に制限はありません。

    この例では、アノテーションを設定する必要はありません。

    ラベル

    イングレスの特性を記述するためにラベルを追加できます。

    [+ラベルを追加] をクリックして、ラベルを追加します。追加できるイングレスラベルの数に制限はありません。

    この例では、ラベルを設定する必要はありません。

  4. 設定が完了したら、[イングレスの作成] パネルの左下隅にある [OK] をクリックします。

kubectl

次のコードブロックは、ステータスコード 503 と 503 error text を返すために使用されます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.response-503: |
      [{
          "type": "FixedResponse", // タイプを「FixedResponse」に設定します
          "FixedResponseConfig": {
              "contentType": "text/plain", // コンテンツタイプを「text/plain」に設定します
              "httpCode": "503", // HTTPコードを「503」に設定します
              "content": "503 error text" // コンテンツを「503 error text」に設定します
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: response-503
                port:
                  name: use-annotation # サービスポートの名前は use-annotation である必要があります。

シナリオ 2:301 リダイレクトを使用して HTTPS ポートにリクエストをリダイレクトする

次のコードブロックは、リクエストを HTTPS ポートにリダイレクトするために使用されます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
    alb.ingress.kubernetes.io/actions.redirect: |
      [{
          "type": "Redirect",
          "RedirectConfig": {
              "host": "${host}",
              "path": "${path}",
              "port": "${port}",
              "protocol": "https",
              "query": "${query}",
              "httpCode": "301"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: redirect
                port:
                  name: use-annotation # Serviceポートの名前は use-annotation である必要があります。

シナリオ 3:リクエストにソース:alibaba ヘッダーを挿入する

次のコードブロックは、リクエスト内の既存のヘッダーを source: alibaba ヘッダーで上書きするために使用されます。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: ingress
  annotations:
  # アノテーションで指定されたサービスは、クラスター内の既存のサービスである必要があり、サービス名は、ruleフィールドのbackendパラメーターで指定されたサービス名と同じである必要があります。
    alb.ingress.kubernetes.io/actions.insert-header: |
      [{
          "type": "InsertHeader",
          "InsertHeaderConfig": {
              "key": "source",
              "value": "alibaba",
              "valueType": "UserDefined"
          }
      }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: insert-header
                port:
                  number: 80

シナリオ 4:サーバーグループへのトラフィックのミラーリング

次のコードブロックは、指定されたサーバーグループにトラフィックをミラーリングするために使用されます。

サーバーロードバランサー(SLB)コンソールにログオンします。左側のナビゲーションペインで、ALB > サーバーグループ を選択します。[サーバーグループ] ページで、サーバーグループの ID を表示できます。服务器组

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: traffic-mirror-ingress
  annotations:
  # アノテーションで指定されたサービスは、クラスター内の既存のサービスである必要があり、サービス名は、ruleフィールドのbackendで指定されたサービス名と同じである必要があります。
   alb.ingress.kubernetes.io/actions.traffic-mirror: |
       [{
           "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: traffic-mirror
            port:
              number: 80

シナリオ 5:複数のバックエンドサーバーグループへのリクエストの転送

ACSコンソールを使用する

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

  2. [クラスター] ページで、管理するクラスターを見つけ、そのIDをクリックします。クラスター詳細ページの左側のナビゲーションペインで、[ネットワーク] > [イングレス] を選択します。

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

    パラメーター

    説明

    ゲートウェイタイプ

    ビジネス要件に基づいて、ALBまたはMSEイングレスを選択できます。

    ALB

    名前

    イングレスの名前を指定します。

    forward-ingress

    イングレスクラス

    イングレスのクラスを指定します。

    alb

    リスナー/ポート

    AlbConfigで指定したALBインスタンスのリスナーポートとプロトコル。リスナーとプロトコルは、ALBインスタンスがトラフィックを受信および処理する方法を定義します。

    HTTP:80

    ルール

    [+ルールを追加] をクリックして、イングレスルールを追加します。

    • ドメイン名: カスタムドメイン名を入力します。

    • マッピング: 次のパラメーターを指定します。

      • パス: バックエンドサービスのURLパスを入力します。この例では、ルートパス / が使用されています。

      • ルール: [プレフィックス (プレフィックスベースのマッチ)][完全一致 (完全一致)]、または [implementationspecific (デフォルト値)] を選択できます。

      • サービス: バックエンドサービスを選択します。

      • ポート: 公開するサービスポートを指定します。

    • ドメイン名に複数のパスを設定できます。[+ 追加] をクリックして、パスを追加します。

    • ドメイン名: demo.domain.ingress.top

    • マッピング:

      • パス: /path

      • ルール: プレフィックス (プレフィックスベースのマッチ) がデフォルトで選択されています。

      • サービス: forward

      • ポート: 80

    TLS設定

    TLS認証を有効にするかどうかを指定します。イングレスのTLS認証を有効にできます。

    • ドメイン名: カスタムドメイン名を入力します。

    • シークレット: クラスターで使用されるシークレット。ビジネス要件に基づいてシークレットを選択します。シークレットを作成する場合、次の手順を実行します。

    1. シークレット の右側にある [作成] をクリックします。

    2. [シークレットの作成] ダイアログボックスで、名前証明書キー の各パラメーターを設定します。次に、[OK] をクリックします。

    3. シークレット ドロップダウンリストから作成したシークレットを選択します。

    [TLS設定] をオフにします。この例では、TLS証明書を設定する必要はありません。

    詳細

    • カナリアリリース: カナリアリリースを有効にします。リクエストヘッダー、Cookie、および重みに基づいてカナリアリリースルールを設定できます。

      説明

      リクエストヘッダー、Cookie、および重みのいずれか1つの要素に基づいてのみカナリアリリースルールを設定できます。また、リクエストヘッダー、Cookie、および重みに基づいて同時にカナリアリリースルールを設定することもできます。この場合、リクエストヘッダー、Cookie、および重みは優先順位の高い順に有効になります。

      • リクエストヘッダーに基づく: nginx.ingress.kubernetes.io/canary-by-headernginx.ingress.kubernetes.io/canary-by-header-value、または nginx.ingress.kubernetes.io/canary-by-header-pattern アノテーションを追加することにより、リクエストヘッダーに基づいてトラフィックを分散します。

      • Cookieに基づく: nginx.ingress.kubernetes.io/canary-by-cookie アノテーションを追加することにより、Cookieに基づいてトラフィックを分散します。

      • 重みに基づく: nginx.ingress.kubernetes.io/canary-weight アノテーションを追加することにより、サービスの重み (0~100の整数) に基づいてトラフィックを分散します。

    • プロトコル: nginx.ingress.kubernetes.io/backend-protocol アノテーションを追加することにより、バックエンドサービスで使用されるプロトコルを選択します。

      HTTP、HTTPS、gRPC、およびgRPCSがサポートされています。

    • パスの書き換え: nginx.ingress.kubernetes.io/rewrite-target アノテーションを追加して、リクエストがバックエンドサービスに転送される前に、クライアントリクエストのパスを書き換えます。

    カナリアリリースをオフにします。プロトコルおよびパスの書き換えパラメーターのデフォルト値を使用します。この例では、これらのパラメーターを設定する必要はありません。

    カスタム転送ルール

    説明

    ALBコンソールでALBイングレスのカスタムルーティングルールを設定できます。この機能はカナリアリリース版です。この機能を使用するには、チケットを提出 してください。

    カスタム転送ルールを有効にして、受信トラフィックをきめ細かく管理できます。

    説明

    転送ルールには最大 10 個の条件を追加できます。

    • [条件を追加] ドロップダウンリストでは、次の条件タイプを使用できます。

      • ドメイン名:

        指定された1つ以上のドメイン名を含むリクエストのみがルーティングされます。複数のドメイン名間の論理関係はORです。ドメイン名を指定すると、システムは alb.ingress.kubernetes.io/conditions.host-example アノテーションを追加します。

      • パス:

        指定された1つ以上のパスを含むリクエストのみがルーティングされます。複数のパス間の論理関係はORです。パスを指定すると、システムは alb.ingress.kubernetes.io/conditions.path-example アノテーションを追加します。

      • HTTPヘッダー:

        指定された1つ以上のHTTPヘッダーを含むリクエストのみがルーティングされます。各HTTPリクエストヘッダーはキーと値のペアです。たとえば、キーheadername に、headervalue1 に設定できます。複数のヘッダー値を指定した場合、ヘッダー値間の論理関係はORです。ヘッダーを指定すると、システムは alb.ingress.kubernetes.io/conditions.http-header-example アノテーションを追加します。

    • [アクション] ドロップダウンリストでは、次のアクションを使用できます。

      • 転送先

        受信トラフィックを複数のバックエンドサーバーグループに転送します。受信トラフィックを転送するには、次の操作を実行します。[サービス] ドロップダウンリストからアクセスするサービスを選択します。[ポート] ドロップダウンリストからサービスへの接続に使用するポートを選択します。各バックエンドサーバーグループのカスタムの重みを指定します。

        説明
        • クラスターがFlannelコンポーネントを使用している場合、ClusterIPサービスはサポートされていません。

        • [アクション] ドロップダウンリストから [転送先] を選択した場合、ルールの [マッピング] パラメーターを設定する必要はありません。

      • 固定レスポンスを返す

        ALBインスタンスによってクライアントに固定コンテンツが返されることを指定します。クライアントに返されるステータスコード、コンテンツ、およびコンテンツのタイプを指定できます。ビジネス要件に基づいて、[レスポンスステータスコード][レスポンスコンテンツタイプ (オプション)]、および [レスポンスコンテンツ (オプション)] パラメーターを設定します。

        [レスポンスコンテンツタイプ] パラメーターの有効な値:

        • text/plain: コンテンツがプレーンテキストであることを示します。

        • text/css: コンテンツがXML形式であることを示します。

        • text/html: コンテンツがHTML形式であることを示します。

        • application/javascript: コンテンツがJavaScript形式であることを示します。

        • application/json: コンテンツがJSON形式であることを示します。

    カスタム転送ルールでは、複数の条件とアクションを指定できます。ドメイン名、パス、およびHTTPリクエストヘッダーを転送条件として設定し、受信トラフィックをバックエンドサーバーグループに転送したり、クライアントに固定コンテンツを返したりできます。

    • [条件を追加] ドロップダウンリストで、[ドメイン名] が選択されています。ドメイン名: demo.domain.ingress.top

    • [アクション] ドロップダウンリストで、[転送先] が選択されています。

      • サービス: tea-svc

      • ポート: 80

      • 重み: 80

    • [サービスを追加]

      • サービス: coffee-svc

      • ポート: 80

      • 重み: 20

    アノテーション

    カスタムアノテーション名と値を入力できます。ドロップダウンリストから名前でアノテーションを選択または検索することもできます。イングレスアノテーションの詳細については、「ALBイングレス GlobalConfigurationディクショナリ」をご参照ください。

    [+アノテーションを追加] をクリックして、アノテーションを追加します。ACSは、追加できるイングレスアノテーションの数に制限を設けていません。

    この例では、アノテーションを設定する必要はありません。

    ラベル

    イングレスの特性を記述するためにラベルを追加できます。

    [+ラベルを追加] をクリックして、ラベルを追加します。追加できるイングレスラベルの数に制限はありません。

    この例では、ラベルを設定する必要はありません。

  4. 設定が完了したら、[イングレスの作成] パネルの左下隅にある [OK] をクリックします。

kubectl

次のコードブロックは、クラスター内の複数のサービスにリクエストを転送するイングレスを定義しています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: forward-ingress
  annotations:
  # アノテーションで指定されたサービスは、クラスター内の既存のサービスでなければならず、サービス名は、ruleフィールドのbackendで指定されたサービス名と同じでなければなりません。
    alb.ingress.kubernetes.io/actions.forward: |
       [{
           "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: forward
            port:
              name: use-annotation # サービスポートの名前は use-annotation でなければなりません。

シナリオ 6:リクエストの書き換え

次のコードブロックは、リクエストのドメイン名、パス、およびクエリ文字列を書き換える Ingress を定義しています。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: default
  name: rewrite-ingress
  annotations:
    alb.ingress.kubernetes.io/actions.rewrite: |
       [{
           "type": "Rewrite",
           "RewriteConfig": {
               "Host": "demo.domain.ingress.top",
               "Path": "/test",
               "Query": "queryString"
           }
       }]
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: rewrite
                port: 80

シナリオ 7:ResponseHeader に基づいてレスポンスヘッダーを変更する

重要
  • デフォルトでは、カスタムルーティングルールは受信方向に適用されます。カスタムルーティングルールを送信方向に適用するには、alb.ingress.kubernetes.io/rule-direction.<Service name> アノテーションを Response に設定します。アノテーションはデフォルトで Request に設定されています。

  • カスタム送信ルーティングルールを作成する場合、ingressSpec.rules.backend フィールドの servicePort の名前は use-annotation である必要があります。

次のコードブロックでは、response header が一致する場合(ヘッダーに response-hello が含まれ、値が value1 または value2 である必要がある場合)、新しいリクエストヘッダー 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: |
     [{
         "type": "ResponseHeader",
         "responseHeaderConfig": {
            "key": "response-hello",
            "values": [
               "value1",
               "value2"
            ]
         }
     }]
   alb.ingress.kubernetes.io/actions.response-header: |
     [{
         "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
            port:
              name: use-annotation # Serviceポートの名前は use-annotation である必要があります。

シナリオ 8:レスポンスステータスコードに基づいてレスポンスヘッダーを変更する

重要
  • デフォルトでは、カスタムルーティングルールは受信方向に適用されます。カスタムルーティングルールを送信方向に適用するには、alb.ingress.kubernetes.io/rule-direction.<Service name> アノテーションを Response に設定します。アノテーションはデフォルトで Request に設定されています。

  • カスタム送信ルーティングルールを作成する場合、ingressSpec.rules.backend フィールドの servicePort の名前は use-annotation である必要があります。

次のコードブロックでは、レスポンスステータスコードが 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: |
     [{
       "type": "ResponseStatusCode",
       "responseStatusCodeConfig": {
         "values": [
             "200",
             "300"
         ]
       }
     }]
   alb.ingress.kubernetes.io/actions.response-hello: |
     [{
         "type": "RemoveHeader",
         "RemoveHeaderConfig": {
             "key": "response-hello"
         }
     }]
  name: response-hello
spec:
  ingressClassName: alb
  rules:
   - http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: response-hello
            port:
              name: use-annotation # Serviceポートの名前は use-annotation である必要があります。