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 リソースを示します。パラメーター | 説明 | デフォルト値 |
| ゲートウェイの名前。 | apig-ingress |
| 課金方法。 現在、従量課金のみがサポートされています。このパラメーターを設定しない場合、デフォルトで従量課金が使用されます。 | POSTPAY |
| ゲートウェイのインスタンスタイプ。 有効値:
| apigw.small.x1 |
| プライマリおよびセカンダリの vSwitch。プライマリ vSwitch が最初にリストされ、次にセカンダリがリストされます。 少なくとも 1 つ、最大で 2 つの vSwitch を指定します。これを空のままにすると、vSwitch は Controller Pod が実行されているノードから取得されます。 | なし |
| ゲートウェイ用に購入されるインターネット向け SLB インスタンスのタイプ。 有効値:
| Internet |
| セキュリティグループのタイプ。 有効値:
| normal |
| TLS ハードウェアアクセラレーションを有効または無効にします。 この機能を有効にすると、HTTPS トラフィックのパフォーマンスが大幅に向上します。 | 有効 |
| アクセス制御のためのグローバル IP ホワイトリスト。 | 未設定 |
| アクセス制御のためのグローバル IP ブラックリスト。 | 未設定 |
| Simple Log Service (SLS) を有効または無効にします。 この機能を有効にするには、Controller に必要な 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 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 権限が付与されていることを確認してください。
ACK マネージドクラスター:詳細については、「APIG Controller への権限付与」をご参照ください。
次のサンプルコードは、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 Controller によって使用または自動作成されたゲートウェイインスタンスを見つけます。インスタンス 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 リソースをフィルターします。逆フィルタリングがサポートされています。 |