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

API Gateway:ApigConfig の設定

最終更新日:Dec 04, 2025

ApigConfig は、APIG Controller が提供するカスタムリソース定義 (CRD) です。ApigConfig を使用して、APIG ゲートウェイインスタンスのライフサイクル管理、Ingress リスナーオプションの設定、およびグローバル設定を行うことができます。また、ApigConfig を使用すると、ブラックリストとホワイトリストによるインスタンスレベルのグローバル IP アクセス制御、ログ収集、トレース分析を実装できます。

ApigConfig の説明

設定の説明

ApigConfig は、APIG Controller が APIG ゲートウェイインスタンスのライフサイクルとグローバル設定を管理するために使用する CRD です。

1 つの ApigConfig は 1 つの APIG ゲートウェイインスタンスに対応します。複数の APIG ゲートウェイインスタンスを使用するには、複数の ApigConfig を作成する必要があります。
再利用シナリオを除き、ApigConfig を削除すると、対応する APIG ゲートウェイインスタンスがカスケード削除されます。

次のサンプルコードは、完全な ApigConfig の設定を示しています。

apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
  name: apig-ingress
spec:
  name: apig-ingress
  common:
    pay:
      payType: POSTPAY
    instance:
      spec: apigw.small.x1
    network:
      vSwitches:
      - "vsw-1"
      - "vsw-2"
      networkType: Internet
    securityGroupType: enterprise
  global:
    tls:
      enableHardwareAcceleration: true
    ipAccessControl:
      whitelist:
      - 1.1.XX.XX
      - 2.2.XX.XX
  monitor:
    logging:
      sls:
        reuseProject: "xxx" # 空の値は、デフォルトのプロジェクトが使用されることを示します。
    tracing:
      openTelemetry:
        sampleRate: "100"
  ingress:
    local:
      ingressClass:  apig
      watchNamespace: "" # "" は、すべての名前空間の Ingress リソースを示します。

パラメーター

説明

デフォルト値

name

ゲートウェイの名前。

apig-ingress

common.pay.payType

課金方法。

現在、従量課金のみがサポートされています。このパラメーターを設定しない場合、デフォルトで従量課金が使用されます。

POSTPAY

common.instance.spec

ゲートウェイのインスタンスタイプ。

有効値:

  • apigw.small.x1

  • apigw.small.x2

  • apigw.small.x4

  • apigw.medium.x1

  • apigw.medium.x2

  • apigw.medium.x3

  • apigw.large.x1

  • apigw.large.x2

  • apigw.large.x3

apigw.small.x1

common.network.vSwitches

プライマリおよびセカンダリの vSwitch。プライマリ vSwitch が最初にリストされ、次にセカンダリがリストされます。

少なくとも 1 つ、最大で 2 つの vSwitch を指定します。これを空のままにすると、vSwitch は Controller Pod が実行されているノードから取得されます。

なし

common.network.networkType

ゲートウェイ用に購入されるインターネット向け SLB インスタンスのタイプ。

有効値:

  • Internet

  • Intranet

Internet

common.securityGroupType

セキュリティグループのタイプ。

有効値:

  • enterprise: 高度セキュリティグループ

  • normal: 基本セキュリティグループ

normal

global.tls.enableHardwareAcceleration

TLS ハードウェアアクセラレーションを有効または無効にします。

この機能を有効にすると、HTTPS トラフィックのパフォーマンスが大幅に向上します。

有効

global.ipAccessControl.whitelist

アクセス制御のためのグローバル IP ホワイトリスト。

未設定

global.ipAccessControl.blacklist

アクセス制御のためのグローバル IP ブラックリスト。

未設定

monitor.logging.sls

Simple Log Service (SLS) を有効または無効にします。

この機能を有効にするには、Controller に必要な SLS 権限を付与します。

シャットダウン

monitor.logging.sls.reuseProject

アクセスログが配信される SLS 内の宛先プロジェクト。

有効値:

  • 空:デフォルトのプロジェクトが作成され、使用されます。

  • 指定された値:既存のプロジェクトが使用されます。

monitor.tracing.xTrace.sampleRate

OpenTelemetry トレース分析のサンプルレート

0

monitor.tracing.openTelemetry

OpenTelemetry トレース分析を有効または無効にします。

このオプションはデフォルトで無効になっており、OpenTelemetry とは相互排他です。

monitor.tracing.openTelemetry.sampleRate

OpenTelemetry トレース分析のサンプルレート。

100

ingress.local.ingressClass

APIG ゲートウェイがリッスンする、クラスター内の特定の IngressClass に属する Ingress リソース。

有効値:

  • 未設定:どの Ingress リソースもリッスンしません。

  • apig に設定:IngressClass が apig の Ingress リソースをリッスンします。

  • 空の文字列 "" に設定:すべての Ingress リソースをリッスンします。

  • nginx に設定:IngressClass が nginx の Ingress リソース、またはどの IngressClass にも関連付けられていない Ingress リソースをリッスンします。

  • その他の値に設定:IngressClass が指定された値である Ingress リソースをリッスンします。

説明

この設定は、IngressClass リソースを介して ApigConfig を関連付けるよりも優先度が低くなります。

未設定

ingress.local.watchNamespace

APIG ゲートウェイが Ingress リソースをリッスンするクラスター内の名前空間。

有効値:

  • 空:すべての名前空間をリッスンします。

  • 指定された値:指定された名前空間をリッスンします。1 つの名前空間のみがサポートされています。

ステータスの説明

ApigConfig リソースを作成した後、kubectl get ApigConfig コマンドを実行してそのステータスを表示できます。ApigConfig のステータスは、Pending > Running > Listening の順に変化します。各ステータスの説明は次のとおりです:

  • Pending:APIG ゲートウェイが作成中です。このプロセスには約 3 分かかります。

  • Running:APIG ゲートウェイが作成され、実行中です。

  • Listening:APIG ゲートウェイが実行中で、クラスター内の Ingress リソースをリッスンしています。

  • Failed:APIG ゲートウェイが無効な状態です。詳細については、Status フィールドのメッセージをご参照ください。

タグの説明

ApigConfig を介して作成または再利用される APIG ゲートウェイインスタンスには、リソースタグが割り当てられます。対象のゲートウェイのタグは、APIG コンソールの基本情報セクションで確認できます。

重要

APIG ゲートウェイコンソールから次の表のタグを編集しないでください。この操作はゲートウェイインスタンスに影響を与える可能性があります。

タグ名

説明

ack.aliyun.com

APIG ゲートウェイのコンテナサービスクラスターのインバウンドトラフィックを管理します。

ingress.k8s.alibaba/ApigConfig

APIG ゲートウェイを ApigConfig に関連付けます。

kubernetes.reused.by.user

APIG ゲートウェイが再利用されているかどうかを示します。再利用シナリオの場合、関連付けられた ApigConfig が削除されても APIG ゲートウェイインスタンスは削除されません。

APIG ゲートウェイインスタンスの作成

  1. ApigConfig を設定します。

    次のサンプルコードは、インスタンスタイプが `apigw.small.x1` の apig-ingress という名前の APIG ゲートウェイインスタンスを作成します。必要に応じて、他の ApigConfig 設定を変更できます。

    apiVersion: apig.alibabacloud.com/v1alpha1
    kind: ApigConfig
    metadata:
      name: apig-ingress
    spec:
      name: apig-ingress
      common:
        instance:
          spec: apigw.small.x1
  2. コンテナサービスクラスターに IngressClass リソースを作成し、spec.parameters を介して ApigConfig に関連付け、クラスター内に Ingress プロセッサを宣言します。

    設定が完了すると、この IngressClass に関連付けられたクラスター内の Ingress リソースは、ApigConfig に関連付けられた APIG ゲートウェイインスタンスによって処理されます。

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: apig
    spec:
      controller: apig.alibabacloud.com/ingress
      parameters:
        apiGroup: apig.alibabacloud.com
        kind: ApigConfig
        name: apig-ingress

既存の APIG ゲートウェイインスタンスの再利用

既存の APIG ゲートウェイインスタンスを再利用するには、ApigConfig の作成時に spec.id に APIG ゲートウェイインスタンスの一意の ID (gw-xxx 形式) を指定します。spec.override パラメーターを使用して、再利用される APIG ゲートウェイインスタンスの設定を ApigConfig の設定で上書きするかどうかを制御します。

次のサンプルコードは、ApigConfig を介して既存の APIG ゲートウェイインスタンスを再利用します。ゲートウェイインスタンスをコンテナクラスターに関連付け、ingressClass が apig のクラスター内の Ingress リソースをリッスンするように設定します。

重要
  • 次の設定では、spec.overridefalse に設定されています。この設定により、APIG ゲートウェイの既存の Ingress リスナーオプションとグローバル設定が上書きされるのを防ぎます。ゲートウェイインスタンスがまだコンテナクラスターに関連付けられていない場合は、自動的に関連付けられます。その後、Ingress リスナーは、この例では apig である spec.ingress.local.ingressClass の値と ingressClass が一致するクラスター内の Ingress リソースをリッスンするように設定されます。ゲートウェイインスタンスがすでにコンテナクラスターに関連付けられている場合、元の Ingress リスナーオプションは保持されます。

  • APIG ゲートウェイの既存の Ingress リスナーオプションとグローバル設定を上書きするには、まず、Ingress リスナーオプション、ハードウェアアクセラレーション、グローバルブラックリストとホワイトリスト、可観測性など、必要なすべてのゲートウェイパラメーターが ApigConfig に正しく設定されていることを確認する必要があります。次に、spec.override を `true` に設定します。ApigConfig でこれらの設定を指定せずに spec.override を `true` に設定すると、元のゲートウェイパラメーターが上書きされ、トラフィックに悪影響を及ぼす可能性があります。

apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
  name: reuse
spec:
  id: gw-xxxx
  override: false
  ingress:
    local:
      ingressClass: apig

パラメーター

説明

spec.id

再利用する対象の APIG ゲートウェイインスタンスの ID。フォーマットは `gw-xxx` です。

spec.override

ApigConfig に基づいて、再利用される APIG ゲートウェイインスタンスの設定を上書きするかどうかを指定します。

  • true に設定:元のゲートウェイパラメーター設定 (Ingress リスナーオプション、ハードウェアアクセラレーション、グローバルブラックリストとホワイトリスト、可観測性) を上書きします。

  • false に設定:元のゲートウェイパラメーター設定 (Ingress リスナーオプション、ハードウェアアクセラレーション、グローバルブラックリストとホワイトリスト、可観測性) を上書きしません。ただし、既存のゲートウェイインスタンスがコンテナクラスターに関連付けられていない場合は、自動的に関連付けられます。Ingress リスナーオプションは、ingressClass が spec.ingress.local.ingressClass の値と一致するクラスター内の Ingress リソースをリッスンするように設定されます。

APIG ゲートウェイインスタンスの削除

1 つの ApigConfig は 1 つの APIG ゲートウェイインスタンスに対応します。再利用シナリオを除き、ApigConfig を削除すると、対応する APIG ゲートウェイインスタンスがカスケード削除されます。

削除ポリシーは次の表のとおりです。

ゲートウェイの課金方法

APIG Controller による自動作成

コンソールで購入したゲートウェイの再利用

従量課金

ApigConfig を削除すると、ゲートウェイインスタンスが自動的に削除されます。

ApigConfig は削除されますが、ゲートウェイインスタンスは保持されます。

次のコマンドを実行して ApigConfig を削除します。

kubectl delete ApigConfig your-config-name

グローバルなインスタンスレベルの IP アクセス制御の設定

IP ホワイトリストの設定

グローバルなインスタンスレベルの IP ホワイトリストを設定して、特定の送信元 IP のみが APIG Ingress にアクセスできるように許可できます。

次のサンプルコードは、送信元 IP アドレス 1.1.XX.XX または CIDR ブロック 2.0.XX.XX/8 からのアクセスのみを許可するように APIG Ingress ゲートウェイインスタンスを設定します。

apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
   name: apig-ingress
spec:
   ...
  global:
    ipAccessControl:
      whitelist:
      - 1.1.XX.XX
      - 2.0.XX.XX/8
   ...

IP ブラックリストの設定

グローバルなインスタンスレベルの IP ブラックリストを設定して、特定の送信元 IP からの APIG Ingress へのアクセスを拒否できます。

次のサンプルコードは、送信元 IP アドレス 1.1.XX.XX または CIDR ブロック 2.0.XX.XX/8 からのアクセスを拒否するように APIG Ingress ゲートウェイインスタンスを設定します。

apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
   name: apig-ingress
spec:
   ...
  global:
    ipAccessControl:
      blacklist:
      - 1.1.XX.XX
      - 2.0.XX.XX/8
   ...

SLS ログの有効化

SLS ログを有効にする前に、APIG Controller に必要な SLS 権限が付与されていることを確認してください。

次のサンプルコードは、demo という名前のプロジェクトにアクセスログを配信するように APIG Ingress ゲートウェイを設定します。

apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
   name: apig-ingress
spec:
   ...
  monitor:
    logging:
      sls:
        # reuseProject を設定して SLS を有効にします。デフォルトのプロジェクトを使用するには、これを空のままにします。
        reuseProject: "demo"
    ...

OpenTelemetry トレース分析の有効化

ゲートウェイに Alibaba Cloud OpenTelemetry トレース分析を設定すると、エンドツーエンドのトレースおよび監視システムを構築して、オンラインの問題を迅速に診断および特定できます。

次のサンプルコードは、サンプルレート (sampleRate) が 100% の APIG Ingress ゲートウェイに OpenTelemetry トレース分析を設定します。

apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
   name: apig-ingress
spec:
   ...
  monitor:
    tracing:
      openTelemetry:
        sampleRate: "100"
   ...

その他の設定

APIG Ingress が使用するゲートウェイインスタンスは、追加の設定をサポートしています。

これらの設定を適用するには、クラウドネイティブ API ゲートウェイコンソールにログインします。[APIG ゲートウェイ] > [ゲートウェイリスト] メニューで、APIG Controller によって使用または自動作成されたゲートウェイインスタンスを見つけます。インスタンス ID をクリックし、左側のナビゲーションウィンドウで [パラメーター設定] をクリックします。

設定項目

タイプ

説明

EnableGenerateRequestId

Bool

リクエスト範囲に適用されます。リクエストトレースのためにリクエストヘッダーにリクエスト ID を生成します。

EnableGzip

Bool

リクエストおよび応答ステージに適用されます。gzip を有効にすると、リクエストと応答が圧縮されます。これにより、ゲートウェイのトラフィックは減少しますが、ゲートウェイの CPU 使用率は増加します。

EnableSlashMerge

Bool

リクエスト内の冗長な '/' 文字をマージするかどうかを指定します。この機能を有効にすると、www.a.com//b の冗長な '/' がマージされ、URL は www.a.com/b と同じになります。

DownstreamConnectionBufferLimits

Int

ゲートウェイ接続に適用されます。単一接続のバッファーサイズ。この設定は、スループットとゲートウェイのメモリ使用量に影響します。

有効値:[0, 2147483647]。

XffTrustedNum

Int

リクエストステージに適用されます。ゲートウェイの前にある信頼できるプロキシの数。これは、ゲートウェイが x-forwarded-forx-request-id などのクライアント生成のリクエストヘッダーを使用するかどうかに影響します。

有効値:[0, 10]。単位:プロキシ。

DownstreamHttp2MaxConcurrentStream

Int

リクエストステージに適用されます。クライアントが HTTP/2 を使用する場合の単一接続での最大同時ストリーム数。

有効値:[0, 2147483647]。単位:バイト。

InitialStreamWindowSize

Int

リクエストステージに適用されます。HTTP/2 を使用する際にゲートウェイとクライアント間でネゴシエートされる初期 stream ウィンドウサイズ。

有効値:[65535, 2147483647]。単位:バイト。

InitialConnectionWindowSize

Int

リクエストステージに適用されます。ゲートウェイとクライアントが HTTP/2 を使用する場合の初期接続レベルのウィンドウサイズ。

有効値:[65535, 2147483647]。単位:バイト。

EnableHttp3

Bool

HTTP/3 プロトコルをサポートするかどうかを指定します。

HTTP/3 はハードウェアアクセラレーション機能と互換性がありません。HTTP/3 サポートを有効にする前に、ハードウェアアクセラレーションを無効にしてください。

PathWithEscapedSlashes

String

URI パスに %2F、%2f、%5C、%5c などのエスケープ文字が含まれるリクエストに対するアクションを決定します。デフォルト値は KEEP_UNCHANGED で、文字はそのまま保持されます。

有効値:KEEP_UNCHANGEDREJECT_REQUESTUNESCAPE_AND_REDIRECTUNESCAPE_AND_FORWARD

ZipAlgorithm

List<String>

圧縮が有効になった後に使用される圧縮アルゴリズム。EnableGzip が無効の場合、EnableGzip オプションは自動的に有効になります。

有効値:brotligzip

EnableProxyProtocol

Bool

PROXY プロトコルを有効にするかどうかを指定します。ゲートウェイのインバウンドトラフィックが NLB を介してアクセスされる場合、クライアントの送信元 IP アドレスを取得するにはこれを有効にする必要があります。これを有効にしても、非 PROXY プロトコルのリクエストには影響しません。

EnableCustomAuthConfigPush

Bool

自己構築の権限付与サービスが使用されるシナリオに適用されます。有効にすると、権限付与ルールの変更によって接続が中断されることはありません。これは WebSocket およびオンラインビジネスシナリオに適しています。

KeepaliveHeaderTimeout

Int

Keep-Alive 応答ヘッダーを生成して、クライアントに接続のキープアライブ時間を通知します。たとえば、10 に設定すると、応答ヘッダー keep-alive: timeout=10 が返されます。0 に設定すると、この応答ヘッダーは返されません。

有効値:[0, 600]。単位:秒。

WebsocketTermGracePeriod

Int

アップグレードや再起動など、ゲートウェイインスタンスが接続を閉じる必要がある場合に WebSocket 接続に対して維持されるキープアライブ時間。

有効値:[20, 900]。単位:秒。

EnableGzipHardwareAccelerate

Bool

専用ハードウェアに基づいて Gzip 圧縮を実行します。有効にすると、リクエストと応答を圧縮し、ゲートウェイのトラフィックを大幅に削減します。ソフトウェアベースの Gzip と比較して、より高いパフォーマンスと低い CPU 使用率を提供します。この機能は、サポートされていないリージョンや、購入時に Gzip ハードウェアアクセラレーションが指定されていなかった場合は有効にできません。これを有効にすると、EnableGzipZipAlgorithm は効果がなくなります。

EnableK8sSourceWorkloadFilter

Bool

サービスソースを追加する際に、指定されたタグに基づいて Ingress、Service、および Pod リソースをフィルターします。逆フィルタリングがサポートされています。