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

サービスメッシュトポロジを展開するための前提条件については、「 サービスグラフの設定」を参照してください

NetScaler エージェントの設定

KubernetesクラスターとNetScaler Console間の通信を有効にするには、エージェントをインストールして構成する必要があります。ハイパーバイザー、パブリッククラウドサービス(Microsoft Azure、AWS など)、または NetScaler インスタンスで利用可能な組み込みエージェント(高可用性デプロイに最適)を使用してエージェントを構成できます。

手順に従ってエージェントを設定します

  • 既存のエージェントを使用することもできます。

  • デフォルトでは、エージェントはNetScaler Consoleの最新ビルドに自動的にアップグレードされます。エージェントの詳細は、[ インフラストラクチャ] > [インスタンス] > [エージェント ] ページで確認できます。また、エージェントのアップグレードを実行する時刻を指定することもできます。詳細については、「 エージェントアップグレード設定の指定」を参照してください。

エージェントのスタティックルートを設定

Kubernetes クラスター内では、コンテナー化されたすべての Pod はオーバーレイネットワークを使用します。これらのプライベート IP アドレスを直接使用して通信を確立することはできません。NetScaler ConsoleからKubernetesクラスターへの通信を有効にするには、エージェントで静的ルーティングを構成する必要があります。

Kubernetes クラスターの次の IP アドレスがあるとします。

  • Kubernetes master – 101.xx.xx.112

  • Kubernetes worker 1 – 101.xx.xx.111

  • Kubernetes worker 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 クライアントを使用して、エージェントにログオンします。

  2. shellを入力して Enter キーを押してbashに切り替えます

  3. コマンド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

  4. netstat -rnを使用して構成を検証します

    スタティックルーティング

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

    1. エージェントで、次のコマンドを使用して 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 チャートで設定可能なパラメータとそのデフォルト値を示します。

    パラメーター 説明 デフォルト オプション/必須 (ヘルム)
    CitrixCPX NetScaler CPX FALSE NetScaler CPXでは必須
    xDSAdaptor.image Citrix xDSアダプタコンテナの画像 quay.io/citrix/citrix-istio-adaptor:1.2.1 固定
    ADMSettings.ADMIP NetScaler コンソールのIPアドレス Null NetScaler CPXでは必須
    ADMSettings.ADMFingerPrint NetScaler コンソールのフィンガープリント。[ インフラストラクチャ] > [インスタンス] > [エージェント] に移動し、エージェントを選択して [ フィンガープリントを表示] をクリックします Null オプション
    ingressGateway.EULA エンドユーザー使用許諾契約 (EULA) の利用規約。はいの場合、ユーザーはEULAの利用規約に同意します。 いいえ NetScaler CPXでは必須
    ingressGateway.image 入力ゲートウェイとして実行するように指定されたNetScaler ADC CPXの画像 quay.io/Citrix/Citrix k8s-cpx-ingres: 13.0—58.30 NetScaler CPXでは必須
  4. Citrix SideCar インジェクタを展開します。

    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 コンソールのIPアドレス NIL
    cpxProxy.image サイドカープロキシとして使用されるNetScaler ADC CPXイメージ quay.io/Citrix/Citrix k8s-cpx-ingres: 13.0—58.30
    cpxproxy.imagePullPolicy NetScaler ADCのイメージプルポリシー 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コンソールに登録されていることがわかります。

サンプルアプリケーションのデプロイ

次のアプリケーションをデプロイすることを検討してください。

サンプルアプリのデプロイ

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

  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

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

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

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

NetScaler コンソールにKubernetesクラスターを追加します

Kubernetesクラスタを追加するには、次の手順に従います。

  1. 管理者の資格情報を使用してNetScalerコンソールにログオンします。

  2. インフラストラクチャ > オーケストレーション > Kubernetes > クラスタに移動します。 [クラスタ] ページが表示されます。

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

  4. [クラスタの追加 ] ページで、次のパラメータを指定します。

    1. [名前]: 任意の名前を指定します。

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

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

        API サーバーの URL

      2. 「Kubernetes マスターが実行中です」と表示される URL を入力します。

    3. 認証トークン -認証トークンを指定します。認証トークンは、KubernetesクラスターとNetScalerコンソール間の通信へのアクセスを検証するために必要です。認証トークンを生成する手順は、次のとおりです。

      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>を実行してください。

        トークンの生成

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

      CPX YAMLで追加したのと同じエージェントを選択してください。

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

      クラスタの追加

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

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

NetScaler ConsoleにKubernetesクラスターを追加したら、ライセンス対象として仮想サーバーを必ず自動選択する必要があります。Service Graph でデータを表示するには、仮想サーバのライセンスが必要です。仮想サーバを自動選択するには、次の手順で行います。

  1. 設定]>[NetScaler コンソールのライセンスと分析設定]に移動します。

  2. [ 仮想サーバーライセンスの概要] で、 [仮想サーバーの自動選択][アドレス指定できない仮想サーバーの自動選択] を有効にします。

    仮想サーバを自動選択

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

Kubernetes クラスターを追加し、自動選択仮想サーバーを有効にした後、[ Web トランザクション設定] と [ TCP トランザクション設定 ]を [ すべて] に変更します。

  1. [ 設定] > [ アナリティクス設定]に移動します。

    設定 」ページが表示されます。

  2. [ 分析機能の有効化] をクリックします。

  3. Webトランザクション設定」で、「 すべて」を選択します。

    web-transaction-settings

  4. [ TCP トランザクションの設定]で、[ すべて] を選択します。

    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

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