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

Microservices Engine:MseIngressConfig の構成

最終更新日:Jan 14, 2025

MseIngressConfig は、Microservices Engine(MSE)Ingress Controller によって提供される CustomResourceDefinition(CRD)です。 MseIngressConfig は、MSE クラウドネイティブ ゲートウェイのライフサイクルの管理、および Ingress リスニングオプションとグローバル設定の構成に使用されます。 このトピックでは、MseIngressConfig を使用して MSE クラウドネイティブ ゲートウェイを作成、再利用、および削除する方法について説明します。 また、MseIngressConfig を使用して、ゲートウェイレベルでのアクセス制御のためのグローバル IP アドレスのブラックリストとホワイトリストを構成し、Simple Log Service および Managed Service for OpenTelemetry をアクティブ化する方法についても説明します。

背景情報

MSE Ingress Controller は、クラスター内の MseIngressConfig によって定義されたリソースをリッスンし、リソースに対応するクラウドネイティブ ゲートウェイのライフサイクルと、ゲートウェイとクラスター間の関連付けをリアルタイムで動的に維持します。 クラスターは、Container Service for Kubernetes(ACK)マネージド クラスター、ACK Serverless クラスター、または ACS クラスターです。

クラウドネイティブ ゲートウェイがクラスターの API サーバーに関連付けられると、MSE クラウドネイティブ ゲートウェイの制御プレーンは Ingress リソースの変更を取得し、MSE クラウドネイティブ ゲートウェイのルーティングルールを動的に更新できます。 MSE クラウドネイティブ ゲートウェイはリクエストを受信すると、Ingress ルーティングルールとリクエストを照合し、ルーティングルールに基づいてバックエンド サービスに対応するポッドにリクエストをルーティングします。

Kubernetes クラスターにおけるサービス、Ingress リソース、IngressClass リソース、MseIngressConfig、および MSE Ingress Controller 間の関係を以下に示します。

  • サービス: サービスはバックエンド サービスの抽象化です。 サービスは、複製されたバックエンド サービスのグループを表すことができます。

  • Ingress: Ingress にはリバース プロキシ ルールが含まれています。 Ingress は、HTTP または HTTPS リクエストのルーティング先となるサービスを指定します。 たとえば、Ingress は、リクエスト内のホスト名と URL に基づいて、リクエストを異なるサービスにルーティングします。

  • IngressClass: IngressClass リソースは、Ingress コントローラーの説明を提供します。 IngressClass リソースは、Kubernetes クラスター内の Ingress コントローラーの実装を宣言するために使用されます。 IngressClass リソースに関連付けられている Ingress リソースは、IngressClass リソースで宣言されている Ingress コントローラーによって解析できます。 解析された Ingress リソース記述で指定されたトラフィック管理ルールを実装するには、MseIngressConfig を IngressClass の パラメーター フィールドに関連付ける必要があります。

  • MseIngressConfig: MseIngressConfig は、MSE Ingress Controller によって提供される CRD です。 MseIngressConfig は、クラウドネイティブ ゲートウェイに関する基本情報を提供します。

  • MSE Ingress Controller: MSE Ingress Controller は、MSE クラウドネイティブ ゲートウェイとその構成を管理するために使用される制御プレーンとして機能します。 MSE Ingress Controller は、ネットワーク データ プレーンとしては機能しません。 MSE Ingress Controller は、クラスター内の MseIngressConfig によって定義された Ingress リソースをリッスンし、MSE クラウドネイティブ ゲートウェイを調整して、解析された Ingress リソース記述で指定されたトラフィック管理ルールを実装するために使用されます。

次の図は、MSE Ingress Controller のしくみを示しています。ingress的应用场景

MseIngressConfig の概要

説明

MseIngressConfig は、MSE Ingress Controller によって提供される CRD です。 MSE Ingress Controller は、MseIngressConfig を使用して、MSE クラウドネイティブ ゲートウェイのライフサイクルとグローバル設定を管理します。

説明

1 つの MseIngressConfig は 1 つの MSE クラウドネイティブ ゲートウェイに対応します。 複数の MSE クラウドネイティブ ゲートウェイを使用する場合は、複数の MseIngressConfig を作成する必要があります。再利用シナリオ以外のシナリオでは、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" # このパラメーターを空のままにすると、デフォルト設定が使用されます。
    tracing:
      openTelemetry:
        sampleRate: "100"
  ingress:
    local:
      ingressClass:  mse
      watchNamespace: "" # このパラメーターを空のままにすると、クラウドネイティブ ゲートウェイはすべての名前空間の Ingress リソースをリッスンします。

パラメーター

説明

必須

デフォルト値

name

ゲートウェイの名前。

いいえ

mse-ingress

common.pay.payType

課金方法。

従量課金制のみがサポートされています。

いいえ

このパラメーターを構成しない場合、システムは自動的に従量課金制を使用します。

POSTPAY

common.instance.spec

ゲートウェイの仕様。

有効な値:

  • 2c4g

  • 4c8g

  • 8c16g

  • 16c32g

いいえ

4c8g

common.instance.replicas

ゲートウェイのレプリカ数。

有効な値: 0 ~ 30。

いいえ

3

common.network.vSwitches

プライマリ vSwitch とセカンダリ vSwitch。最初にプライマリ vSwitch を指定します。

少なくとも 1 つ、最大 2 つの vSwitch を指定する必要があります。 このパラメーターを指定しない場合、MSE Ingress Controller のポッドがデプロイされているノード上の vSwitch が使用されます。

いいえ

なし

common.network.publicSLBSpec

クラウドネイティブ ゲートウェイ用に購入するインターネット向け Server Load Balancer(SLB)インスタンスの仕様。

有効な値:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

いいえ

slb.s2.small

common.network.privateSLBSpec

クラウドネイティブ ゲートウェイ用に購入する内部向け SLB インスタンスの仕様。

有効な値:

  • slb.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

いいえ

slb.s2.small

common.securityGroupType

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

有効な値:

  • enterprise: 拡張セキュリティ グループ

  • normal: ベーシック セキュリティ グループ

いいえ

normal

global.tls.enableHardwareAcceleration

Transport Layer Security (TLS) ハードウェア アクセラレーションを有効にするかどうかを指定します。

TLS ハードウェア アクセラレーションは、HTTPS トラフィックの処理パフォーマンスを大幅に向上させることができます。

いいえ

true

global.ipAccessControl.whitelist

グローバル IP アドレス ホワイトリスト。

いいえ

未構成

global.ipAccessControl.blacklist

グローバル IP アドレス ブラックリスト。

いいえ

未構成

monitor.logging.sls

Simple Log Service をアクティブにするかどうかを指定します。

Simple Log Service をアクティブにするには、Simple Log Service に対する権限を MSE Ingress Controller に付与する必要があります。

いいえ

false

monitor.logging.sls.reuseProject

アクセス ログの配信先となる Simple Log Service プロジェクト。

有効な値:

  • 空のまま: デフォルトで作成されるプロジェクトを示します。

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

いいえ

空のままにします

monitor.tracing.xTrace.sampleRate

Managed Service for OpenTelemetry のサンプリングレートです。

いいえ

0

monitor.tracing.openTelemetry

Managed Service for OpenTelemetry を有効にするかどうかを指定します。

いいえ

デフォルトでは、Managed Service for OpenTelemetry は無効になっています。 Managed Service for OpenTelemetry とオープンソースの OpenTelemetry を同時に有効にすることはできません。

monitor.tracing.openTelemetry.sampleRate

Managed Service for OpenTelemetry のサンプリング レート。

いいえ

100

ingress.local.ingressClass

クラウドネイティブ ゲートウェイがリッスンする Ingress リソースに関連付けられている IngressClass リソース。

有効な値:

  • 未構成: Ingress リソースはリッスンされません。

  • mse: IngressClass が mse である Ingress リソースがリッスンされます。

  • 空のまま "": すべての Ingress リソースがリッスンされます。

  • nginx: IngressClass が nginx である Ingress リソース、または IngressClass が関連付けられていない Ingress リソースがリッスンされます。

  • その他の値: 指定された IngressClass に関連付けられている Ingress リソースがリッスンされます。

説明

MseIngressConfig に関連付けるために使用する IngressClass リソースは、このパラメーターで指定された IngressClass リソースよりも優先されます。

いいえ

未構成

ingress.local.watchNamespace

クラウドネイティブ ゲートウェイによって Ingress リソースがリッスンされるクラスター名前空間。

有効な値:

  • 空のまま: すべてのクラスター名前空間の Ingress リソースがリッスンされます。

  • 指定値: 指定された名前空間の Ingress リソースがリッスンされます。 指定できる名前空間は 1 つだけです。

いいえ

空のまま

ステータス説明

MseIngressConfig を作成した後、kubectl get mseingressconfig コマンドを使用して MseIngressConfig のステータスを表示できます。 MseIngressConfig のステータスは、Pending > Running > Listening の順序で変化します。 ステータス説明:

  • Pending: クラウドネイティブ ゲートウェイが作成中であることを示します。 作成プロセスには約 3 分かかります。

  • Running: クラウドネイティブ ゲートウェイが作成され、実行中であることを示します。

  • Listening: クラウドネイティブ ゲートウェイが実行中で、クラスター内の Ingress リソースをリッスンしていることを示します。

  • Failed: クラウドネイティブ ゲートウェイが無効であることを示します。 原因を特定するには、ステータス フィールドのメッセージを確認できます。

タグの説明

リソース タグは、MseIngressConfig を使用して作成または再利用された MSE クラウドネイティブ ゲートウェイに追加されます。 MSE コンソールの MSE クラウドネイティブ ゲートウェイの基本情報セクションでタグを表示できます。

重要

ゲートウェイへの悪影響を防ぐため、MSE コンソールで次の表に記載されているタグを編集しないでください。

タグ名

説明

ack.aliyun.com

MSE クラウドネイティブ ゲートウェイによって管理される ACK クラスターのイングレス トラフィックを識別します。

ingress.k8s.alibaba/MseIngressConfig

MSE クラウドネイティブ ゲートウェイに関連付けられている MseIngressConfig を識別します。

kubernetes.reused.by.user

MSE クラウドネイティブ ゲートウェイが再利用されているかどうかを識別します。 再利用シナリオで MSE クラウドネイティブ ゲートウェイに関連付けられている MseIngressConfig を削除しても、MSE クラウドネイティブ ゲートウェイは削除されません。

MSE クラウドネイティブ ゲートウェイの作成

  1. 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
  2. ACK クラスターに IngressClass リソースを作成し、IngressClass リソースを MseIngressConfig に関連付けます。

    ACK クラスターに IngressClass リソースを作成し、spec.parameters を使用して IngressClass リソースを作成した MseIngressConfig に関連付けることで、ACK クラスターで MSE Ingress Controller を宣言します。 これにより、クラスター内の 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 クラスターに関連付け、ゲートウェイが ACK クラスター内の IngressClass が mse である Ingress リソースをリッスンできるようにします。

重要
  • 次のコードでは、spec.overridefalse に設定されています。 これは、既存の MSE クラウドネイティブ ゲートウェイの Ingress リスニング オプションとグローバル構成が上書きされないことを示します。 既存の MSE クラウドネイティブ ゲートウェイが ACK クラスターに関連付けられていない場合、システムは自動的にゲートウェイを ACK クラスターに関連付け、Ingress リスニング オプションを構成して、IngressClass が spec.ingress.local.ingressClass の値と同じである Ingress リソースを ACK クラスターでリッスンします。 この例では、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 クラウドネイティブ ゲートウェイの関連構成を上書きするかどうかを指定します。

  • このパラメーターを true に設定すると、Ingress リスニング オプション、ハードウェア アクセラレーション、グローバル IP アドレスのホワイトリストとブラックリスト、および可観測性に関連するゲートウェイ パラメーターの設定が上書きされます。

  • このパラメーターを false に設定すると、Ingress リスニング オプション、ハードウェア アクセラレーション、グローバル IP アドレスのホワイトリストとブラックリスト、および可観測性に関連するゲートウェイ パラメーターの設定は上書きされません。 ただし、既存のゲートウェイが ACK クラスターに関連付けられていない場合、システムは自動的にゲートウェイを ACK クラスターに関連付け、Ingress リスニング オプションを構成して、IngressClass が spec.ingress.local.ingressClass の値と同じである Ingress リソースを ACK クラスターでリッスンします。

MSE クラウドネイティブ ゲートウェイの削除

1 つの MseIngressConfig は 1 つの MSE クラウドネイティブ ゲートウェイに対応します。 再利用シナリオ以外のシナリオでは、MseIngressConfig を削除すると、MseIngressConfig に対応する MSE クラウドネイティブ ゲートウェイも削除されます。

次の表に、削除ポリシーを示します。

ゲートウェイの課金方法

MSE Ingress Controller によって自動的に作成されたゲートウェイ

コンソールで再利用されたゲートウェイ

従量課金制

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 をアクティブ化する前に、Simple Log Service に対する権限を MSE Ingress Controller に付与していることを確認する必要があります。

  • ACK マネージド クラスターまたは ACK 専用クラスターで Simple Log Service に対する権限を MSE Ingress Controller に付与する方法については、「MSE Ingress Controller への権限の付与」の「ACK 専用クラスターで MSE Ingress Controller に権限を付与する」セクションをご参照ください。

  • ACK Serverless クラスターで Simple Log Service に対する権限を MSE Ingress Controller に付与する方法については、「MSE Ingress Controller への権限の付与」の「ACK Serverless クラスターで MSE Ingress Controller に権限を付与する」セクションをご参照ください。

  • ACS クラスターで Simple Log Service に対する権限を MSE Ingress Controller に付与する方法については、「MSE Ingress Controller への権限の付与」の「ACS クラスターで MSE Ingress Controller に権限を付与する」セクションをご参照ください。

次のサンプル コードは、demo という名前のプロジェクトにアクセス ログを配信するように MSE Ingress ゲートウェイを構成する方法の例を示しています。

apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
   name: test
spec:
   ...
  monitor:
    logging:
      sls:
        # パラメーターを空のままにすると、アクセス ログはデフォルト プロジェクトに自動的に配信されます。
        reuseProject: "demo"
    ...
説明

Simple Log Service をアクティブにするには、reuseProject パラメーターを構成する必要があります。 デフォルト プロジェクトを使用する場合は、reuseProjectを空のままにすることができます。

Managed Service for OpenTelemetry のアクティブ化

ゲートウェイに Alibaba Cloud Managed Service for OpenTelemetry サービスを構成すると、オンラインの問題の診断と特定に役立つエンドツーエンドのトレースおよび監視システムを構築できます。

次のサンプル コードは、MSE Ingress ゲートウェイに Managed Service for OpenTelemetry を構成し、サンプリング レートを 100% に設定する方法の例を示しています。

apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
   name: test
spec:
   ...
  monitor:
    tracing:
      openTelemetry:
        sampleRate: "100"
   ...