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

Container Service for Kubernetes:MseIngressConfigの設定

最終更新日:Dec 09, 2024

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の動作を示しています。ingress的应用场景

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

ゲートウェイの仕様。

有効な値:

  • 2c4g

  • 4c8g

  • 8c16g

  • 16c32g

不可

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.s1.small

  • slb.s2.small

  • slb.s2.medium

  • slb.s3.small

  • slb.s3.medium

  • slb.s3.large

不可

slb.s2.small

common.net work.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

トランスポート層セキュリティ (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リソース。

有効な値:

  • 未設定: 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分かかります。

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

  • 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クラウドネイティブゲートウェイの作成

  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を使用して、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.overridefalseに設定されています。 これは、既存の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クラウドネイティブゲートウェイの関連する設定を上書きするかどうかを指定します。

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

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

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"
   ...