Citrix ADC CPX、Citrix Ingress Controller,、およびGoogleクラウドでのApplication Delivery Management
GCP K8のアーキテクチャとコンポーネントに関するCitrix 製品の概要
GCPの5つの主要なCitrix コンポーネント
-
入力ベースのインターネットクライアントトラフィック用のTier-1ADCとしてのCitrix ADC VPXです。
GCPのVPXインスタンスを使用すると、GCPコンピューティング機能を活用し、ビジネスニーズに合わせてCitrix の負荷分散機能とトラフィック管理機能を使用できます。GCPでVPXをスタンドアロンインスタンスとして展開できます。単一および複数のネットワークインターフェイスカード (NIC) 構成がサポートされています。
-
Google Kubernetes エンジン (GKE) を使用してコンテナプラットフォームを形成する Kubernetes クラスターです。
Kubernetes Engine は、コンテナ化されたアプリケーションを展開するための、マネージド型の実稼働対応環境です。これにより、アプリケーションとサービスの迅速な展開と管理が可能になります。
-
YAML ファイルライブラリを使用して、サンプルの Citrix Web アプリケーションを展開します。
Citrix は、GCPで2層アプリケーショントポロジをテストするためのサンプルマイクロサービスWebアプリケーションを提供しています。また、概念実証のために、サンプルファイルには次のコンポーネントも含まれています。
- Kubernetes YAML ファイルのホットドリンク Web サービスのサンプル
- クベルネスのYAMLファイル内のコールドドリンクWebサービスの例
- Kubernetes YAML ファイルのゲストブックウェブサービスの例
- Kubernetes YAMLファイルのGrafanaチャートサービスの例
- Kubernetes YAML ファイルのPrometheusのログサービスのサンプル
-
Tier1 Citrix ADC オートメーション用の Citrix Ingress Controllerを GKE クラスターに展開します。
Kubernetesを中心に構築されたCitrix Ingress Controllerは、入力リソース構成に基づいて1つまたは複数のCitrix ADCを自動的に構成します。Ingress Controllerは、Kubernetes API サーバーが入力リソースの更新を監視し、それに応じて入力ロードバランサーを再設定するコントローラーです。Citrix Ingress Controllerは、YAMLファイルを使用して直接展開することも、Helmチャートを使用して展開することもできます。
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 に対して個別の入力クラスを設定します。
Citrix 展開の概要
GCPでのTier 1のCitrix ADCのインストールと構成
以下のいずれかを使用して、Citrix ADCを展開できます。
-
Google Cloud Platform GUI: GUIを使用してGoogle Cloud Platform 上の階層1のCitrix ADCを構成する方法については、「Citrix ADC VPXインスタンスの展開」を参照してください 。
-
Google Deployment Manager: GDMテンプレートを使用してGoogle Cloud Platform 上の階層1のCitrix ADCを設定する方法については、「GDMテンプレートを使用してCitrix ADC VPXインスタンスを展開する」を参照してください 。
これで、3-NIC GDMテンプレートを使用してCitrix VPX(teir-1-adc)を展開する必要があります。
前提条件(必須):
-
CitrixメールIDのみを使用してGCPアカウントを作成する。http://console.cloud.google.com
-
GCPコンソールでプロジェクト名としてcnn-selab-atlを作成します:
-
デバイスに
gcloud
ユーティリティをインストールします。次のリンクをクリックして、ユーティリティを見つけます:https://cloud.google.com/sdk/install。 -
gcloud APIのgcloud認証 ログインを使用して、Googleアカウントに認証します.
-
クライアントにkubectlをインストールします:https://kubernetes.io/docs/tasks/tools/install-kubectl/
-
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)を展開する
-
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 ネットワークを作成] を選択し、次に示すように必須フィールドを入力します。次に、[作成] をクリックします。
同様に、クライアント側とサーバー側の NIC 用の VPC ネットワークを作成して、3 つのサブネットを作成します。
注:
3 つの VPC ネットワークはすべて同じリージョンに存在する必要があります。このシナリオでは us-east1 です。
-
VPCネットワークで3つのネットワークと3つのサブネットを作成したら、GDMテンプレートを使用してCitrix ADC VPXインスタンスを展開します。configuration.yml と template.py の両方が同じフォルダまたはディレクトリにあることを確認してください。Google SDK から次のコマンドを使用して、インスタンスを展開します。
gcloud deployment-manager deployments create tier1-vpx --config configuration.yml
-
展開が正常に完了したら、 コンピュートエンジン に移動して citrix-adc-tier1-vpx セクションを確認し、内部 IP を検証します。
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 コンソールの手順
-
GCP コンソールで Kubernetes エンジンを検索し、[クラスターの作成] をクリックします。
-
VPX SNIPと同じサブネットにクラスターを作成します(vpx-snet-snip)。このクラスターは、K8sクラスター内のCitrix Ingress ControllerからTier 1のADCへの構成のプッシュを自動化します。
-
[Advanced options]をクリックしてサブネットを
vpx-snet-snip
に変更し、次のフィールドを選択します。 -
クラウド SDK からこのクラスターにアクセスするには、Kubernetes クラスターに接続 ボタンをクリックし、コマンドをクラウド SDK に貼り付けます。
-
次のコマンドを実行して、GKE クラスターの展開を検証します。
kubectl get nodes
サンプル YAML ファイルライブラリを使用したサンプルアプリケーションの展開
Citrix ADCは、マイクロサービスで展開され、インターネット経由でアクセスされるエンタープライズグレードのアプリケーションを負荷分散する、2層アーキテクチャの展開ソリューションを提供します。Tier 1 には、VPX/SDX/MPX などの負荷分散機能があり、North-South トラフィックの負荷分散を行います。Tier 2は、マイクロサービスを管理し、East-Westトラフィックの負荷分散を行うためのCPX展開を備えています。
-
GKE でクラスターを実行している場合は、クラスタロールバインディングを使用して cluster-admin を設定していることを確認します。次のコマンドを使用してこれを行うことができます。
kubectl create clusterrolebinding citrix-cluster-admin --clusterrole=cluster-admin --user=<email-id of your google account>.
-
展開 YAML ファイルがある現在のディレクトリにアクセスします。ノードステータスを取得するには、次のコマンドを実行します。
kubectl get nodes
-
名前空間を作成します。
kubectl create -f namespace.yaml
名前空間コマンドを確認します。
kubectl get namespaces
-
rbac.yaml をデフォルトの名前空間に展開します。
kubectl create -f rbac.yaml
-
次のコマンドを使用して、ホットドリンク、コールドドリンク、ゲストブックのマイクロサービス用に CPX を展開します。
kubectl create -f cpx.yaml -n tier-2-adc kubectl create -f hotdrink-secret.yaml -n tier-2-adc
-
3 種類のホットドリンクマイクロサービス(ヘアピンアーキテクチャを備えた SSL タイプのマイクロサービス)を展開します。
kubectl create -f team_hotdrink.yaml -n team-hotdrink kubectl create -f hotdrink-secret.yaml -n team-hotdrink
-
コールドドリンク用マイクロサービス(SSL_TCP タイプのマイクロサービス)を展開します。
kubectl create -f team_colddrink.yaml -n team-colddrink kubectl create -f colddrink-secret.yaml -n team-colddrink
-
ゲストブック(NoSQL タイプのマイクロサービス)を展開します。
kubectl create -f team_guestbook.yaml -n team-guestbook
-
上記の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"
-
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
-
インターネット経由でマイクロサービスにアクセスするための 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)
-
これで、インターネット経由で各アプリケーションにアクセスできます。たとえば、
https://hotdrink.beverages.com
のようになります。
サンプルアプリケーションの書き換えポリシーとレスポンダーポリシーの有効化
次に、カスタムリソース定義(CRD)を使用して、VPXの書き換えポリシーとレスポンダーポリシーをプッシュします。
- CRD を展開して、書き換えポリシーとレスポンダーポリシーを既定の名前空間のtier-1-adcにプッシュします。
kubectl create -f crd_rewrite_responder.yaml
-
ブラックリストURL
hotdrink.beverages.com
でコーヒーページへのアクセスをブロックするように、レスポンダーポリシーを設定します。
kubectl create -f responderpolicy_hotdrink.yaml -n tier-2-adc
レスポンダーポリシーを展開したら、hotdrink.beverages.com
のコーヒーページにアクセスします。次に、次のメッセージが表示されます。
-
ヘッダー挿入 :ヘッダーにセッション ID を挿入するように、
colddrink.beverages.com
で書き換えポリシーを設定します。
kubectl create -f rewritepolicy_colddrink.yaml -n tier-2-adc
書き換えポリシーを展開した後、ブラウザーで開発者モードを有効にしてcolddrink.beverages.com
にアクセスします。Chromeで、F12を押し、ネットワークカテゴリのログを保存して、セッションIDを確認します。セッションIDは、ティア1-adc(VPX)の書き換えポリシーによって挿入されます。
オープンソースツールセット
-
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ログアグリゲータ
-
http://grafana.beverages.com
にログインし、次の1回限りのセットアップを完了します。- 管理者の認証情報を使用してポータルにログインします。
- [データソースを追加] をクリックし、 Prometheus データソースを選択します。
- 次の設定を行い、[保存してテスト] ボタンをクリックします。
Grafana ビジュアルダッシュボード
- 左側のパネルで、[インポート] オプションを選択し、
yamlFiles
フォルダーで提供されているgrafana_config.json
ファイルをアップロードします。これで、基本的なADC統計がリストされたGrafanaダッシュボードを見ることができます。
配置の削除
-
Citrix VPX(tier-1-adc)展開を削除するには、Google SDK CLIコンソールにアクセスしてインスタンスを削除します。
gcloud deployment-manager deployments delete tier1-vpx
-
GKE Kubernetes クラスターを削除するには、GCP コンソールで kubernetes クラスターを選択し、[削除] をクリックしてクラスターを消去します。
この記事の概要
- GCP K8のアーキテクチャとコンポーネントに関するCitrix 製品の概要
- GCPの5つの主要なCitrix コンポーネント
- GCP での 2 層入力展開
- Tier 1のVPX/MPXの自動化
- Citrix 展開の概要
- GCPでのTier 1のCitrix ADCのインストールと構成
- GCPにCitrix VPX(tier-1-adc)を展開する
- GKE を使用して Kubernetes クラスターを展開する
- サンプル YAML ファイルライブラリを使用したサンプルアプリケーションの展開
- サンプルアプリケーションの書き換えポリシーとレスポンダーポリシーの有効化
- オープンソースツールセット
- 配置の削除