Citrix ADC ingress controller

サービスメッシュライト

Ingress ソリューション (ハードウェア、仮想化、コンテナ化) は、通常 North-South (N-S) トラフィックに対して L7 プロキシ機能を実行します。Service Mesh Lite アーキテクチャでは、同じ Ingress ソリューションを使用して East-West トラフィックも管理します。

標準の Kubernetes デプロイメントでは、East-West (E-W) トラフィックは各ノードにデプロイされた組み込みの kube-proxy を通過します。Kube-proxy は、TCP/UDP ベースの負荷分散のみを実行できる L4 プロキシであり、L7 プロキシによって提供される利点は提供されません。

Citrix ADC(MPX、VPX、またはCPX)は、次のようなE-Wトラフィックに対してL7プロキシの利点を提供します。

  • 相互 TLS と SSL オフロード。
  • コンテンツベースのルーティング。HTTP および HTTPS ヘッダーパラメータに基づいてトラフィックを許可またはブロックします。
  • 高度な負荷分散アルゴリズム (最小接続または最短応答時間)
  • ゴールデンシグナル(エラー、遅延、飽和、トラフィック量)の測定による East-West トラフィックの観測性Citrix ADM Service Graph は、マイクロサービスを監視およびデバッグするための可観測性ソリューションです。

サービスメッシュアーキテクチャ (Istio や LinkerD など) は管理が複雑です。Service Mesh Lite アーキテクチャは軽量バージョンであり、同じ要件を満たすためにはるかに簡単に開始できます。

サービスメッシュライトアーキテクチャでCitrix ADC CPXとのEast-West通信を構成するには、まずKube-ProxyがEast-Westトラフィックを管理するように構成されている方法を理解する必要があります。

kube-proxy とのeast-west通信

マイクロサービス用の Kubernetes デプロイメントを作成すると、Kubernetes はレプリカ数に基づいて一連の Pod をデプロイします。これらの Pod にアクセスするには、それらの Pod にアクセスするための抽象化を提供する Kubernetes サービスを作成します。抽象化は、クラスタ IP アドレスをサービスに割り当てることによって実現されます。

Kubernetes DNS には、サービス名とクラスタ IP アドレスをマッピングするアドレスレコードが入力されます。そのため、アプリケーションteacoffeeという名前のマイクロサービスにアクセスしようとすると、DNS はcoffeeサービスのクラスタ IP アドレスをteaアプリケーションに返します。 tea アプリケーションは接続を開始し、kube-proxy によってインターセプトされ、一連の coffee Pod に負荷分散されます。

Kube-proxy

サービスメッシュライトアーキテクチャにおけるCitrix ADC CPXとのeast-west通信

目標は、Citrix ADC CPXをeast-westパスに挿入し、イングレスルールを使用してこのトラフィックを制御することです。

Citrix ADC CPXとのeast-west通信を構成するには、次の手順を実行します。

手順1:Citrix ADC CPXを指すようにコーヒーサービス定義を変更する

Citrix ADC CPX がEast-Westトラフィックを管理するには、マイクロサービスのFQDN(coffeeなど )がターゲットマイクロサービスのクラスターIPではなくCitrix ADC CPX IPアドレスを指す必要があります(coffee)。(このCitrix ADC CPXの展開は、Ingress Citrix ADC CPXデバイスと同じにすることができます)。この変更後、Kubernetes クラスター内のポッドがコーヒーサービスの完全修飾ドメイン名を解決すると、Citrix ADC CPX の IP アドレスが返されます。

コーヒーサービスの変更

注:

監視可能性のためにCitrix ADMでサービスグラフを表示するためにサービスメッシュライトを展開する場合は、サービスの変更後にCitrix ADC CPX IPアドレスを指すアプリケーションのすべてのサービスにラベルcitrix-adc: cpxを追加する必要があります。

ステップ 2: coffee マイクロサービス Podの coffee-headlessという名前のヘッドレスサービスを作成する

Citrix ADC CPX を指すようにcoffeeサービスを変更したので、コーヒーマイクロサービスの展開を表すサービスをもう 1 つ作成する必要があります。

ヘッドレスサービスリソースの例を次に示します。

apiVersion: v1
kind: Service
metadata:
  name: coffee-headless
spec:
#headless Service
  clusterIP: None
  ports:
  - name: coffee-443
    port: 443
    targetPort: 443
  selector:
    name: coffee-deployment
<!--NeedCopy-->

ステップ 3: coffee-headless サービスのルールを含む Ingress リソースを作成する

前の手順の変更により、コーヒーマイクロサービスポッドへのEast-Westトラフィックを制御するようにCitrix ADC CPXを構成するIngressオブジェクトを作成する準備が整いました。

Ingress リソースの例を次に示します。

サンプル

これらの変更を加えた通常のIngress負荷分散方法を使用して、Citrix ADC CPXはEast-Westトラフィックの負荷分散が可能になりました。次の図は、Citrix ADC CPX Service Mesh Liteアーキテクチャが、 Ingressルールを使用してteacoffeeマイクロサービス間のEast-West通信にL7プロキシを提供する方法を示しています。

サンプル

サービスメッシュライトアーキテクチャでのCitrix ADC MPXまたはVPXとのeast-west通信

Ingressとして機能するCitrix ADC MPXまたはVPXは、前のセクションで説明したのと同様の方法で、わずかな変更を加えてeast-westマイクロサービス通信の負荷分散を行うこともできます。次の手順では、これを実現する方法を示します。

手順1:コーヒーホスト名をCitrix ADC MPX/VPX IPアドレスに解決する外部サービスを作成する

これには2つの方法があります。ホスト名または IP アドレスを使用して外部サービスをマッピングする外部サービスを追加できます。

ホスト名 (CNAME) によるマッピング

  • Citrix ADC MPXまたはVPX(myadc–instance1.us-east-1.mydomain.comなど)でIngressエンドポイントIPアドレス(コンテンツスイッチング仮想サーバーのIPアドレス )のドメイン名を作成し、DNSサーバーで更新します。
  • externalName として、 coffee 用の Kubernetes サービスをmyadc–instance1.us-east-1.mydomain.comと作成します 。
  • これで、いずれかの Podがcoffeeマイクロサービスを検索すると、 CNAME(myadc–instance1.us-east-1.mydomain.com) が返されます。
kind: Service
apiVersion: v1
metadata:
name: coffee
spec:
type: ExternalName
externalName: myadc–instance1.us-east-1.mydomain.com
<!--NeedCopy-->

ホスト名を IP アドレスにマッピングする

Citrix ADC MPXまたはVPXでホストされている仮想IPアドレスにリダイレクトするホスト名coffeeをアプリケーションで使用する場合は、以下を作成できます。

---
kind: "Service"
apiVersion: "v1"
metadata:
  name: "coffee"
spec:
  ports:
    -
      name: "coffee"
      protocol: "TCP"
      port: 80
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
  name: "coffee"
subsets:
  -
    addresses:
      -
        ip: "1.1.1.1" # Ingress IP in MPX
    ports:
      -
        port: 80
        name: "coffee"
<!--NeedCopy-->

ステップ 2: マイクロサービス Pod 用のヘッドレスサービスを作成する

Citrix ADC MPX を指すようにコーヒーサービスを変更したので、コーヒーマイクロサービスの展開を表すサービスをもう 1 つ作成する必要があります。

ステップ 3: Ingress リソースを作成する

値がCitrix ADC MPXまたはVPXのIngressエンドポイントIPアドレスと一致するingress.citrix.com/frontend-ipアノテーションを使用してIngressリソースを作成します。

これで、コーヒーマイクロサービスポッドへのeast-westトラフィックを制御するようにCitrix ADC MPXまたはVPXを構成するIngressオブジェクトを作成できます。

イングレス・リソースの例を次に示します。

サンプル

これらの変更を伴う通常の入力負荷分散方法を使用すると、Citrix ADC MPXはEast-Westトラフィックの負荷分散が可能になりました。次の図は、イングレスルールを使用してNSおよびE-Wプロキシとして構成されたCitrix ADC MPXまたはVPXを示しています。

サンプル

Service Mesh Lite でのアプリケーションの自動展開

Service Mesh Lite アーキテクチャでアプリケーションをデプロイするには、複数のタスクを手動で実行する必要があります。ただし、複数のマイクロサービスで構成される複数のアプリケーションをデプロイする場合は、Service Mesh Lite アーキテクチャでサービスをデプロイするほうが簡単です。Citrix は、すぐにデプロイできる YAML を自動生成する方法を提供します。

このドキュメントでは 、Citrix が提供するスクリプトを使用して、既存の YAML から Service Mesh Lite の展開に必要なすべての YAML を生成する方法について説明します。

サービスメッシュライト