Citrix ADC CPX、Citrix Ingress Controller,、およびGoogleクラウドでのApplication Delivery Management
GCP K8のアーキテクチャとコンポーネントに関するCitrix 製品の概要
GCPの5つの主要なCitrix コンポーネント
-
Citrix ADC VPXは、入力ベースのインターネットクライアントトラフィック用のティア1 ADCです。
GCPのVPXインスタンスを使用すると、GCPコンピューティング機能を活用し、ビジネスニーズに合わせてCitrix の負荷分散機能とトラフィック管理機能を使用できます。VPXはスタンドアロンインスタンスとしてGCPにデプロイできます。単一および複数のネットワークインターフェイスカード (NIC) 構成の両方がサポートされています。
-
Google Kubernetes Engine (GKE) を使用してコンテナプラットフォームを形成する Kubernetes クラスタ。
Kubernetes Engine は、コンテナ化されたアプリケーションをデプロイするための、マネージド型の本番環境です。これにより、アプリケーションとサービスの迅速な導入と管理が可能になります。
-
YAML ファイルライブラリを使用して、サンプル Citrix Web アプリケーションをデプロイします。
Citrix、GCP上の2層アプリケーショントポロジーをテストするためのサンプルマイクロサービスWebアプリケーションを提供しています。また、概念実証のためにサンプルファイルには次のコンポーネントも含まれています。
- Kubernetes YAML ファイル内のホットドリンクウェブサービスのサンプル
- Kubernetes の YAML ファイル内の Colddrink Web サービスのサンプル
- Kubernetes YAML ファイル内のゲストブックウェブサービスのサンプル
- Kubernetes YAML ファイル内の Grafana チャートサービスのサンプル
- Kubernetes の YAML ファイル内の Prometheus ロギングサービスのサンプル
-
Tier 1 Citrix ADC オートメーション用の Citrix Ingress コントローラーを GKE クラスタにデプロイします。
Kubernetesを中心に構築されたCitrix ingress controller、入力リソース構成に基づいて1つ以上のCitrix ADCを自動的に構成します。イングレス・コントローラーは、Kubernetes APIサーバーでイングレス・リソースの更新を監視し、それに応じてイングレス・ロード・バランサーを再構成するコントローラーです。Citrix ingress controller、YAMLファイルを使用して直接展開することも、Helm Chartsを使用して展開することもできます。
シトリックスは、ティア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用に個別の入力クラスを構成し、構成が他の入力リソースと重複しないようにします。
Citrix 導入の概要
GCPにティア1のCitrix ADCをインストールして構成する
以下のいずれかを使用して、Citrix ADCを展開できます。
-
Google Cloud Platform GUI: GUIを使用してGoogle Cloud Platform で階層1のCitrix ADCを構成する方法については、「Citrix ADC VPXインスタンスの展開」を参照してください。
-
Googleデプロイメントマネージャー: 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 <!--NeedCopy-->
画像が作成されるまでに少し時間がかかる場合があります。イメージが作成されると、GCP コンソールの [ コンピュート] > [Compute Engine ] に表示されます。
Citrix VPX(Tier-1-ADC)をGCPにデプロイする
-
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 ネットワークの作成 ] を選択し、以下に示すように必須フィールドを入力します。次に [ 作成] をクリックします。
同様に、クライアント側とサーバー側の 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 <!--NeedCopy-->
-
デプロイが成功したら、 Compute Engine に移動して citrix-adc-tier1-vpx セクションを確認し、内部 IP を検証します。
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 コンソールの手順
-
GCP コンソールで Kubernetes Engine を検索し、[ クラスタの作成] をクリックします。
-
VPX SNIP (vpx-snet-snip) と同じサブネットにクラスターを作成します。このクラスターは、K8sクラスター内のCitrix IngressコントローラーからTier 1 ADCへの構成のプッシュを自動化します。
-
[ 詳細オプション ] をクリックしてサブネットを
vpx-snet-snip
に変更し、次のフィールドを選択します。 -
クラウド SDK からこのクラスターにアクセスするには、Kubernetes Connect to the cluster ボタンをクリックし、コマンドをクラウド SDK に貼り付けます。
-
次のコマンドを実行して GKE クラスタのデプロイを検証します。
kubectl get nodes
<!--NeedCopy-->
サンプル YAML ファイルライブラリを使用してサンプルアプリケーションをデプロイします
Citrix ADC、マイクロサービスに展開され、インターネット経由でアクセスされるエンタープライズグレードのアプリケーションの負荷を分散するための2層アーキテクチャ展開ソリューションを提供します。ティア1には、North-Southトラフィックの負荷を分散するためのVPX/SDX/MPXなどの重いロードバランサーがあります。Tier 2には、マイクロサービスを管理し、East-Westトラフィックの負荷分散を行うためのCPXデプロイメントがあります。
-
GKE でクラスタを実行している場合は、クラスタロールバインディングを使用して cluster-admin を設定していることを確認してください。これは、以下のコマンドを使用して実行できます。
kubectl create clusterrolebinding citrix-cluster-admin --clusterrole=cluster-admin --user=<email-id of your google account>. <!--NeedCopy-->
-
デプロイメント YAML ファイルがある現在のディレクトリにアクセスします。次のコマンドを実行してノードのステータスを取得します。
kubectl get nodes <!--NeedCopy-->
-
名前空間の作成:
kubectl create -f namespace.yaml <!--NeedCopy-->
名前空間のコマンドを確認します。
kubectl get namespaces <!--NeedCopy-->
-
rbac.yaml をデフォルトの名前空間にデプロイします。
kubectl create -f rbac.yaml <!--NeedCopy-->
-
次のコマンドを使用して、ホットドリンク、コールドドリンク、ゲストブックのマイクロサービス用の CPX をデプロイします。
kubectl create -f cpx.yaml -n tier-2-adc kubectl create -f hotdrink-secret.yaml -n tier-2-adc <!--NeedCopy-->
-
3 つのホットドリンク飲料マイクロサービス (ヘアピンアーキテクチャの SSL タイプのマイクロサービス) をデプロイします。
kubectl create -f team_hotdrink.yaml -n team-hotdrink kubectl create -f hotdrink-secret.yaml -n team-hotdrink <!--NeedCopy-->
-
コールドドリンク飲料マイクロサービス (SSL_TCP タイプのマイクロサービス) をデプロイします。
kubectl create -f team_colddrink.yaml -n team-colddrink kubectl create -f colddrink-secret.yaml -n team-colddrink <!--NeedCopy-->
-
ゲストブック(NoSQL タイプのマイクロサービス)をデプロイします。
kubectl create -f team_guestbook.yaml -n team-guestbook <!--NeedCopy-->
-
上記の 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"
-
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-->
-
インターネット経由でマイクロサービスにアクセスするための 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-->
-
これで、インターネット経由で各アプリケーションにアクセスできます。例:
https://hotdrink.beverages.com
。
サンプルアプリケーションの書き換えポリシーとレスポンダーポリシーを有効にする
今度は、VPXの書き換えポリシーとレスポンダーポリシーをカスタムリソース定義(CRD)を介してプッシュする時です。
- CRD をデプロイして、リライトポリシーとレスポンダーポリシーをデフォルト名前空間の tier-1-adc にプッシュします。
kubectl create -f crd_rewrite_responder.yaml
<!--NeedCopy-->
-
ブラックリスト URLコーヒーページへのアクセスをブロックするように
hotdrink.beverages.com
でレスポンダーポリシーを設定します。
kubectl create -f responderpolicy_hotdrink.yaml -n tier-2-adc
<!--NeedCopy-->
レスポンダーポリシーを展開したら、 hotdrink.beverages.com
のコーヒーページにアクセスします。次に、次のメッセージが表示されます。
-
ヘッダー挿入ヘッダーにセッション 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)の書き換えポリシーによって挿入されます。
オープンソースのツールセット
-
Prometheus や Grafana などのクラウドネイティブコンピューティング財団 (CNCF) 監視ツールをデプロイして、ADC プロキシの統計情報を収集します。
kubectl create -f monitoring.yaml -n monitoring kubectl create -f ingress_vpx_monitoring.yaml -n monitoring <!--NeedCopy-->
Prometheus ログアグリゲーター
-
http://grafana.beverages.com
にログインして、次の 1 回限りのセットアップを完了します。- 管理者の認証情報を使用してポータルにログインします。
- [ データソースを追加 ] をクリックし、 Prometheus データソースを選択します。
- 次の設定を行い、[ 保存してテスト ] ボタンをクリックします。
Grafana ビジュアルダッシュボード
- 左側のパネルから [ インポート ] オプションを選択し、
yamlFiles
フォルダーにあるgrafana_config.json
ファイルをアップロードします。これで、基本的なADCの統計情報が一覧表示されたGrafana aダッシュボードが表示されます。
デプロイを削除する
-
Citrix VPX(tier-1-adc)デプロイメントを削除するには、Google SDK CLIコンソールに移動してインスタンスを削除します。
gcloud deployment-manager deployments delete tier1-vpx <!--NeedCopy-->
-
GKE Kubernetes クラスタを削除するには、GCP コンソールに移動し、kubernetes クラスタを選択し、[ 削除 ] をクリックしてクラスタを削除します。
この記事の概要
- GCP K8のアーキテクチャとコンポーネントに関するCitrix 製品の概要
- GCPの5つの主要なCitrix コンポーネント
- GCP での 2 層入力デプロイメント
- ティア1のVPX/MPXの自動化
- Citrix 導入の概要
- GCPにティア1のCitrix ADCをインストールして構成する
- Citrix VPX(Tier-1-ADC)をGCPにデプロイする
- GKE を使用して Kubernetes クラスタをデプロイする
- サンプル YAML ファイルライブラリを使用してサンプルアプリケーションをデプロイします
- サンプルアプリケーションの書き換えポリシーとレスポンダーポリシーを有効にする
- オープンソースのツールセット
- デプロイを削除する