高度な概念

Citrix ADC CPX、Citrix Ingress Controller,、およびGoogleクラウドでのApplication Delivery Management

GCP K8のアーキテクチャとコンポーネントに関するCitrix 製品の概要

GCPの5つの主要なCitrix コンポーネント

  1. 入力ベースのインターネットクライアントトラフィック用のTier-1ADCとしてのCitrix ADC VPXです。

    GCPのVPXインスタンスを使用すると、GCPコンピューティング機能を活用し、ビジネスニーズに合わせてCitrix の負荷分散機能とトラフィック管理機能を使用できます。GCPでVPXをスタンドアロンインスタンスとして展開できます。単一および複数のネットワークインターフェイスカード (NIC) 構成がサポートされています。

  2. Google Kubernetes エンジン (GKE) を使用してコンテナプラットフォームを形成する Kubernetes クラスターです。

    Kubernetes Engine は、コンテナ化されたアプリケーションを展開するための、マネージド型の実稼働対応環境です。これにより、アプリケーションとサービスの迅速な展開と管理が可能になります。

  3. YAML ファイルライブラリを使用して、サンプルの Citrix Web アプリケーションを展開します。

    Citrix は、GCPで2層アプリケーショントポロジをテストするためのサンプルマイクロサービスWebアプリケーションを提供しています。また、概念実証のために、サンプルファイルには次のコンポーネントも含まれています。

    • Kubernetes YAML ファイルのホットドリンク Web サービスのサンプル
    • クベルネスのYAMLファイル内のコールドドリンクWebサービスの例
    • Kubernetes YAML ファイルのゲストブックウェブサービスの例
    • Kubernetes YAMLファイルのGrafanaチャートサービスの例
    • Kubernetes YAML ファイルのPrometheusのログサービスのサンプル

    GCP

  4. Tier1 Citrix ADC オートメーション用の Citrix Ingress Controllerを GKE クラスターに展開します。

    Kubernetesを中心に構築されたCitrix Ingress Controllerは、入力リソース構成に基づいて1つまたは複数のCitrix ADCを自動的に構成します。Ingress Controllerは、Kubernetes API サーバーが入力リソースの更新を監視し、それに応じて入力ロードバランサーを再設定するコントローラーです。Citrix Ingress Controllerは、YAMLファイルを使用して直接展開することも、Helmチャートを使用して展開することもできます。

    GCP

    Citrix は、Tier 1のVPXインスタンスのCitrix Ingress Controller自動化のためのサンプルYAMLファイルを提供しています。これらのファイルは、Tier 1 VPX上の以下の構成を自動化します。

    • ポリシーとアクションの書き換え
    • レスポンダーのポリシーとアクション
    • コンテンツスイッチURLルール
    • CPXロードバランシングサービスの追加/削除

    GCP用のCitrix ingress Controller YAMLファイルは、次の場所にあります: https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices/tree/master/gcp

GCP での 2 層入力展開

デュアルティアの入力環境では、Citrix ADC VPX/MPXをKubernetesクラスター(Tier 1)の外側に配置し、Citrix ADC CPXをKubernetesクラスター(Tier 2)内に展開します。

Tier 1のVPX/MPXは、Kubernetesクラスター内のTier 2のCPXを負荷分散します。これは、Google クラウド、Amazon Web Services、Azure、オンプレミスの展開のいずれであっても、プラットフォームに広く従う汎用展開モデルです。

Tier 1のVPX/MPXの自動化

Tier 1 VPX/MPX は、Tier 2 CPX を自動的にロードバランシングします。Citrix Ingress Controllerは、Kubernetesクラスター内でポッドとして実行することで、自動化構成を完了します。構成が他の入力リソースと重複しないように、Tier 1 VPX/MPX に対して個別の入力クラスを設定します。

GCP


Citrix 展開の概要

GCPでのTier 1のCitrix ADCのインストールと構成

以下のいずれかを使用して、Citrix ADCを展開できます。

これで、3-NIC GDMテンプレートを使用してCitrix VPX(teir-1-adc)を展開する必要があります。

前提条件(必須):

  1. CitrixメールIDのみを使用してGCPアカウントを作成する。http://console.cloud.google.com

  2. GCPコンソールでプロジェクト名としてcnn-selab-atlを作成します: GCP

  3. デバイスにgcloudユーティリティをインストールします。次のリンクをクリックして、ユーティリティを見つけます:https://cloud.google.com/sdk/install

  4. gcloud APIのgcloud認証 ログインを使用して、Googleアカウントに認証します.

  5. クライアントにkubectlをインストールします:https://kubernetes.io/docs/tasks/tools/install-kubectl/

  6. gcloudユーティリティで次のコマンドを実行して、イメージを作成します。

    gcloud compute images create netscaler12-1 --source-uri=gs://tme-cpx-storage/NSVPX-GCP-12.1-50.28_nc.tar.gz --guest-os-features=MULTI_IP_SUBNET
    

    イメージが作成されるまで少し時間がかかる場合があります。イメージが作成されると、GCP コンソールの [** コンピューティング] > [コンピュートエンジン **] の下に表示されます。

GCPにCitrix VPX(tier-1-adc)を展開する

  1. GCP VPC インスタンス: セキュリティ上の目的で、外部、内部、および DMZ ネットワークの分離に対処します。次の表に示すように、3 つの NIC を作成する必要があります。

    ネットワーク コメント
    192.168.10.0/24 管理ネットワーク(vpx-snet-管理)
    172.16.10.0/24 クライアントネットワーク(vpx-snet-vip)
    10.10.10.0/24 サーバネットワーク(vpx-snet-snip)

    注:

    VM インスタンスを展開する前に、3 アームネットワーク VPC を構築します。

    VPC は、gcloud API を使用して SDK で作成することも、gcloud APIによって Google Cloud Platform コンソールVPCを使用して作成することもできます VPC by gcloud API

    管理トラフィックまたは NSIP トラフィック用の VPC を作成する

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-mgmt --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-mgmt --network=vpx-snet-mgmt --region=us-east1 --range=192.168.10.0/24
    

    クライアントまたは VIP トラフィック用の VPC を作成する

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-vip --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-vip --network=vpx-snet-vip --region=us-east1 --range=172.16.10.0/24
    

    kubernetes クラスターをホストするサーバーまたは SNIP トラフィック用の VPC を作成する

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-snip --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-snip --network=vpx-snet-snip --region=us-east1 --range=10.10.10.0/24
    

    GCP GUI コンソールによる VPC Google コンソールから、[ネットワーク] > [VPC ネットワーク] > [VPC ネットワークを作成] を選択し、次に示すように必須フィールドを入力します。次に、[作成] をクリックします。

    GCP

    同様に、クライアント側とサーバー側の NIC 用の VPC ネットワークを作成して、3 つのサブネットを作成します。

    注:

    3 つの VPC ネットワークはすべて同じリージョンに存在する必要があります。このシナリオでは us-east1 です。

    GCP

  2. VPCネットワークで3つのネットワークと3つのサブネットを作成したら、GDMテンプレートを使用してCitrix ADC VPXインスタンスを展開します。configuration.ymltemplate.py の両方が同じフォルダまたはディレクトリにあることを確認してください。Google SDK から次のコマンドを使用して、インスタンスを展開します。

     gcloud deployment-manager deployments create tier1-vpx --config configuration.yml
    
  3. 展開が正常に完了したら、 コンピュートエンジン に移動して citrix-adc-tier1-vpx セクションを確認し、内部 IP を検証します。

GCP

Citrix Ingress Controllerは、Tier 1 VPXの静的ルート設定を自動化できます。Kubernetes クラスターと同じサブネット/仮想プライベートクラウドのサブネット IP (SNIP) アドレスを設定します。

注:

展開されたTier 1 VPX/MPX は、Kubernetes クラスター内の CPX の負荷分散を行います。Tier 1 VPXでSNIPを構成します。

Tier 1 VPX上のPuTTYセッションから次のコマンドを実行して、SNIPを追加し、SNIPへの管理アクセスを有効にします。

clear config -force full
add ns ip 10.10.10.20 255.255.255.0 -type snip -mgmt enabled
enable ns mode mbf

GKE を使用して Kubernetes クラスターを展開する

一つは、 GoogleクラウドSDKまたはGoogle Cloud Platform GUIコンソールを介してのいずれかKubernetesクラスターを展開することができます。

K8sクラスターを作成するためのGcloud APIコマンド

gcloud beta container --project "cnn-selab-atl" clusters create "k8s-cluster-with-cpx" --zone "us-east1-b" --username "admin" --cluster-version "1.11.7-gke.12" --machine-type "n1-standard-1" --image-type "COS" --disk-type "pd-standard" --disk-size "100" --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --enable-cloud-logging --enable-cloud-monitoring --no-enable-ip-alias --network "projects/cnn-selab-atl/global/networks/vpx-snet-snip" --subnetwork "projects/cnn-selab-atl/regions/us-east1/subnetworks/vpx-snet-snip" --addons HorizontalPodAutoscaling,HttpLoadBalancing --enable-autoupgrade --enable-autorepair

Google Cloud Platform GUI コンソールの手順

  1. GCP コンソールで Kubernetes エンジンを検索し、[クラスターの作成] をクリックします。

    GCP

  2. VPX SNIPと同じサブネットにクラスターを作成します(vpx-snet-snip)。このクラスターは、K8sクラスター内のCitrix Ingress ControllerからTier 1のADCへの構成のプッシュを自動化します。

    GCP

    GCP

  3. [Advanced options]をクリックしてサブネットをvpx-snet-snipに変更し、次のフィールドを選択します。

    GCP

  4. クラウド SDK からこのクラスターにアクセスするには、Kubernetes クラスターに接続 ボタンをクリックし、コマンドをクラウド SDK に貼り付けます。

    GCP

  5. 次のコマンドを実行して、GKE クラスターの展開を検証します。

kubectl get nodes

GCP


サンプル YAML ファイルライブラリを使用したサンプルアプリケーションの展開

Citrix ADCは、マイクロサービスで展開され、インターネット経由でアクセスされるエンタープライズグレードのアプリケーションを負荷分散する、2層アーキテクチャの展開ソリューションを提供します。Tier 1 には、VPX/SDX/MPX などの負荷分散機能があり、North-South トラフィックの負荷分散を行います。Tier 2は、マイクロサービスを管理し、East-Westトラフィックの負荷分散を行うためのCPX展開を備えています。

  1. GKE でクラスターを実行している場合は、クラスタロールバインディングを使用して cluster-admin を設定していることを確認します。次のコマンドを使用してこれを行うことができます。

     kubectl create clusterrolebinding citrix-cluster-admin --clusterrole=cluster-admin --user=<email-id of your google account>.
    
  2. 展開 YAML ファイルがある現在のディレクトリにアクセスします。ノードステータスを取得するには、次のコマンドを実行します。

     kubectl get nodes
    

    GCP

  3. 名前空間を作成します。

     kubectl create -f namespace.yaml
    

    名前空間コマンドを確認します。

     kubectl get namespaces
    

    GCP

  4. rbac.yaml をデフォルトの名前空間に展開します。

     kubectl create -f rbac.yaml
    
  5. 次のコマンドを使用して、ホットドリンク、コールドドリンク、ゲストブックのマイクロサービス用に CPX を展開します。

     kubectl create -f cpx.yaml -n tier-2-adc
     kubectl create -f hotdrink-secret.yaml -n tier-2-adc
    
  6. 3 種類のホットドリンクマイクロサービス(ヘアピンアーキテクチャを備えた SSL タイプのマイクロサービス)を展開します。

     kubectl create -f team_hotdrink.yaml -n team-hotdrink
     kubectl create -f hotdrink-secret.yaml -n team-hotdrink
    
  7. コールドドリンク用マイクロサービス(SSL_TCP タイプのマイクロサービス)を展開します。

     kubectl create -f team_colddrink.yaml -n team-colddrink
     kubectl create -f colddrink-secret.yaml -n team-colddrink
    
  8. ゲストブック(NoSQL タイプのマイクロサービス)を展開します。

     kubectl create -f team_guestbook.yaml -n team-guestbook
    
  9. 上記の3つのアプリケーション用に展開されたCPXを検証します。まず、階層2-adcとして展開されたCPXポッドを取得し、CPXへのCLIアクセスを取得します。

    ``` tier-2-adc名前空間でCPXポッドを取得するには、次を入力します:kubectl get pods -n tier-2-adc

    CPX ポッド(hotdrinks-cpx pod)への CLI アクセス(bash)を取得するには、次のように入力します:kubectl exec -it "copy and paste hotdrink CPX pod name from the above step" bash -n tier-2-adc

    例:

    kubectl exec -it cpx-ingress-hotdrinks-768b674f76-pcnw4 bash -n tier-2-adc

    CS vserver が hotdrink-cpx で実行されているかどうかを確認するには、CPX へのルートアクセスの後に次のコマンドを入力します:cli-script"sh csvs"

    例:

    root@cpx-ingress-hotdrinks-768b674f76-pcnw4:/# cli_script.sh "sh csvs"

  10. VPX入力およびIngress ControllerをTier 2名前空間に展開し、VPXが自動的に構成されます。Citrix Ingress Controller(CIC)は、Tier 1ADC(VPX)を自動化します。

     kubectl create -f ingress_vpx.yaml -n tier-2-adc
     kubectl create -f cic_vpx.yaml -n tier-2-adc
    
  11. インターネット経由でマイクロサービスにアクセスするための DNS エントリをローカルマシンのホストファイルに追加します。

    Windows クライアントの場合は、次に移動します:C:\Windows\System32\drivers\etc\hosts

    macOS クライアントの場合は、ターミナルで次を入力します:sudo nano /etc/hosts`

    ホストのファイルに次のエントリを追加し、ファイルを保存します。

     hotdrink.beverages.com   xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     colddrink.beverages.com  xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     guestbook.beverages.com  xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     grafana.beverages.com    xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     prometheus.beverages.com xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
    
  12. これで、インターネット経由で各アプリケーションにアクセスできます。たとえば、https://hotdrink.beverages.comのようになります。

    GCP


サンプルアプリケーションの書き換えポリシーとレスポンダーポリシーの有効化

次に、カスタムリソース定義(CRD)を使用して、VPXの書き換えポリシーとレスポンダーポリシーをプッシュします。

  1. CRD を展開して、書き換えポリシーとレスポンダーポリシーを既定の名前空間のtier-1-adcにプッシュします。
   kubectl create -f crd_rewrite_responder.yaml
  1. ブラックリストURL hotdrink.beverages.comでコーヒーページへのアクセスをブロックするように、レスポンダーポリシーを設定します。
   kubectl create -f responderpolicy_hotdrink.yaml -n tier-2-adc

レスポンダーポリシーを展開したら、hotdrink.beverages.comのコーヒーページにアクセスします。次に、次のメッセージが表示されます。

GCP

  1. ヘッダー挿入 :ヘッダーにセッション ID を挿入するように、colddrink.beverages.comで書き換えポリシーを設定します。
   kubectl create -f rewritepolicy_colddrink.yaml -n tier-2-adc

書き換えポリシーを展開した後、ブラウザーで開発者モードを有効にしてcolddrink.beverages.comにアクセスします。Chromeで、F12を押し、ネットワークカテゴリのログを保存して、セッションIDを確認します。セッションIDは、ティア1-adc(VPX)の書き換えポリシーによって挿入されます。

GCP


オープンソースツールセット

  1. Prometheus や Grafana などのDeploy Cloud Native Computing Foundation (CNCF) 監視ツールを展開して、ADC プロキシの統計情報を収集します。

     kubectl create -f monitoring.yaml -n monitoring
     kubectl create -f ingress_vpx_monitoring.yaml -n monitoring
    

Prometheusログアグリゲータ

  1. http://grafana.beverages.comにログインし、次の1回限りのセットアップを完了します。

    1. 管理者の認証情報を使用してポータルにログインします。
    2. [データソースを追加] をクリックし、 Prometheus データソースを選択します。
    3. 次の設定を行い、[保存してテスト] ボタンをクリックします。

    GCP

Grafana ビジュアルダッシュボード

  1. 左側のパネルで、[インポート] オプションを選択し、yamlFilesフォルダーで提供されているgrafana_config.jsonファイルをアップロードします。これで、基本的なADC統計がリストされたGrafanaダッシュボードを見ることができます。

GCP


配置の削除

  1. Citrix VPX(tier-1-adc)展開を削除するには、Google SDK CLIコンソールにアクセスしてインスタンスを削除します。

    gcloud deployment-manager deployments delete tier1-vpx
    
  2. GKE Kubernetes クラスターを削除するには、GCP コンソールで kubernetes クラスターを選択し、[削除] をクリックしてクラスターを消去します。

    GCP