サービスメッシュトポロジ設定の詳細手順
サービスメッシュトポロジを展開するための前提条件は、サービスグラフの設定で確認できます。
NetScaler® ADMでの静的ルート設定
Kubernetesクラスター内では、すべてのコンテナ化されたPodがオーバーレイネットワークを使用します。これらのプライベートIPアドレスを直接使用して通信を確立することはできません。NetScaler ADMからKubernetesクラスターへの通信を可能にするには、NetScaler ADMで静的ルーティングを設定する必要があります。
注
オンプレミスエージェントを使用している場合は、エージェントで静的ルートを設定してください。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 ADMにログオンします。
-
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 ADMで、以下のコマンドを使用して svm.conf ファイルにアクセスします。
vim /mpsconfig/svm.conf -
svm.conf ファイルに静的ルートを追加します。
例:
route add -net 192.168.0.0/24 101.xx.xx.112
-
必要なパラメータの設定
Kubernetesマスターで:
-
CPXがイングレスゲートウェイ/サイドカーとして展開されているすべての名前空間で、ADMエージェントの資格情報を含むシークレットを作成します。
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 ADMのIPアドレス null NetScaler CPXに必須 ADMSettings.ADMFingerPrint NetScaler ADMのフィンガープリント。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 SideCar Injectorを展開します。
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 ADMの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 ADMに登録されていることを確認できます。
サンプルアプリケーションの展開
以下のアプリケーションを展開すると仮定します。

サンプルアプリケーションを展開するには、以下の手順を実行します。
-
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-system注
任意のユーザー名とパスワードを指定できます。
-
kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n bookinfo注
任意のユーザー名とパスワードを指定できます。
-
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=<ADM agent IP address>,ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30注
ADMフィンガープリントとADMエージェントまたはADMの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.30注
ADMフィンガープリントとADMエージェントまたはADMのIPアドレスを指定する必要があります。
-
helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system
NetScaler ADMでのKubernetesクラスターの追加
Kubernetesクラスターを追加するには:
-
管理者資格情報を使用してNetScaler ADMにログオンします。
-
Orchestration > Kubernetes > Cluster に移動します。 [クラスター] ページが表示されます。
-
Add をクリックします。
-
Add Cluster ページで、以下のパラメータを指定します。
-
Name - 任意の名前を指定します。
-
API Server URL - KubernetesマスターノードからAPIサーバーのURL詳細を取得できます。
-
Kubernetesマスターノードで、
kubectl cluster-infoコマンドを実行します。
-
“Kubernetes master is running at.” に表示されるURLを入力します。
-
-
Authentication Token - 認証トークンを指定します。認証トークンは、KubernetesクラスターとNetScaler ADM間の通信アクセスを検証するために必要です。認証トークンを生成するには:
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>を実行します。
-
-
リストからエージェントを選択します。
注
ADMエージェントを使用している場合は、CPX YAMLに追加したのと同じエージェントを選択してください。
-
Create をクリックします。

-
ライセンス付与のための仮想サーバー自動選択の有効化
注
十分な仮想サーバーライセンスがあることを確認してください。詳細については、ライセンスを参照してください。
NetScaler ADMに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 ADMにサービスグラフを生成するために、マイクロサービスにトラフィックを送信する必要があります。
-
イングレス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分でサービスグラフがNetScaler ADMに生成されます。

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