サービスメッシュトポロジを設定するための詳細な手順

最終公開日 : Oct 02, 2026
サービスメッシュトポロジを展開するための前提条件は、サービスグラフの設定で確認できます。

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}"
コマンドを実行した後の出力例を次に示します。
コマンド例
  1. SSHクライアントを使用してNetScaler ADMにログオンします。
  2. コマンド route add -net <public IP address range> <Kubernetes IP address> を使用して静的ルーティングを構成します。
    例:
    route add -net 192.168.0.0/24 101.xx.xx.112
    route add -net 192.168.1.0/24 101.xx.xx.111
    route add -net 192.168.2.0/24 101.xx.xx.110
  3. netstat -rn を使用して構成を確認します。
    静的ルーティング
  4. これらのルートコマンドを /mpsconfig/svm.conf ファイルに追加します。
    1. NetScaler ADM で、次のコマンドを使用して svm.conf ファイルにアクセスします。
      vim /mpsconfig/svm.conf
    2. svm.conf ファイルに静的ルートを追加します。
      例: route add -net 192.168.0.0/24 101.xx.xx.112。

必要なパラメータを構成します

Kubernetes マスターで:
  1. イングレスゲートウェイ/サイドカーとしてCPXが展開されているすべての名前空間に、ADMエージェント資格情報を持つシークレットを作成します。
    kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n <namespace>
  2. helm repo add citrix https://citrix.github.io/citrix-helm-charts/
  3. 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アドレス ヌル NetScaler CPXには必須
    ADMSettings.ADMFingerPrint NetScaler ADMのフィンガープリント。Settings > Adminstrationに移動し、System Configurationsの下にあるView Fingerprintをクリックします。 なし オプション
    ingressGateway.EULA エンドユーザーライセンス契約 (EULA) の条項。はいの場合、ユーザーはEULAの条項に同意します。 いいえ NetScaler CPXには必須
    ingressGateway.image Ingress Gatewayとして実行するように指定されたNetScaler CPXのイメージ quay.io/citrix/citrix-k8s-cpx-ingress:13.0–58.30 NetScaler CPXに必須
  4. 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 の条項に同意します。 いいえ
    cpxProxy.cpxSidecarMode NetScaler CPX の環境変数。NetScaler CPX がサイドカーモードで実行されているかどうかを示します。 はい
  5. CPX サイドカーインジェクションが必要なすべての名前空間にラベルを設定します。
    kubectl label namespace <app-namespace> cpx-injection=enabled
    ステップ 3 と 5 を実行すると、NetScaler CPX が NetScaler ADM に登録されていることを確認できます。

サンプルアプリケーションを展開する

以下のアプリケーションを展開するとします。
サンプルアプリを展開
サンプルアプリケーションをデプロイするには、次の手順を実行します。
  1. kubectl create namespace citrix-system
  2. kubectl create namespace bookinfo
  3. kubectl label namespace bookinfo cpx-injection=enabled
  4. kubectl create secret generic admlogin --from-literal=username=<uername> --from-literal=password=<password> -n citrix-system
    注
    任意のユーザー名とパスワードを指定できます。
  5. kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n bookinfo
    注
    任意のユーザー名とパスワードを指定できます。
  6. 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アドレスを指定する必要があります。
  7. 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アドレスを指定する必要があります
  8. helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system

NetScaler ADMでKubernetesクラスターを追加する

Kubernetesクラスターを追加するには:
  1. 管理者資格情報を使用してNetScaler ADMにログオンします。
  2. Orchestration > Kubernetes > Cluster に移動します。 クラスターページが表示されます。
  3. Add をクリックします。
  4. Add Cluster ページで、次のパラメーターを指定します。
    1. 名前 - 任意の名前を指定します。
    2. APIサーバーURL - APIサーバーURLの詳細は、Kubernetesマスターノードから取得できます。
      1. Kubernetesマスターノードで、コマンド kubectl cluster-info を実行します。
        APIサーバーURL
      2. 「Kubernetes master is running at.」 に表示されるURLを入力します。
    3. 認証トークン - 認証トークンを指定します。認証トークンは、KubernetesクラスターとNetScaler ADM間の通信アクセスを検証するために必要です。認証トークンを生成するには:
      Kubernetesマスターノードで:
      1. サービスアカウントを作成するには、次のYAMLを使用します。
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: <name>
          namespace: <namespace>
      2. kubectl create -f <yaml file> を実行します。
        サービスアカウントが作成されます。
      3. クラスターロールをサービスアカウントにバインドするには、kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name> を実行します。
        サービスアカウントにクラスター全体のアクセス権が付与されます。
        サービスアカウントの作成中にトークンが自動的に生成されます。
      4. トークンを表示するには、kubectl describe sa <name> を実行します。
      5. シークレット文字列を取得するには、kubectl describe secret <token-name> を実行します。
        トークンを生成
    4. リストからエージェントを選択します。
      注
      ADMエージェントを使用している場合は、CPX YAMLに追加したエージェントと同じエージェントを選択してください。
    5. 作成をクリックします。
      クラスターを追加

ライセンス供与のために仮想サーバーの自動選択を有効にする

注
十分な仮想サーバーライセンスがあることを確認してください。詳細については、「ライセンス」を参照してください。
NetScaler ADM に Kubernetes クラスターを追加したら、ライセンスのために仮想サーバーを自動選択するようにしてください。サービスグラフにデータを表示するには、仮想サーバーがライセンスされている必要があります。仮想サーバーを自動選択するには、次の手順を実行します。
  1. > に移動します。
  2. で、 と を有効にします。
    仮想サーバーの自動選択

WebトランザクションとTCPトランザクションの設定を有効にする

Kubernetes クラスターを追加し、仮想サーバーの自動選択を有効にしたら、 と を に変更します。
  1. > に移動します。
    ページが表示されます。
  2. をクリックします。
  3. で、 を選択します。
  4. で、 を選択します。
    TCP
  5. をクリックします。

マイクロサービスにトラフィックを送信する

次に、NetScaler ADMにサービスグラフを表示させるために、マイクロサービスにトラフィックを送信する必要があります。
  1. イングレス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}')
  2. cURLを使用してBookinfoフロントエンドアプリケーションにアクセスします。productpageサービスは200 OK応答を返す必要があります。
    curl -kv https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage
    curl -v http://$INGRESS_HOST:$INGRESS_PORT/productpage
  3. ブラウザからhttps://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpageにアクセスします。
    Bookinfoページが表示されます。
  4. $INGRESS_HOSTと$SECURE_INGRESS_PORTがIPアドレスとポート値に置き換えられていることを確認してください。
マイクロサービスにトラフィックを送信すると、サービスグラフは約10分で表示されます。
サンプル
サービスグラフを使用すると、メトリック、エラーなどのさまざまなサービス詳細を分析できます。詳細については、サービスグラフを参照してください。