メインコンテンツまでスキップ
バージョン: Latest(v3.0) 🔥

Gateway Management

APIゲートウェイとゲートウェイ管理とは何ですか?

API Gatewayは、APIトラフィックの中央管理ポイントです。クライアントのリクエストを適切なバックエンドサービスにルーティングし、必要に応じてリクエストとレスポンスを変換し、セキュリティポリシーを強制し、トラフィックを監視し、全体的なAPIの信頼性を確保します。

APIゲートウェイの主な機能

  • Routing: クライアントのリクエストを適切なバックエンドサービスに指示します。
  • Transformation: 必要に応じてリクエストまたはレスポンスの形式を変換します。
  • Authentication & Authorization: クライアントの資格情報を検証し、アクセス権を付与します。
  • Traffic Control: バックエンドの過負荷を防ぐためにAPIトラフィックを管理および制限します。
  • Logging & Monitoring: トラッキングと分析のためにAPI使用データを記録します。
  • Security & Protection: 悪意のある攻撃をブロックし、APIのセキュリティを強化します。

APIMでは、Kong APIゲートウェイが使用され、Kubernetes (K8s) デプロイメントとしてプロビジョニングされます。

ゲートウェイ管理メニュー

APIMのGateway Managementメニューでは、ユーザーが以下を行うことができます:

  • ゲートウェイのリストを表示および管理します。
  • 各ゲートウェイのステータスを監視します。
  • プロジェクトごとにゲートウェイをクエリ、作成、更新、削除します。
  • 複数のゲートウェイURLを管理します。
  • ノードの親和性、耐障害性、およびトポロジー設定を構成します。
  • HTTPSセキュリティのためにTLS証明書を設定します。
  • アノテーション/ラベル(K8s Ingressアノテーション/ラベル)を介してメタデータを追加します。

Gateway URLは、APIリクエストに使用されるエンドポイントを表します。

たとえば、APIがhttps://api.company.com/pathを介してアクセスされる場合、ゲートウェイURLはapi.company.comです。

ゲートウェイリスト画面

The Gateway List スクリーンは、プロジェクト内のすべてのゲートウェイの概要を提供し、ユーザーが以下を行えるようにします:

  • すべてのゲートウェイを一目で確認する。
  • CPU、メモリ、およびレプリカの設定を確認する。
  • 各ゲートウェイの稼働中または待機中のステータスを監視する。
  • 特定のゲートウェイを検索したり、新しいゲートウェイを作成したりする。

ゲートウェイの作成

新しいゲートウェイを作成するには、以下の手順に従ってください:

「ゲートウェイを作成」をクリックします

ゲートウェイの作成 - 「ゲートウェイを作成」ボタン

プロジェクトを選択します

ゲートウェイが管理されるプロジェクトを選択します。プロジェクトを作成する手順については、Tenant Manager Console/Create a Project. を参照してください。

ゲートウェイの作成 - プロジェクトを選択

ゲートウェイ設定を構成します

ゲートウェイの作成 - ゲートウェイ設定画面

Gateway Configuration セクションでは、ゲートウェイの詳細なカスタマイズが可能です。以下は主要なフィールドです:

Gateway Type
  • Purpose: APIゲートウェイのタイプを定義します。
  • Mandatory: はい
  • Input Instructions: プロジェクトのゲートウェイタイプに合わせます。変更できません。

ゲートウェイタイプ

Gateway Name
  • Purpose: ゲートウェイのユニークな識別子。
  • Mandatory: はい
  • Input Instructions: 英字、数字、spaces、ハイフン「-」、アンダースコア「_」、またはダブルコロン「:」のみ使用できます。英字で始める必要があります。

Gateway Name

Gateway Instance Name
  • Purpose: ゲートウェイインスタンスを識別します。
  • Mandatory: はい
  • Input Instructions: ゲートウェイ名に基づいて自動的に入力されます。

Gateway Instance Name

Gateway Description
  • Purpose: ゲートウェイに関する追加情報を提供します。
  • Mandatory: いいえ
  • Input Instructions: 短い説明を入力してください。

Gateway Description

Gateway Tags
  • Purpose: ゲートウェイのフィルタリングと検索に役立ちます。
  • Mandatory: いいえ
  • Input Instructions: ゲートウェイには多くのタグを持つことができます。Enterを押してタグを入力してください.

Gateway Tags

Gateway CPU/Memory
  • Purpose: ゲートウェイのリソースを割り当てます。
  • Mandatory: はい
  • Input Instructions: スライダーを使用して調整します。値の範囲は500から16000 m/miです。

Gateway CPU/Memory

DataBase CPU/Memory
  • Purpose: ゲートウェイによって使用される内部データベースのリソースを割り当てます。
  • Mandatory: はい
  • Input Instructions: スライダーを使用して調整します。値の範囲は500から16000 m/miです。

DataBase CPU/Memory

Gateway Autoscaling
  • Purpose: デプロイ後にゲートウェイのリソース割り当てを自動スケールするため
  • Mandatory: はい
  • Instructions: オートスケーリングをオンにするためのトグル。オンにしたら、最小レプリカ、最大レプリカ、CPU使用率、メモリ使用率のオートスケーリング値を設定します。
Kong Namespace
  • Purpose: ゲートウェイがKubernetesでどこで実行されるかを決定します。
  • Mandatory: はい
  • Input Instructions: ドロップダウンリストから名前空間を選択します。 Kong Namespace
Kong Storage Class
  • Purpose: ゲートウェイのためのストレージがどのようにプロビジョニングされるかを定義します。
  • Mandatory: はい
  • Input Instructions: ドロップダウンリストからストレージクラスを選択します。

Kong Storage Class

Storage Capacity
  • Purpose: ゲートウェイのためのストレージ割り当てを指定します。
  • Mandatory: はい
  • Input Instructions: 5から500(Gi)の間の値を入力します。

Storage Capacity

Kong Proxy Service Type
  • Purpose: Kongプロキシのサービスタイプを決定します。
  • Mandatory: はい
  • Input Instructions: ClusterIP、NodePort、LoadBalancerのいずれかを選択します。NodePortまたはLoadBalancerが選択された場合、ユーザーはKongプロキシサービスのNodePort値(30000から32767の間)を入力する必要があります。
Affinity
  • Purpose: アフィニティは、ノードラベルを一致させることによって、ゲートウェイポッドがスケジュールされるノードを制御するために使用されます。
  • Mandatory: ONにトグルされた場合、はい。
  • Input Instructions: アフィニティをONにトグルして有効にします。その後、ノードラベルのためのキーと値を提供します。これは、nodeAffinity ルールに変換され、Kubernetesで requiredDuringSchedulingIgnoredDuringExecution を使用します。例えば:
注記

nodeAffinity:

Toleration
  • Purpose: トレランスは、特定のワークロードにマークされたノードにゲートウェイポッドをスケジュールできるようにします。
  • Mandatory: ONに切り替えた場合は「はい」です。
  • Input Instructions: ONに切り替えた後、次の内容を入力します:
    • オペレーター: EqualまたはExistsのいずれかを選択します。Equal: キーと値は正確に一致する必要があります。Exists: キーのみが存在する必要があり、値は必須ではありません。
    • キーと値: タイントキーと値を提供します(オペレーターがExistsの場合、値はオプションです)。
注記

tolerations:

  • effect: NoSchedule

key: "tolerationKey"

operator: "Equal" or Exists

value: "tolerationValue"

Topology Spread
  • Purpose: トポロジースプレッド制約は、ゲートウェイポッドが障害ドメイン(ゾーンやノードなど)全体に均等に分散されることを保証し、レジリエンスと可用性を向上させます。
  • Mandatory: ONに切り替えた場合は「はい」です。
  • Input Instructions: ONに切り替えた後、次の内容を入力します:
    • Max Skew: トポロジードメイン間のゲートウェイポッドの数の最大許容差(例: 1に設定した場合、ゾーンごとのポッドの数は1を超えて異なることはできません)。
    • When Unsatisfiable: 次のいずれかを選択します: ScheduleAnyway(デフォルト):スプレッド制約が完全に満たされなくてもスケジューリングを許可します; DoNotSchedule: 制約が失敗した場合、ポッドのスケジューリングをブロックします; DoNotScheduleIfNotSatisfied: スプレッド条件が満たされない場合にのみスケジューリングを制限する新しい戦略です。
注記

このマッピングに対応するKubernetesルールの例:

topologySpreadConstraints:

  • maxSkew: 1

topologyKey: topology.kubernetes.io/zone

whenUnsatisfiable: ScheduleAnyway

labelSelector: matchLabels:

app.kubernetes.io/instance: test-kong

Inner Redis
  • Purpose: 内部Redisインスタンスをキャッシュ用に許可します。
  • Mandatory: トグルされている場合は「はい」
  • Input Instructions: ON/OFFを切り替えます。ONの場合、GatewayがデプロイされるとデフォルトのRedisがインストールされます。OFFの場合、ユーザーにはAPIM RedisがRedisを使用するポリシー(レート制限、jwtブラックリスト、OIDC)をサポートしていないことが通知されます。ユーザーはOFFに切り替えるためのプロンプトで確認する必要があります。

Inner Redis

Fluent Bit
  • Purpose: Fluent Bitは、ゲートウェイコンテナからログを収集、フィルタリング、および転送する軽量のログプロセッサです。
  • Mandatory: いいえ
  • Input Instructions: 有効にすると、次の宛先オプションのいずれかを追加で選択できます:
    • OpenTelemetry: OpenTelemetryエージェントを使用してログとテレメトリデータを転送します。
    • Elasticsearch: Elasticsearchクラスターにログを転送してインデックス作成と検索を行います。

注意:これらのオプションのうち、同時にアクティブにできるのは1つだけです。1つを有効にすると、他のオプションがすでにアクティブな場合、現在アクティブなものを無効にするための確認プロンプトが表示されます。

Kong Configuration
  • Purpose: このフィールドでは、Kong Gatewayランタイムに対して、パフォーマンスや動作を微調整する必要がある場合に、JSON形式で生の設定を提供することにより、高度な低レベルの構成を直接適用できます。
  • Mandatory: トグルされている場合は「はい」
  • Input Instructions: トグル後、カスタムKongランタイム設定を入力できるJSONエディタが表示されます。
注記

例:

"upstream_keepalive_idle_timeout": 60, "upstream_keepalive_max_requests": 100000,

"nginx_http_keepalive_requests": 100000,

"upstream_keepalive_pool_size": 1024

注意: 設定ミスは不安定なゲートウェイの動作を引き起こす可能性があります。変更を適用する前に、Kongのドキュメントまたはプラットフォーム管理者に相談してください。

ゲートウェイの設定は以下の表にまとめられています:

Field NamePurposeInput NotesMandatory
ゲートウェイタイプAPIゲートウェイのタイプを定義します。プロジェクトのゲートウェイタイプに合わせます。変更できません。はい。デフォルトはkongです。
ゲートウェイ名ゲートウェイのユニークな識別子。英字、数字、ハイフン「-」、アンダースコア「_」、またはコロン「:」のみ使用できます。英字で始める必要があります。はい
ゲートウェイインスタンス名ゲートウェイインスタンスを識別します。ゲートウェイ名に基づいて自動的に入力されます。はい
ゲートウェイの説明ゲートウェイに関する追加の詳細を提供します。短い説明を入力してください。いいえ
ゲートウェイタグゲートウェイのフィルタリングと検索に役立ちます。ゲートウェイには多くのタグを付けることができます。Enterを押してタグを入力します.いいえ
ゲートウェイCPU/メモリゲートウェイのリソースを割り当てます。スライダーを使用して調整します。値の範囲は500から16000 m/miです。はい
データベースCPU/メモリゲートウェイが使用する内部データベースのリソースを割り当てます。スライダーを使用して調整します。値の範囲は500から16000 m/miです。はい
ゲートウェイオートスケーリングデプロイ後に自動的にポッドリソースをスケーリングします。ON/OFFを切り替えます。ONの場合は、最小レプリカ、最大レプリカ、CPUしきい値(%)、メモリしきい値(%)を設定します。切り替えた場合ははい
KongネームスペースKubernetesでゲートウェイが実行される場所を決定します。ドロップダウンリストからネームスペースを選択します。はい
Kongストレージクラスゲートウェイのストレージがどのようにプロビジョニングされるかを定義します。ドロップダウンリストからストレージクラスを選択します。はい
ストレージ容量ゲートウェイのストレージ割り当てを指定します。5から500(Gi)の間の値を入力してください。はい
Kongプロキシサービスの種類外部アクセスのためのKongプロキシのサービスの種類を定義します。ClusterIP、NodePort、またはLoadBalancerから選択してください。デフォルトはClusterIPです。はい
アフィニティゲートウェイポッドをラベルが一致するノードにスケジュールします。ON/OFFを切り替えます。ONの場合、ノードラベルのキーと値を入力してください。切り替えた場合ははい
トレランスゲートウェイポッドが汚染されたノードで実行できるようにします。ON/OFFを切り替えます。ONの場合、演算子を選択します:EqualまたはExists。キーを入力し、オプションで値を入力します。切り替えた場合ははい
トポロジースプレッド可用性を高めるために、ポッドをゾーン全体に均等に分配します。ON/OFFを切り替えます。ONの場合、Max Skew(例:1)を入力します。Unsatisfiableの場合のオプションを選択します:ScheduleAnyway、DoNotSchedule、DoNotScheduleIfNotSatisfiedから選択してください。切り替えた場合ははい
インナーRedisキャッシングのための内部Redisインスタンスを許可します。ON/OFFを切り替えます。ONの場合、ゲートウェイがデプロイされるときにデフォルトのRedisがインストールされます。切り替えた場合ははい
Fluent Bitメトリック収集のためのOpenTelemetryエージェントまたはログ収集のためのElasticsearchを有効にします。OpenTelemetryまたはElasticsearchのいずれかを選択できます。切り替えた場合ははい
Kong設定Kongの設定を手動で上書きできるようにします。エディタを有効にするためにONに切り替え、有効なJSONを入力します。切り替えた場合ははい

完全な作成

CREATE A GATEWAYボタンをクリックして、作成を完了し、ゲートウェイの設定を保存します。

CREATE A GATEWAYボタン

ゲートウェイURLの追加と管理

ゲートウェイURL設定では、ユーザーがAPIゲートウェイのために1つまたは複数の公開ドメインを定義することができます。また、HTTPS用のTLS証明書、APIルーティングのためのグローバルベースパス、およびアノテーションを通じた追加メタデータもサポートしています。各ゲートウェイは複数のゲートウェイURLを持つことができ、APIゲートウェイへのアクセス方法を定義します。

ゲートウェイURLを追加するには、ユーザーはゲートウェイ管理画面に表示されている作成済みのゲートウェイをクリックして、ゲートウェイ変更画面に入ることができます。

作成済みのゲートウェイをクリック

そこから、ユーザーは下にあるゲートウェイURL設定セクションを見つけることができます。

設定画面をスクロールしてゲートウェイURL設定セクションを見つける

以下は、ゲートウェイURLを作成する手順です:

URLを作成する

複数のURLを作成するには、ADDITIONをクリックします。URLを設定するための新しいブロックが下に作成されます。

ゲートウェイURL - URLを作成

ゲートウェイURLを設定する

以下は、ゲートウェイURLを設定するための主要なフィールドです:

Gateway URL
  • Purpose: ゲートウェイにアクセス可能な公開ドメインを定義します。ユーザーが使用中のゲートウェイURLを変更すると、既存のAPIが正しく呼び出されない可能性があります。
  • Mandatory: はい
  • Input Instructions: 有効なドメインを入力してください。
  • Example:
注記

your.domain.com

your.domain.com:8443

ゲートウェイURL

Global BasePath
  • Purpose: このゲートウェイのすべてのAPIに共通のプレフィックスを設定します。定義されている場合、このゲートウェイのすべてのAPIはこのプレフィックスを継承します。使用中にベースパスが変更されると、既存のAPIが正しく呼び出されない可能性があります。
  • Mandatory: はい
  • Input Instructions: ベースパスを入力してください。/のままにすると、ルートが使用されます。
  • Example:
注記

/ /apim

グローバルベースパス

HTTPS Only and TLS Certificates
  • Purpose: tls.crtを含めて、SSL証明書とtls.keyファイルを提供することでHTTPS通信を有効にします。ネットワークポリシーが適用され、Gateway URLとの通信時にHTTPSのみを許可する場合、ユーザーはHTTPSをオンに切り替える必要があります。ユーザーがK8s SecretでTLS証明書を登録し、K8s Ingressを通じてTLS認証を処理する場合、ユーザーはtls.crt/tls.keyの値を入力する必要があります。
  • Mandatory: 依存
  • Input Instructions: PEM形式で証明書の内容を貼り付けます。安全なHTTPS接続に必要です。

Ingress Class
  • Purpose: このGateway URL構成に使用するIngressコントローラーを指定します。
  • Mandatory: はい
  • Input Instructions: ドロップダウンからIngressクラスを選択します。利用可能なオプションには以下が含まれる場合があります:
    • nginx(デフォルト)
    • alb
    • appsec-kong

この設定は、選択したIngressコントローラーを通じてGateway URLをルーティングします。

Labels
  • Purpose: このGateway URLのために作成されたIngressリソースにKubernetesラベルを追加します。分類や自動化の目的に役立ちます。
  • Mandatory: いいえ
  • Input Instructions: 1つ以上のキー-バリューのペアを入力します。これらのラベルは作成されたIngressオブジェクトに適用されます。複数のエントリを追加するにはプラスボタンを使用し、追加したエントリを削除するにはバツボタンを使用します。
Annotations
  • Purpose: Kubernetesのingressアノテーションを追加して、カスタムタイムアウト、ヘッダー操作、またはコントローラー固有のオプションなどの高度な設定を行います。
  • Mandatory: いいえ
  • Input Instructions: 2つのモードを使用してアノテーションを入力できます:

フォームモード(JSONトグルOFF):各アノテーションのキーと値を手動で入力します。システムの制約に応じて、一部のフィールドは編集できない場合があります。プラスボタンをクリックして複数のアノテーションを追加したり、クロスボタンをクリックして追加したアノテーションを削除したりできます。少なくとも1つのアノテーションを保持する必要があります。

:
"key": "nginx.ingress.kubernetes.io/proxy-connect-timeout",
"value": "300"

JSONモード(JSONトグルON):エディターにキーと値のJSONオブジェクトの配列としてアノテーションを入力します。

:
[
{
"key": "nginx.ingress.kubernetes.io/configuration-snippet",
"value": "more_clear_headers \"server\";more_clear_headers \"via\";"
},
{
"key": "nginx.ingress.kubernetes.io/proxy-connect-timeout",
"value": "300"
},
{
"key": "nginx.ingress.kubernetes.io/proxy-read-timeout",
"value": "300"
},
{
"key": "nginx.ingress.kubernetes.io/proxy-send-timeout",
"value": "300"
}
]

ゲートウェイURLの設定は、以下の表にまとめられています:

Field NamePurposeInput Notes
ゲートウェイURLゲートウェイにアクセス可能な公開ドメインを定義します。ユーザーが使用しているゲートウェイURLを変更すると、既存のAPIが正しく呼び出されない可能性があります。有効なドメインを入力してください(例:api.example.com)。必須フィールドです。
グローバルベースパスこのゲートウェイのすべてのAPIに共通のプレフィックスを設定します。定義されている場合、このゲートウェイのすべてのAPIはこのプレフィックスを継承します。ベースパスを入力してください(例:/api)。/のままにすると、ルートが使用されます。
TLS Certificates (tls.crt)SSL証明書を提供することでHTTPS通信を有効にします。証明書の内容をPEM形式で貼り付けます。安全なHTTPS接続に必要です。
ユーザーがK8s SecretでTLS証明書を登録し、K8s Ingressを通じてTLS認証を処理する場合、ユーザーはtls.crt/tls.keyの値を入力する必要があります。
TLS Private Key (tls.key)TLS証明書を認証するために使用されます。プライベートキーの内容をPEM形式で貼り付けます。提供された証明書と一致する必要があります。
Ingress ClassこのGateway URL構成に使用するingressコントローラーを指定します。nginx(デフォルト)、alb、またはappsec-kongからingressクラスを選択します。
LabelsこのGateway URLのために作成されたingressリソースにKubernetesラベルを追加します。1つ以上のキー-バリューのペアを入力します。ペアを追加または削除できます。
Annotations高度な構成のためにKubernetes ingress注釈を追加します。2つのモードを使用して複数の注釈を入力できます:キー-バリューのペア(JSONモードOFF)またはJSONスクリプト(JSONモードON)。
Example:
注記

もし2つのGateway URL(api.example.comとservice.example.com)がBasePath /apiで構成されている場合、次のようになります:

https://api.example.com/api/{API-Path}

https://service.example.com/api/{API-Path}

が有効なAPIエンドポイントとなります。

ゲートウェイの変更

ユーザーは既存のゲートウェイを次のように変更できます:

  • リストからゲートウェイを選択します。 作成したゲートウェイをクリック

  • 設定可能なフィールドと入力(ゲートウェイの説明、ゲートウェイのタグ、ゲートウェイのCPU/メモリ、データベースのCPU/メモリ、トグルと値など)を編集します。

  • 必要に応じてGateway URLsを更新します。
  • 変更を保存して更新を適用します。

ユーザーがゲートウェイURLを変更した場合、ゲートウェイを保存するボタンをクリックする前にSAVE GATEWAY URLボタンをクリックすることを忘れないでください。 他のゲートウェイ設定の変更を保存する前に、ゲートウェイURLの変更を保存してください。

ゲートウェイの削除

ゲートウェイを削除すると、permanently remove すべての関連データが失われます。このアクションは cannot be undone です。

  • Gateway Management に移動します。
  • 削除するゲートウェイを選択します。

作成したゲートウェイをクリック

  • "Deleting A Gateway" をクリックし、アクションを確認します。
警告
  • このゲートウェイに依存しているAPIは、もはやアクセスできなくなります。
  • 削除する前に、アクティブなAPIが依存していないことを確認してください。