サービスメッシュトポロジを設定するための詳細な手順
サービスメッシュトポロジを展開するための前提条件については、「 サービスグラフの設定」を参照してください。
Citrix ADM で静的ルートを構成する
Kubernetes クラスター内では、コンテナー化されたすべての Pod はオーバーレイネットワークを使用します。これらのプライベート IP アドレスを直接使用して通信を確立することはできません。Citrix ADM からKubernetesクラスタへの通信を有効にするには、Citrix ADMで静的ルーティングを構成する必要があります。
注
オンプレミスエージェントを使用している場合は、エージェントにスタティックルートを設定してください。SSHクライアントを使用して、Citrix ADM エージェントにログオンし、静的ルートを構成します。
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}"
次に、コマンドを実行した後の出力例を示します。
-
SSHクライアントを使用してCitrix ADM にログオンする
-
コマンド
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
-
設定を確認するには、
netstat -rn
を使用します -
これらのルートコマンドを
/mpsconfig/svm.conf
ファイルに追加します。-
Citrix 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/
-
Citrix ADC 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 Citrix ADC CPX FALSE Citrix ADC CPXでは必須 xdsAdaptor.Image Citrix XDSアダプタコンテナの画像 quay.io/シトリックス/シトリックス istio アダプター:1.2.1 固定 ADMSettings.ADMIP Citrix ADM IPアドレス null Citrix ADC CPXでは必須 admSettings.admフィンガープリント Citrix ADMフィンガープリント。[ 設定] > [管理] に移動し、[ システム構成 ] の [ フィンガープリントの表示] をクリックします。 null オプション ingressGateway.EULA エンドユーザー使用許諾契約 (EULA) の利用規約。はいの場合、ユーザーはEULAの利用規約に同意します。 いいえ Citrix ADC CPXでは必須 ingressGateway.image 入力ゲートウェイとして実行するように指定されたCitrix ADC CPXの画像 quay.io/シトリックス/シトリックス k8s-cpx-ingres: 13.0—58.30 Citrix ADC CPXでは必須 -
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 Citrix ADM IPアドレス NIL cpxproxy.image サイドカープロキシとして使用されるCitrix ADC CPXイメージ quay.io/シトリックス/シトリックス k8s-cpx-ingres: 13.0—58.30 cpxproxy.imagePullPolicy Citrix ADCのイメージプルポリシー ifNotPresent cpxProxy.EULA エンドユーザー使用許諾契約 (EULA) の利用規約。はいの場合、ユーザーはEULAの利用規約に同意します。 いいえ cpxproxy.cpxSideCarMode Citrix ADC CPXの環境変数。これは、Citrix ADC CPXがサイドカーモードとして実行されているかどうかを示します。 はい -
CPXサイドカーインジェクションが必要な名前空間にラベルを設定します。
kubectl label namespace <app-namespace> cpx-injection=enabled
手順3と5を実行すると、Citrix ADC CPXがCitrix 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
Citrix ADM で Kubernetes クラスターを追加する
Kubernetesクラスタを追加するには、次の手順に従います。
-
管理者の資格情報を使用してCitrix ADM にログオンします。
-
[ オーケストレーション ] > [ Kubernetes ] > [ クラスタ] に移動します。 「クラスタ」ページが表示されます。
-
[追加] をクリックします。
-
[ クラスタの追加 ] ページで、次のパラメータを指定します。
-
[名前 ]: 任意の名前を指定します。
-
API サーバー URL -Kubernetes マスターノードから API サーバー URL の詳細を取得できます。
-
Kubernetes マスターノードで、コマンド
kubectl cluster-info
を実行します。 -
「Kubernetes マスターが実行中です」と表示される URL を入力します。
-
-
認証トークン -認証トークンを指定します。認証トークンは、KubernetesクラスタとCitrix 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] をクリックします。
-
ライセンス用の仮想サーバの自動選択を有効にする
注
十分な仮想サーバライセンスがあることを確認してください。詳細については、「 ライセンス」を参照してください。
Citrix ADM でKubernetesクラスタを追加した後、ライセンス取得のために仮想サーバーを自動的に選択する必要があります。Service Graph にデータを表示するには、仮想サーバのライセンスが必要です。仮想サーバを自動選択するには、次の手順で行います。
-
[ 設定] > [ライセンスと分析の設定]に移動します。
-
[ 仮想サーバーライセンスの概要] で、 [仮想サーバーの自動選択] と [アドレス指定できない仮想サーバーの自動選択] を有効にします。
Web トランザクションと TCP トランザクションの設定を有効にする
Kubernetes クラスターを追加し、自動選択仮想サーバーを有効にした後、[ Web トランザクション設定] と [ TCP トランザクション設定 ]を [ すべて] に変更します。
-
設定 > アナリティクスの設定に移動します。
[アナリティクス設定] ページが表示されます。
-
[ 分析機能の有効化] をクリックします。
-
「 Webトランザクションの設定」で、「 すべて」を選択します。
-
[ TCP トランザクションの設定]で、[ すべて] を選択します。
-
[OK] をクリックします。
マイクロサービスへのトラフィックの送信
次に、トラフィックをマイクロサービスに送信して、Citrix 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/productpage
curl -v http://$INGRESS_HOST:$INGRESS_PORT/productpage
-
ブラウザから
https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage
にアクセスしてください。Bookinfoページが表示されます 。
-
$INGRESS_HOST と $SECURE_INGRESS_PORT が IP アドレスとポート値で置き換えられることを確認します。
トラフィックをマイクロサービスに送信すると、サービスグラフは約 10 分単位で入力されます。
サービスグラフを使用して、メトリック、エラーなどのさまざまなサービスの詳細を分析できます。詳細については、「 サービスグラフ」を参照してください。