サービスメッシュトポロジ設定の詳細手順
サービスメッシュトポロジを展開するための前提条件は、サービスグラフの設定で確認できます。
NetScaler Consoleでの静的ルート設定
Kubernetesクラスター内では、すべてのコンテナ化されたPodがオーバーレイネットワークを使用します。これらのプライベートIPアドレスを直接使用して通信を確立することはできません。NetScaler ConsoleからKubernetesクラスターへの通信を有効にするには、NetScaler Consoleで静的ルーティングを設定する必要があります。
Note
オンプレミスエージェントを使用している場合は、エージェントで静的ルートを設定してください。SSHクライアントを使用してNetScalerエージェントにログオンし、静的ルートを設定します。
Kubernetesクラスターに次のIPアドレスがあるものとします。
-
Kubernetesマスター – 101.xx.xx.112
-
Kubernetesワーカー 1 – 101.xx.xx.111
-
Kubernetesワーカー 2 – 101.xx.xx.110
Kubernetesマスターで、次のコマンドを実行して、静的ルーティングを行うPodネットワークを特定します。
kubectl get nodes -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.podCIDR}{'\t'}{'gateway: '}{.status.addresses[0].address}{'\n'}{end}"
コマンド実行後の出力例を次に示します。

-
SSHクライアントを使用してNetScaler Consoleにログオンします。
-
route add -net <public IP address range> <Kubernetes IP address>コマンドを使用して静的ルーティングを設定します。例:
route add -net 192.168.0.0/24 101.xx.xx.112route add -net 192.168.1.0/24 101.xx.xx.111route add -net 192.168.2.0/24 101.xx.xx.110 -
netstat -rnを使用して設定を確認します。
-
これらのルートコマンドを
/mpsconfig/svm.confファイルに追加します。-
NetScaler Consoleで、次のコマンドを使用してsvm.confファイルにアクセスします。
vim /mpsconfig/svm.conf -
svm.confファイルに静的ルートを追加します。
例:
route add -net 192.168.0.0/24 101.xx.xx.112。
-
必須パラメータの設定
Kubernetesマスターで:
-
CPXがイングレスゲートウェイ/サイドカーとして展開されているすべての名前空間で、エージェント資格情報を含むシークレットを作成します。
kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n <namespace> -
helm repo add citrix https://citrix.github.io/citrix-helm-charts/ -
NetScaler CPXをイングレスゲートウェイとして展開します。
helm install citrix-adc-istio-ingress-gateway citrix/citrix-adc-istio-ingress-gateway --version 1.2.1 --namespace <namespace> --set ingressGateway.EULA=YES,citrixCPX=true,ADMSettings.ADMFingerPrint=XX:00:X1:00:XX:0X:X0,ADMSettings.ADMIP=<xx.xx.xx.xx>, ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30次の表に、Helmチャートの構成可能なパラメータとそのデフォルト値を示します。
パラメータ 説明 デフォルト オプション/必須 (Helm) citrixCPX NetScaler CPX FALSE NetScaler CPXでは必須 xDSAdaptor.image Citrix xDSアダプターコンテナのイメージ quay.io/citrix/citrix-istio-adaptor:1.2.1 必須 ADMSettings.ADMIP NetScaler ConsoleのIPアドレス null NetScaler CPXでは必須 ADMSettings.ADMFingerPrint NetScaler Consoleのフィンガープリント。[Settings]>[Adminstration]に移動し、[System Configurations]の下にある[View Fingerprint]をクリックします。 null オプション ingressGateway.EULA エンドユーザーライセンス契約(EULA)の利用規約。はいの場合、ユーザーはEULAの利用規約に同意します。 NO NetScaler CPXでは必須 ingressGateway.image イングレスゲートウェイとして実行するように指定されたNetScaler CPXのイメージ quay.io/citrix/citrix-k8s-cpx-ingress:13.0–58.30 NetScaler CPXでは必須 -
Citrixサイドカーインジェクターを展開します。
helm install cpx-sidecar-injector citrix/citrix-cpx-istio-sidecar-injector --version 1.2.1 --namespace <namespace> set cpxProxy.EULA=YES,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<xx.xx.xx.xx>,cpxProxy.image=quay.io/citrix/citrix-k8s-cpx-ingress,cpxProxy.tag=13.0-58.30次の表に、Helmチャートの構成可能なパラメータとそのデフォルト値を示します。
パラメータ 説明 デフォルト値 ADMSettings.ADMIP NetScaler ConsoleのIPアドレス NIL cpxProxy.image サイドカープロキシとして使用されるNetScaler CPXイメージ quay.io/citrix/citrix-k8s-cpx-ingress:13.0–58.30 cpxProxy.imagePullPolicy NetScalerのイメージプルポリシー IfNotPresent cpxProxy.EULA エンドユーザーライセンス契約(EULA)の利用規約。はいの場合、ユーザーはEULAの利用規約に同意します。 NO cpxProxy.cpxSidecarMode NetScaler CPXの環境変数。NetScaler CPXがサイドカーモードで実行されているかどうかを示します。 YES -
CPXサイドカーインジェクションが必要な名前空間にラベルを設定します。
kubectl label namespace <app-namespace> cpx-injection=enabled手順3と5を実行すると、NetScaler CPXがNetScaler Consoleに登録されていることを確認できます。
サンプルアプリケーションの展開
次のアプリケーションを展開するとします。

サンプルアプリケーションを展開するには、次の手順を実行します。
-
kubectl create namespace citrix-system -
kubectl create namespace bookinfo -
kubectl label namespace bookinfo cpx-injection=enabled -
kubectl create secret generic admlogin --from-literal=username=<uername> --from-literal=password=<password> -n citrix-systemNote
任意のユーザー名とパスワードを指定できます。
-
kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n bookinfoNote
任意のユーザー名とパスワードを指定できます。
-
helm install citrix-adc-istio-ingress-gateway citrix/citrix-adc-istio-ingress-gateway --version 1.2.1 --namespace citrix-system --set ingressGateway.EULA=YES,citrixCPX=true,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<agent IP address>,ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30Note
コンソールのフィンガープリントとエージェントまたはコンソールのIPアドレスを指定する必要があります。
-
helm install cpx-sidecar-injector citrix/citrix-cpx-istio-sidecar-injector --namespace citrix-system --set cpxProxy.EULA=YES,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<ADM agent IP address>,cpxProxy.image=quay.io/citrix/citrix-k8s-cpx-ingress,cpxProxy.tag=13.0-58.30Note
コンソールのフィンガープリントとエージェントまたはコンソールのIPアドレスを指定する必要があります。
-
helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system
NetScaler ConsoleへのKubernetesクラスターの追加
Kubernetesクラスターを追加するには:
-
管理者資格情報を使用してNetScaler Consoleにログオンします。
-
[Orchestration]>[Kubernetes]>[Cluster]の順に移動します。 [Clusters]ページが表示されます。
-
[Add]をクリックします。
-
[Add Cluster]ページで、次のパラメータを指定します。
-
Name - 任意の名前を指定します。
-
API Server URL - APIサーバーURLの詳細は、Kubernetesマスターノードから取得できます。
-
Kubernetesマスターノードで、
kubectl cluster-infoコマンドを実行します。
-
「Kubernetes master is running at.」に表示されるURLを入力します。
-
-
Authentication Token - 認証トークンを指定します。認証トークンは、KubernetesクラスターとNetScaler Console間の通信のアクセスを検証するために必要です。認証トークンを生成するには:
Kubernetesマスターノードで:
-
次のYAMLを使用してサービスアカウントを作成します。
apiVersion: v1 kind: ServiceAccount metadata: name: <name> namespace: <namespace> <!--NeedCopy--> -
kubectl create -f <yaml file>を実行します。サービスアカウントが作成されます。
-
kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name>を実行して、クラスターロールをサービスアカウントにバインドします。サービスアカウントはクラスター全体のアクセス権を持つようになります。
サービスアカウントの作成時にトークンが自動的に生成されます。
-
kubectl describe sa <name>を実行してトークンを表示します。 -
シークレット文字列を取得するには、
kubectl describe secret <token-name>を実行します。
-
-
リストからエージェントを選択します。
Note
エージェントを使用している場合は、CPX YAMLに追加したのと同じエージェントを選択してください。
-
[Create]をクリックします。

-
ライセンス供与のための仮想サーバー自動選択の有効化
Note
十分な仮想サーバーライセンスがあることを確認してください。詳細については、「ライセンス供与」を参照してください。
NetScaler ConsoleにKubernetesクラスターを追加した後、ライセンス供与のために仮想サーバーを自動選択するように設定する必要があります。サービスグラフにデータを表示するには、仮想サーバーがライセンス供与されている必要があります。仮想サーバーを自動選択するには:
-
[Settings]>[Licensing & Analytics Configuration]の順に移動します。
-
[Virtual Server License Summary]で、[Auto-select Virtual Servers]と[Auto-select non addressable Virtual Servers]を有効にします。

Webトランザクション設定とTCPトランザクション設定の有効化
Kubernetesクラスターを追加し、仮想サーバーの自動選択を有効にした後、Web Transaction SettingsとTCP Transactions SettingsをAllに変更します。
-
[Settings]>[Analytics Settings]の順に移動します。
[Analytics Settings]ページが表示されます。
-
[Enable Features for Analytics]をクリックします。
-
[Web Transaction Settings]で、[All]を選択します。
-
[TCP Transactions Settings]で、[All]を選択します。

-
[OK]をクリックします。
マイクロサービスへのトラフィック送信
次に、NetScaler Consoleにサービスグラフを表示させるために、マイクロサービスにトラフィックを送信する必要があります。
-
イングレスIPとポートを決定します。
export INGRESS_HOST=$(kubectl get pods -l app=citrix-ingressgateway -n citrix-system -o 'jsonpath={.items[0].status.hostIP}')export INGRESS_PORT=$(kubectl -n citrix-system get service citrix-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')export SECURE_INGRESS_PORT=$(kubectl -n citrix-system get service citrix-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}') -
cURLを使用してBookinfoフロントエンドアプリケーションにアクセスします。
productpageサービスは200 OK応答を返す必要があります。curl -kv https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpagecurl -v http://$INGRESS_HOST:$INGRESS_PORT/productpage -
ブラウザから
https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpageにアクセスします。Bookinfoページが表示されます。
-
$INGRESS_HOSTと$SECURE_INGRESS_PORTがIPアドレスとポート値に置き換えられていることを確認します。
マイクロサービスにトラフィックを送信した後、サービスグラフは約10分で表示されます。

サービスグラフを使用すると、メトリクス、エラーなど、さまざまなサービスの詳細を分析できます。詳細については、「サービスグラフ」を参照してください。