MseIngressConfigは、Microservices Engine (MSE) Ingress Controllerによって提供されるCustomResourceDefinition (CRD) です。 MseIngressConfigsは、MSEクラウドネイティブゲートウェイのライフサイクルを管理し、Ingressリスニングオプションとグローバル設定を構成するために使用されます。 このトピックでは、MseIngressConfigを使用してMSEクラウドネイティブゲートウェイを作成、再利用、および削除する方法について説明します。 このトピックでは、MseIngressConfigを使用して、ゲートウェイレベルでのアクセス制御用のグローバルIPアドレスブラックリストとホワイトリストを設定し、OpenTelemetry用のSimple Log ServiceとManaged Serviceを有効化する方法についても説明します。
背景情報
MSE Ingress Controllerは、クラスター内のMseIngressConfigによって定義されたリソースをリッスンし、リソースに対応するクラウドネイティブゲートウェイのライフサイクルと、ゲートウェイとクラスター間の関連付けをリアルタイムで動的に維持します。 クラスターは、Container Service for Kubernetes (ACK) 管理クラスター、ACKサーバーレスクラスター、またはACSクラスターです。
クラウドネイティブゲートウェイがクラスターのAPIサーバーに関連付けられた後、MSEクラウドネイティブゲートウェイの制御プレーンはIngressリソースの変更を取得し、MSEクラウドネイティブゲートウェイのルーティングルールを動的に更新できます。 MSEクラウドネイティブゲートウェイがリクエストを受信すると、ゲートウェイはリクエストをIngressルーティングルールと照合し、ルーティングルールに基づいてバックエンドサービスに対応するポッドにリクエストをルーティングします。
以下の内容では、Kubernetesクラスター内のサービス、Ingressリソース、IngressClassリソース、MseIngressConfigs、およびMSE Ingress Controller間の関係について説明します。
サービス: サービスはバックエンドサービスの抽象化です。 サービスは、複製されたバックエンドサービスのグループを表すことができる。
Ingress: Ingressにはリバースプロキシルールが含まれています。 Ingressは、HTTPまたはHTTPSリクエストがルーティングされるサービスを指定します。 たとえば、Ingressは、リクエスト内のホスト名とURLに基づいて、リクエストをさまざまなサービスにルーティングします。
IngressClass: IngressClassリソースは、Ingressコントローラーの説明を提供します。 IngressClassリソースは、KubernetesクラスターでIngressコントローラーの実装を宣言するために使用されます。 IngressClassリソースに関連付けられているIngressリソースは、IngressClassリソースで宣言されているIngressコントローラによって解析できます。 解析されたIngressリソースの説明で指定されているトラフィック管理ルールを実装するには、MseIngressConfigをIngressClassのParameterフィールドに関連付ける必要があります。
MseIngressConfig: MseIngressConfigは、MSE Ingress Controllerによって提供されるCRDです。 MseIngressConfigは、クラウドネイティブゲートウェイに関する基本情報を提供します。
MSE Ingress Controller: MSE Ingress Controllerは、MSEクラウドネイティブゲートウェイとその構成を管理するために使用される制御プレーンとして機能します。 MSE Ingress Controllerはネットワークデータプレーンとしては機能しません。 MSE Ingress Controllerは、クラスター内のMseIngressConfigsによって定義されたIngressリソースをリッスンし、解析されたIngressリソースの説明で指定されたトラフィック管理ルールを実装するためにMSEクラウドネイティブゲートウェイを調整するために使用されます。
次の図は、MSE Ingress Controllerの動作を示しています。
MseIngressConfigsの紹介
説明
MseIngressConfigは、MSE Ingress Controllerによって提供されるCRDです。 MSE Ingress ControllerはMseIngressConfigを使用して、MSEクラウドネイティブゲートウェイのライフサイクルとグローバル設定を管理します。
1つのMseIngressConfigは、1つのMSEクラウドネイティブゲートウェイに対応します。 複数のMSEクラウドネイティブゲートウェイを使用する場合は、複数のMseIngressConfigsを作成する必要があります。 再利用シナリオ以外のシナリオでは、MseIngressConfigを削除すると、MseIngressConfigに対応するMSEクラウドネイティブゲートウェイも削除されます。
次のサンプルコードは、MseIngressConfigの完全な構成を示しています。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
name: mse-ingress
common:
pay:
payType: POSTPAY
instance:
spec: 4c8g
replicas: 3
network:
vSwitches:
- "vsw-1"
- "vsw-2"
publicSLBSpec: slb.s2.small
securityGroupType: normal
global:
tls:
enableHardwareAcceleration: true
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.2.XX.XX
monitor:
logging:
sls:
reuseProject: "xxx" # If this parameter is left empty, the default setting is used.
tracing:
xTrace:
sampleRate: "100"
ingress:
local:
ingressClass: mse
watchNamespace: "" # If this parameter is left empty, the cloud-native gateway listens to the Ingress resources in all namespaces.
パラメーター | 説明 | 必須 / 任意 | デフォルト値 |
name | ゲートウェイの名前。 | 不可 | mse-ingress |
common.pay.payType | 課金方法です。 従量課金方式のみサポートされています。 | 不可 このパラメーターを設定しない場合、システムは自動的に従量課金方法を使用します。 | ポストペイ |
common.instance.spec | ゲートウェイの仕様。 有効な値:
| 不可 | 4c8g |
common.instance.replicas | ゲートウェイのレプリカの数。 有効な値: 0 ~ 30。 | 不可 | 3 |
common.net work.vSwitches | プライマリおよびセカンダリvSwitch。 最初にプライマリvSwitchを指定します。 少なくとも1つのvSwitchと最大2つのvSwitchを指定する必要があります。 このパラメーターを指定しない場合、MSE Ingress ControllerのポッドがデプロイされているノードのvSwitchが使用されます。 | ✕ | なし |
common.net work.publicSLBSpec | クラウドネイティブゲートウェイ用に購入したインターネット向けServer Load Balancer (SLB) インスタンスの仕様。 有効な値:
| 不可 | slb.s2.small |
common.net work.privateSLBSpec | クラウドネイティブゲートウェイ用に購入した内部向けSLBインスタンスの仕様。 有効な値:
| 不可 | slb.s2.small |
common.securityGroupType | セキュリティグループのタイプ。 有効な値:
| 不可 | normal |
global.tls.enableHardwareAcceleration | トランスポート層セキュリティ (TLS) ハードウェアアクセラレーションを有効にするかどうかを指定します。 TLSハードウェアアクセラレーションにより、HTTPSトラフィックの処理パフォーマンスが大幅に向上します。 | 不可 | true |
global.ipAccessControl.whitelist | グローバルIPアドレスホワイトリスト。 | 不可 | 未設定 |
global.ipAccessControl.blacklist | グローバルIPアドレスブラックリスト。 | 不可 | 未設定 |
monitor.logging.sls | Simple Log Serviceを有効化するかどうかを指定します。 Simple Log Serviceを有効化する場合は、MSE Ingress ControllerにSimple Log Serviceの権限を付与する必要があります。 | 不可 | false |
monitor.logging.sls.reuseProject | アクセスログが配信されるSimple Log Serviceプロジェクト。 有効な値:
| 不可 | 空のまま |
monitor.tracing.xTrace | xTraceトレース分析を有効にするかどうかを指定します。 | 不可 | デフォルトでは、この機能は無効化されています。 xTraceトレース分析とOpenTelemetryトレース分析を同時に有効にすることはできません。 |
monitor.tracing.xTrace.sampleRate | xTraceトレース分析のサンプリングレート。 | 不可 | 0 |
monitor.tracing.openTelemetry | OpenTelemetryトレース分析を有効にするかどうかを指定します。 | 不可 | デフォルトでは、この機能は無効化されています。 xTraceトレース分析とOpenTelemetryトレース分析を同時に有効にすることはできません。 |
monitor.tracing.openTelemetry.sampleRate | OpenTelemetryトレース分析のサンプリングレート。 | 不可 | 100 |
ingress.local.ingressClass | クラウドネイティブゲートウェイがリッスンするIngressリソースに関連付けられているIngressClassリソース。 有効な値:
説明 MseIngressConfigに関連付けるために使用するIngressClassリソースは、このパラメーターで指定されたIngressClassリソースよりも優先されます。 | 不可 | 未設定 |
ingress.local.watchNamespace | Ingressリソースがクラウドネイティブゲートウェイによってリッスンされるクラスター名前空間。 有効な値:
| 不可 | 空のまま |
ステータスの説明
MseIngressConfigを作成した後、kubectl get MseIngressConfig
コマンドを使用してmseingressconfigのステータスを表示できます。 MseIngressConfigのステータスは、Pending > Running > Listeningの順に変わります。 ステータスの説明:
Pending: クラウドネイティブゲートウェイが作成中であることを示します。 作成プロセスには約3分かかります。
実行中: クラウドネイティブゲートウェイが作成され、実行中であることを示します。
Listening: クラウドネイティブゲートウェイが実行中であり、クラスター内のIngressリソースをリッスンしていることを示します。
Failed: クラウドネイティブゲートウェイが無効であることを示します。 [ステータス] フィールドにメッセージを表示して、原因を特定できます。
タグの説明
リソースタグは、MseIngressConfigsを使用して作成または再利用されるMSEクラウドネイティブゲートウェイに追加されます。 MSE コンソールのMSEクラウドネイティブゲートウェイの基本情報セクションでタグを表示できます。
ゲートウェイへの悪影響を防ぐために、MSEコンソールで次の表に記載されているタグを編集しないでください。
タグ名 | 説明 |
ack.aliyun.com | MSEクラウドネイティブゲートウェイによって管理されるACKクラスターの入力トラフィックを識別します。 |
ingress.k8s.alibaba/MseIngressConfig | MSEクラウドネイティブゲートウェイに関連付けられているMseIngressConfigを識別します。 |
kubernetes.reused.by.us er | MSEクラウドネイティブゲートウェイが再利用されるかどうかを識別します。 再利用シナリオでMSEクラウドネイティブゲートウェイに関連付けられているMseIngressConfigを削除しても、MSEクラウドネイティブゲートウェイは削除されません。 |
MSEクラウドネイティブゲートウェイの作成
MseIngressConfigの設定
次のサンプルコードは、MSE-ingressという名前のmseクラウドネイティブゲートウェイを作成する方法の例を示しています。 ゲートウェイには3つのレプリカがあり、2 vCPUと4 GBのメモリの仕様を使用します。 ビジネス要件に基づいて、MseIngressConfigの他の設定を変更できます。
apiVersion: mse.alibabacloud.com/v1alpha1 kind: MseIngressConfig metadata: name: test spec: name: mse-ingress common: instance: spec: 2c4g replicas: 3
ACKクラスターにIngressClassリソースを作成し、IngressClassリソースをMseIngressConfigに関連付けます。
ACKクラスターにIngressClassリソースを作成し、spec.parametersを使用して、ACKクラスターでMSE Ingress Controllerを宣言するために作成したMseIngressConfigにIngressClassリソースを関連付けます。 このように、クラスタ内のIngressClassリソースに関連付けられたIngressリソースは、前述のMseIngressConfigに関連付けられたMSEクラウドネイティブゲートウェイによって処理および実装されます。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: mse spec: controller: mse.alibabacloud.com/ingress parameters: apiGroup: mse.alibabacloud.com kind: MseIngressConfig name: test
既存のMSEクラウドネイティブゲートウェイの再利用
既存のMSEクラウドネイティブゲートウェイを再利用する場合は、spec.id
をgw-xxx形式のMSEクラウドネイティブゲートウェイの一意のIDに設定し、spec.override
を使用して、MseIngressConfigの作成時にMseIngressConfigに基づいてMSEクラウドネイティブゲートウェイの関連構成を上書きするかどうかを制御できます。
次のサンプルコードでは、MseIngressConfigを使用して、既存のMSEクラウドネイティブゲートウェイを再利用しています。 この場合、システムは、ゲートウェイをACKクラスタに関連付け、ゲートウェイが、そのIngressClassがACKクラスタ内でmseであるIngressリソースをリッスンすることを可能にする。
次のコードでは、
spec.override
はfalse
に設定されています。 これは、既存のMSEクラウドネイティブゲートウェイのIngressリスニングオプションとグローバル設定が上書きされないことを示します。 既存のMSEクラウドネイティブゲートウェイがACKクラスターに関連付けられていない場合、システムはゲートウェイをACKクラスターに自動的に関連付け、Ingressリスニングオプションを設定して、IngressClassがACKクラスターのspec. Ingress. local.ingressClass
の値と同じであるingressリソースをリッスンします。 この例では、spec.ingress.local.ingressClassの値はmseです。 既存のゲートウェイがACKクラスターに関連付けられている場合、元のIngressリスニングオプションは上書きされません。既存のMSEクラウドネイティブゲートウェイのIngressリスニングオプションとグローバル設定を上書きする場合は、MseIngressConfigのゲートウェイパラメーター設定が有効であることを確認する必要があります。 パラメーターは、Ingressリスニングオプション、ハードウェアアクセラレーション、グローバルIPアドレスホワイトリストとブラックリスト、および可観測性に関連しています。 次に、
spec.override
をtrueに設定します。 MseIngressConfigでパラメーターが指定されておらず、spec.override
をtrueに設定した場合、ゲートウェイの元のパラメーター設定が上書きされ、トラフィックに悪影響を与える可能性があります。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: reuse
spec:
id: gw-xxxx
override: false
ingress:
local:
ingressClass: mse
パラメーター | 説明 |
spec.id | 再利用するMSEクラウドネイティブゲートウェイのID。 IDはgw-で始まる必要があります。 |
spec.override | MseIngressConfigの設定に基づいて、MSEクラウドネイティブゲートウェイの関連する設定を上書きするかどうかを指定します。
|
MSEクラウドネイティブゲートウェイの削除
1つのMseIngressConfigは、1つのMSEクラウドネイティブゲートウェイに対応します。 再利用シナリオ以外のシナリオでは、MseIngressConfigを削除すると、MseIngressConfigに対応するMSEクラウドネイティブゲートウェイも削除されます。
次の表に、削除ポリシーを示します。
ゲートウェイ課金方法 | MSE Ingressコントローラによって自動的に作成されたゲートウェイ | コンソールで再利用されるゲートウェイ |
従量課金 | MseIngressConfigが削除されると、関連付けられたゲートウェイも削除されます。 | MseIngressConfigが削除された場合、関連付けられたゲートウェイは保持されます。 |
サブスクリプション | 非該当 | MseIngressConfigが削除された場合、関連付けられたゲートウェイは保持されます。 |
次のコマンドを実行して、MseIngressConfigを削除します。
kubectl delete mseingressconfig your-config-name
ゲートウェイのIPアドレスホワイトリストとブラックリストの設定
IPアドレスのホワイトリストの構成
MSE IngressゲートウェイのグローバルIPアドレスホワイトリストを設定して、ホワイトリスト内の送信元IPアドレスのみがゲートウェイにアクセスできるようにすることができます。
次のサンプルコードでは、送信元IPアドレスが1.1.XX.XX、またはCIDRブロックが2.0.XX.XX/8の場合にのみ、MSE Ingressゲートウェイにアクセスできます。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
global:
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...
IPアドレスブラックリストの設定
MSE IngressゲートウェイのグローバルIPアドレスブラックリストを設定します。 これにより、ブラックリストの送信元IPアドレスからのMSE Ingressゲートウェイへのアクセスを拒否できます。
次のサンプルコードは、送信元IPアドレス1.1.XX.XXまたはCIDRブロック2.0.XX.XX/8からのMSE Ingressゲートウェイへのアクセスを拒否します。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
global:
ipAccessControl:
blacklist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...
Simple Log Serviceの有効化
Simple Log Serviceを有効化する前に、MSE Ingress ControllerにSimple Log Serviceの権限を付与していることを確認する必要があります。
ACK管理クラスターまたはACK専用クラスターのMSE Ingress ControllerにSimple Log Serviceの権限を付与する方法の詳細については、「MSE Ingress Controllerへの権限の付与」の「ACK専用クラスターのMSE Ingress Controllerへの権限の付与」をご参照ください。
Simple Log Serviceの権限をACK ServerlessクラスターのMSE Ingress Controllerに付与する方法の詳細については、「MSE Ingress Controllerへの権限の付与」の「ACK ServerlessクラスターのMSE Ingress Controllerへの権限の付与」を参照してください。
ACSクラスターのMSE Ingress ControllerにSimple Log Serviceの権限を付与する方法の詳細については、「MSE Ingress Controllerへの権限の付与」の「ACSクラスターのMSE Ingress Controllerへの権限の付与」をご参照ください。
次のサンプルコードは、demo
という名前のプロジェクトにアクセスログを配信するようにMSE Ingressゲートウェイを構成する方法の例を示しています。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
monitor:
logging:
sls:
# If the parameter is left empty, access logs are automatically delivered to the default project.
reuseProject: "demo"
...
Simple Log Serviceを有効化するには、reuseProjectパラメーターを設定する必要があります。 既定のプロジェクトを使用する場合は、reuseProjectを空のままにすることができます。
OpenTelemetryのマネージドサービスの有効化
Alibaba Cloud Managed Service for OpenTelemetryサービスをゲートウェイに設定した後、オンライン問題の診断と特定に役立つエンドツーエンドのトレースおよび監視システムを構築できます。
次のサンプルコードでは、MSE IngressゲートウェイのOpenTelemetry用マネージドサービスを構成し、サンプリングレートを100% に設定する方法の例を示します。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
monitor:
tracing:
xTrace:
sampleRate: "100"
...