ApigConfig は、APIG コントローラーが提供するカスタムリソース定義 (CRD) です。ApigConfig を使用して、APIG ゲートウェイインスタンスのライフサイクル管理、Ingress リスナーオプションの設定、およびグローバル構成を行うことができます。また、ApigConfig を使用すると、ブラックリストとホワイトリストによるインスタンスレベルのグローバル IP アクセスの制御、ログ収集、およびトレース分析を実装できます。
ApigConfig の説明
設定の説明
ApigConfig は、APIG コントローラーが 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 リソースを示します。パラメーター | 説明 | デフォルト値 |
| ゲートウェイの名前。 | apig-ingress |
| 課金方法。 現在、従量課金のみがサポートされています。このパラメーターを設定しない場合、デフォルトで従量課金が使用されます。 | POSTPAY |
| ゲートウェイのインスタンスタイプ。 有効値:
| apigw.small.x1 |
| プライマリおよびセカンダリの vSwitch。プライマリ、セカンダリの順に指定します。 少なくとも 1 つ、最大で 2 つの vSwitch を指定します。これを空のままにすると、vSwitch はコントローラーの Pod が実行されているノードから取得されます。 | なし |
| ゲートウェイ用に購入されるインターネット向け SLB インスタンスのタイプ。 有効値:
| Internet |
| セキュリティグループのタイプ。 有効値:
| normal |
| TLS ハードウェアアクセラレーションを有効または無効にします。 この機能を有効にすると、HTTPS トラフィックのパフォーマンスが大幅に向上します。 | 有効 |
| アクセスの制御のためのグローバル IP ホワイトリスト。 | 未設定 |
| アクセスの制御のためのグローバル IP ブラックリスト。 | 未設定 |
| Simple Log Service (SLS) を有効または無効にします。 この機能を有効にするには、コントローラーに必要な SLS 権限を付与します。 | シャットダウン |
| アクセスログが配信される SLS の宛先プロジェクト。 有効値:
| 空 |
| OpenTelemetry トレース分析のサンプルレート | 0 |
| OpenTelemetry トレース分析を有効または無効にします。 | このオプションはデフォルトで無効化されており、OpenTelemetry と相互排他です。 |
| OpenTelemetry トレース分析のサンプルレート。 | 100 |
| APIG ゲートウェイがリッスンする、クラスター内の特定の IngressClass に属する Ingress リソース。 有効値:
説明 この設定は、IngressClass リソースを介して ApigConfig を関連付けるよりも優先度が低くなります。 | 未設定 |
| APIG ゲートウェイが Ingress リソースをリッスンするクラスター内の名前空間。 有効値:
| 空 |
ステータスの説明
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 ゲートウェイインスタンスの作成
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コンテナークラスターに 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.overrideはfalseに設定されています。この設定により、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パラメーター | 説明 |
| 再利用する対象の APIG ゲートウェイインスタンスの ID。フォーマットは `gw-xxx` です。 |
| ApigConfig に基づいて、再利用される APIG ゲートウェイインスタンスの設定を上書きするかどうかを指定します。
|
APIG ゲートウェイインスタンスの削除
1 つの ApigConfig は 1 つの APIG ゲートウェイインスタンスに対応します。再利用シナリオを除き、ApigConfig を削除すると、対応する APIG ゲートウェイインスタンスがカスケード削除されます。
削除ポリシーは次の表のとおりです。
ゲートウェイの課金方法 | APIG コントローラーによる自動作成 | コンソールで購入したゲートウェイの再利用 |
従量課金 | ApigConfig を削除すると、ゲートウェイインスタンスが自動的に削除されます。 | ApigConfig は削除されますが、ゲートウェイインスタンスは保持されます。 |
次のコマンドを実行して ApigConfig を削除します。
kubectl delete ApigConfig your-config-nameグローバルなインスタンスレベルの IP アクセスの制御の設定
IP ホワイトリストの設定
グローバルなインスタンスレベルの IP ホワイトリストを設定して、特定の送信元 IP のみが APIG Ingress にアクセスできるように許可できます。
次のサンプルコードは、APIG Ingress ゲートウェイインスタンスが送信元 IP アドレス 1.1.XX.XX または CIDR ブロック 2.0.XX.XX/8 からのアクセスのみを許可するように設定します。
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 へのアクセスを拒否できます。
次のサンプルコードは、APIG Ingress ゲートウェイインスタンスが送信元 IP アドレス 1.1.XX.XX または CIDR ブロック 2.0.XX.XX/8 からのアクセスを拒否するように設定します。
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 コントローラーに必要な SLS 権限が付与されていることを確認してください。
次のサンプルコードは、APIG Ingress ゲートウェイが demo という名前のプロジェクトにアクセスログを配信するように設定します。
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
monitor:
logging:
sls:
# reuseProject を設定して SLS を有効にします。デフォルトのプロジェクトを使用するには、これを空のままにします。
reuseProject: "demo"
...OpenTelemetry トレース分析の有効化
ゲートウェイに Alibaba Cloud OpenTelemetry トレース分析を設定すると、エンドツーエンドのトレースおよび監視システムを構築して、オンラインの問題を迅速に診断し、特定できます。
次のサンプルコードは、APIG Ingress ゲートウェイの OpenTelemetry トレース分析をサンプルレート (sampleRate) 100% で設定します。
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
monitor:
tracing:
openTelemetry:
sampleRate: "100"
...その他の設定
APIG Ingress で使用されるゲートウェイインスタンスは、追加の設定をサポートしています。
これらの設定を適用するには、クラウドネイティブ API ゲートウェイコンソールにログインします。 メニューで、APIG コントローラーによって使用または自動作成されたゲートウェイインスタンスを見つけます。インスタンス ID をクリックし、左側のナビゲーションウィンドウで [パラメーター設定] をクリックします。
設定項目 | タイプ | 説明 |
| Bool | リクエストスコープに適用されます。リクエストヘッダーにリクエスト ID を生成して、リクエストのトレースを可能にします。 |
| Bool | リクエストおよび応答ステージに適用されます。gzip を有効にすると、リクエストと応答が圧縮されます。これにより、ゲートウェイのトラフィックは減少しますが、ゲートウェイの CPU 使用量が増加します。 |
| Bool | リクエスト内の冗長な |
| Int | ゲートウェイ接続に適用されます。単一接続のバッファーサイズ。この設定は、スループットとゲートウェイのメモリ使用量に影響します。 有効値:[0, 2147483647]。 |
| Int | リクエストステージに適用されます。ゲートウェイの前にある信頼できるプロキシの数。この設定は、ゲートウェイが 有効値:[0, 10]。単位:プロキシ。 |
| Int | リクエストステージに適用されます。クライアントが HTTP/2 を使用する場合の、単一接続での最大同時ストリーム数。 有効値:[0, 2147483647]。単位:バイト。 |
| Int | リクエストステージに適用されます。HTTP/2 を使用する際にゲートウェイとクライアント間でネゴシエートされる初期 有効値:[65535, 2147483647]。単位:バイト。 |
| Int | リクエストステージに適用されます。ゲートウェイとクライアントが HTTP/2 を使用する際の初期接続レベルのウィンドウサイズ。 有効値:[65535, 2147483647]。単位:バイト。 |
| Bool | HTTP/3 プロトコルをサポートするかどうかを指定します。 HTTP/3 はハードウェアアクセラレーション機能と互換性がありません。HTTP/3 サポートを有効にする前に、ハードウェアアクセラレーションを無効にしてください。 |
| String | URI パスに %2F、%2f、%5C、%5c などのエスケープ文字が含まれるリクエストに対するアクションを決定します。デフォルト値は 有効値: |
| List<String> | 圧縮が有効になった後に使用される圧縮アルゴリズム。 有効値: |
| Bool | PROXY プロトコルを有効にするかどうかを指定します。ゲートウェイのインバウンドトラフィックが NLB を介してアクセスされる場合、クライアントの送信元 IP アドレスを取得するためにこれを有効にする必要があります。これを有効にしても、非 PROXY プロトコルのリクエストには影響しません。 |
| Bool | 自己構築の権限付与サービスを使用するシナリオに適用されます。有効にすると、権限付与ルールの変更によって接続が中断されることはありません。これは、WebSocket やオンラインビジネスのシナリオに適しています。 |
| Int | 接続のキープアライブ時間をクライアントに通知するための Keep-Alive 応答ヘッダーを生成します。たとえば、10 に設定すると、応答ヘッダー 有効値:[0, 600]。単位:秒。 |
| Int | アップグレードや再起動など、ゲートウェイインスタンスが接続を閉じる必要がある場合に、WebSocket 接続に対して維持されるキープアライブ時間。 有効値:[20, 900]。単位:秒。 |
EnableGzipHardwareAccelerate | Bool | 専用ハードウェアに基づいて Gzip 圧縮を実行します。有効にすると、リクエストと応答を圧縮し、ゲートウェイのトラフィックを大幅に削減します。ソフトウェアベースの Gzip と比較して、より高いパフォーマンスと低い CPU 消費量を提供します。この機能は、サポートされていないリージョンや、購入時に Gzip ハードウェアアクセラレーションが指定されていなかった場合には有効にできません。これを有効にすると、 |
EnableK8sSourceWorkloadFilter | Bool | サービスソースを追加する際に、指定されたタグに基づいて Ingress、Service、および Pod リソースをフィルターします。逆フィルターもサポートされています。 |