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

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

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 チャートで構成可能なパラメータとそのデフォルト値を示します。
    パラメータ 説明 デフォルト オプション/必須 (ヘルム)
    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. 追加 をクリックします。
  4. クラスターの追加 ページで、次のパラメーターを指定します。
    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クラスターを追加し、仮想サーバーの自動選択を有効にした後、Web Transaction Settings と TCP Transactions Settings を All に変更します。
  1. Settings > Analytics Settings に移動します。
    Analytics Settings ページが表示されます。
  2. Enable Features for Analytics をクリックします。
  3. Web Transaction Settings で、All を選択します。
  4. TCP Transactions Settings で、All を選択します。
    TCP
  5. OK をクリックします。

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

次に、NetScaler ADM にサービスグラフを表示させるには、マイクロサービスにトラフィックを送信する必要があります。
  1. Ingress 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 分でサービスグラフが生成されます。
サンプル
サービスグラフを使用すると、メトリクス、エラーなど、さまざまなサービスの詳細を分析できます。詳細については、「サービスグラフ」を参照してください。