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

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

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

  1. Citrix ADC VPXは、入力ベースのインターネットクライアントトラフィック用のティア1 ADCです。

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

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

    Kubernetes Engine は、コンテナ化されたアプリケーションをデプロイするための、マネージド型の本番環境です。これにより、アプリケーションとサービスの迅速な導入と管理が可能になります。

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

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

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

    GCP

  4. Tier 1 Citrix ADC オートメーション用の Citrix Ingress コントローラーを GKE クラスタにデプロイします。

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

    GCP

    シトリックスは、ティア1のVPXインスタンスのCitrix Ingressコントローラー自動化用のサンプル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クラスターの外(ティア1)にデプロイし、Citrix ADC CPXをKubernetesクラスター(ティア2)内にデプロイします。

ティア1のVPX/MPXは、Kubernetesクラスタ内のティア2のCPXを負荷分散します。これは、Google Cloud、Amazon Web Services、Azure、オンプレミスデプロイなど、プラットフォームに関係なく広く採用されている一般的なデプロイモデルです。

ティア1のVPX/MPXの自動化

Tier 1 VPX/MPX は、Tier 2 CPX を自動的に負荷分散します。Citrix ingress controller、Kubernetesクラスター内のポッドとして実行することで自動化構成を完了します。ティア1のVPX/MPX用に個別の入力クラスを構成し、構成が他の入力リソースと重複しないようにします。

GCP


Citrix 導入の概要

GCPにティア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
    <!--NeedCopy-->
    

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

Citrix VPX(Tier-1-ADC)をGCPにデプロイする

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

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

    注:

    VM インスタンスをデプロイする前に、スリーアームネットワーク VPC を構築します。

    VPC は、gcloud API または Google Cloud Platform コンソールを使用して SDK で作成できます。

    gcloud API による VPC

    管理トラフィックまたは 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
     <!--NeedCopy-->
    

    クライアントまたは 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
     <!--NeedCopy-->
    

    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
     <!--NeedCopy-->
    

    *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
     <!--NeedCopy-->
    
  3. デプロイが成功したら、 Compute Engine に移動して citrix-adc-tier1-vpx セクションを確認し、内部 IP を検証します。

GCP

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

注:

デプロイされたティア1のVPX/MPXは、Kubernetesクラスター内のCPXの負荷分散を行います。ティア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
<!--NeedCopy-->

GKE を使用して Kubernetes クラスタをデプロイする

Kubernetes クラスタは、 Google Cloud SDK または Google Cloud Platform GUI コンソールを介してデプロイできます

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
<!--NeedCopy-->

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

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

    GCP

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

    GCP

    GCP

  3. [ 詳細オプション ] をクリックしてサブネットをvpx-snet-snipに変更し、次のフィールドを選択します。

    GCP

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

    GCP

  5. 次のコマンドを実行して GKE クラスタのデプロイを検証します。

kubectl get nodes
<!--NeedCopy-->

GCP


サンプル YAML ファイルライブラリを使用してサンプルアプリケーションをデプロイします

Citrix ADC、マイクロサービスに展開され、インターネット経由でアクセスされるエンタープライズグレードのアプリケーションの負荷を分散するための2層アーキテクチャ展開ソリューションを提供します。ティア1には、North-Southトラフィックの負荷を分散するためのVPX/SDX/MPXなどの重いロードバランサーがあります。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>.
     <!--NeedCopy-->
    
  2. デプロイメント YAML ファイルがある現在のディレクトリにアクセスします。次のコマンドを実行してノードのステータスを取得します。

     kubectl get nodes
     <!--NeedCopy-->
    

    GCP

  3. 名前空間の作成:

     kubectl create -f namespace.yaml
     <!--NeedCopy-->
    

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

     kubectl get namespaces
     <!--NeedCopy-->
    

    GCP

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

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

     kubectl create -f cpx.yaml -n tier-2-adc
     kubectl create -f hotdrink-secret.yaml -n tier-2-adc
     <!--NeedCopy-->
    
  6. 3 つのホットドリンク飲料マイクロサービス (ヘアピンアーキテクチャの SSL タイプのマイクロサービス) をデプロイします。

     kubectl create -f team_hotdrink.yaml -n team-hotdrink
     kubectl create -f hotdrink-secret.yaml -n team-hotdrink
     <!--NeedCopy-->
    
  7. コールドドリンク飲料マイクロサービス (SSL_TCP タイプのマイクロサービス) をデプロイします。

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

     kubectl create -f team_guestbook.yaml -n team-guestbook
     <!--NeedCopy-->
    
  9. 上記の 3 つのアプリケーションに導入された CPX を検証します。まず、Tier-2-adc としてデプロイされた CPX ポッドを取得し、次に CPX への CLI アクセスを取得します。

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

    CPX ポッド (hotdrinks-cpx ポッド) への 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入力および入力コントローラーをティア2名前空間にデプロイすると、VPXが自動的に構成されます。Citrix Ingress Controller (CIC) は Tier-1-ADC (VPX) を自動化します。

     kubectl create -f ingress_vpx.yaml -n tier-2-adc
     kubectl create -f cic_vpx.yaml -n tier-2-adc
     <!--NeedCopy-->
    
  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)
     <!--NeedCopy-->
    
  12. これで、インターネット経由で各アプリケーションにアクセスできます。例:https://hotdrink.beverages.com

    GCP


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

今度は、VPXの書き換えポリシーとレスポンダーポリシーをカスタムリソース定義(CRD)を介してプッシュする時です。

  1. CRD をデプロイして、リライトポリシーとレスポンダーポリシーをデフォルト名前空間の tier-1-adc にプッシュします。
   kubectl create -f crd_rewrite_responder.yaml
   <!--NeedCopy-->
  1. ブラックリスト URLコーヒーページへのアクセスをブロックするようにhotdrink.beverages.comでレスポンダーポリシーを設定します。
   kubectl create -f responderpolicy_hotdrink.yaml -n tier-2-adc
   <!--NeedCopy-->

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

GCP

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

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

GCP


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

  1. Prometheus や Grafana などのクラウドネイティブコンピューティング財団 (CNCF) 監視ツールをデプロイして、ADC プロキシの統計情報を収集します。

     kubectl create -f monitoring.yaml -n monitoring
     kubectl create -f ingress_vpx_monitoring.yaml -n monitoring
     <!--NeedCopy-->
    

Prometheus ログアグリゲーター

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

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

    GCP

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

  1. 左側のパネルから [ インポート ] オプションを選択し、yamlFilesフォルダーにあるgrafana_config.jsonファイルをアップロードします。これで、基本的なADCの統計情報が一覧表示されたGrafana aダッシュボードが表示されます。

GCP


デプロイを削除する

  1. Citrix VPX(tier-1-adc)デプロイメントを削除するには、Google SDK CLIコンソールに移動してインスタンスを削除します。

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

    GCP