サービスメッシュトポロジ設定の詳細手順

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

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}"

コマンド実行後の出力例を次に示します。

Example command

  1. SSHクライアントを使用してNetScaler Consoleにログオンします。

  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を使用して設定を確認します。

    static routing

  4. これらのルートコマンドを/mpsconfig/svm.confファイルに追加します。

    1. NetScaler Consoleで、次のコマンドを使用してsvm.confファイルにアクセスします。

      vim /mpsconfig/svm.conf

    2. svm.confファイルに静的ルートを追加します。

      例:route add -net 192.168.0.0/24 101.xx.xx.112

必須パラメータの設定

Kubernetesマスターで:

  1. CPXがイングレスゲートウェイ/サイドカーとして展開されているすべての名前空間で、エージェント資格情報を含むシークレットを作成します。

    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 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では必須
  4. 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
  5. CPXサイドカーインジェクションが必要な名前空間にラベルを設定します。

    kubectl label namespace <app-namespace> cpx-injection=enabled

    手順3と5を実行すると、NetScaler CPXがNetScaler Consoleに登録されていることを確認できます。

サンプルアプリケーションの展開

次のアプリケーションを展開するとします。

Deploy sample apps

サンプルアプリケーションを展開するには、次の手順を実行します。

  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

    Note

    任意のユーザー名とパスワードを指定できます。

  5. kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n bookinfo

    Note

    任意のユーザー名とパスワードを指定できます。

  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=<agent IP address>,ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30

    Note

    コンソールのフィンガープリントとエージェントまたはコンソールの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

    Note

    コンソールのフィンガープリントとエージェントまたはコンソールのIPアドレスを指定する必要があります。

  8. helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system

NetScaler ConsoleへのKubernetesクラスターの追加

Kubernetesクラスターを追加するには:

  1. 管理者資格情報を使用してNetScaler Consoleにログオンします。

  2. [Orchestration]>[Kubernetes]>[Cluster]の順に移動します。 [Clusters]ページが表示されます。

  3. [Add]をクリックします。

  4. [Add Cluster]ページで、次のパラメータを指定します。

    1. Name - 任意の名前を指定します。

    2. API Server URL - APIサーバーURLの詳細は、Kubernetesマスターノードから取得できます。

      1. Kubernetesマスターノードで、kubectl cluster-infoコマンドを実行します。

        API Server URL

      2. 「Kubernetes master is running at.」に表示されるURLを入力します。

    3. Authentication Token - 認証トークンを指定します。認証トークンは、KubernetesクラスターとNetScaler Console間の通信のアクセスを検証するために必要です。認証トークンを生成するには:

      Kubernetesマスターノードで:

      1. 次のYAMLを使用してサービスアカウントを作成します。

        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: <name>
          namespace: <namespace>
        <!--NeedCopy-->
        
      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>を実行します。

        Generate token

    4. リストからエージェントを選択します。

      Note

      エージェントを使用している場合は、CPX YAMLに追加したのと同じエージェントを選択してください。

    5. [Create]をクリックします。

      add cluster

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

Note

十分な仮想サーバーライセンスがあることを確認してください。詳細については、「ライセンス供与」を参照してください。

NetScaler ConsoleにKubernetesクラスターを追加した後、ライセンス供与のために仮想サーバーを自動選択するように設定する必要があります。サービスグラフにデータを表示するには、仮想サーバーがライセンス供与されている必要があります。仮想サーバーを自動選択するには:

  1. [Settings]>[Licensing & Analytics Configuration]の順に移動します。

  2. [Virtual Server License Summary]で、[Auto-select Virtual Servers][Auto-select non addressable Virtual Servers]を有効にします。

    Auto-select virtual server

Webトランザクション設定とTCPトランザクション設定の有効化

Kubernetesクラスターを追加し、仮想サーバーの自動選択を有効にした後、Web Transaction SettingsTCP Transactions SettingsAllに変更します。

  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 Consoleにサービスグラフを表示させるために、マイクロサービスにトラフィックを送信する必要があります。

  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分で表示されます。

Sample

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