はじめに
本ドキュメントでは以下に記載されたTurbonomicのSecureClientの設定手順例をご紹介するものです。
実際に作業される際は、その時点の最新版のマニュアルを参照頂き、こちらのページは参考資料として参照下さい。
https://www.ibm.com/docs/ja/tarm/latest?topic=saas-managing-prem-targets-using-secure-client
そもそもSecureClientとは?
OSSの技術であるSkupperを用いて、異なるネットワーク環境に存在するk8sクラスタを仮想ネットワークで接続し、一つのk8sクラスタとして接続する構成となります。
https://github.com/skupperproject
その中で、Secure Client本体は、以下図の右側のお客様環境内にOVAから展開された仮想マシンとなり、その仮想マシンの中に構築されたk8s(実体はSkupper podやTurbonomicの情報収集podから構成)を、左側のSaaS版Turbonomicのk8sの名前空間の一部として仮想的に接続する形となります。
SecureClinetのOVAイメージdownload
こちらより最新のOVAファイルをダウンロード下さい
https://community.ibm.com/community/user/viewdocument/turbonomic-latest-releases-downlo
SecureClientの実体はOVA版Turbonomicと同等のイメージとなります。
特にSecureClient専用のイメージがあるわけではないのでご認識下さい。
OVAイメージの展開 -> IPアドレスの設定まで
仮想マシンの電源を投入し、マニュアルの以下箇所を参照の上、OVAの導入からIPアドレスの設定まで進めます。
https://www.ibm.com/docs/ja/tarm/8.16.x?topic=client-secure-deployment-ova#Configure_Client_Instance__OVA_install__title__1
尚、OVAを展開した後、電源を投入する前に、監視対象の規模に応じて、仮想マシンとしてのHW構成を調整します。一般的な用途(管理対象5000台以下程度)であれば、8 vCPU/32GBメモリの構成とします。
https://www.ibm.com/docs/ja/tarm/8.16.x?topic=client-secure-deployment-ova#Configure_Client_Instance__OVA_prereqs__title__1
セキュアクライアントからTurbonomicサーバへのネットワーク疎通確認
IPアドレスの設定後、SecureClientを介してアクセスされるSaaS版Turbonomicへのネットワーク疎通の可否を確認します。
まずTurbonomic側の設定 -> セキュアクライアント管理のページから、Turbonomic側のエンドポイントのURLを確認します。
上記ページで確認出来た3つのURLへの疎通をSecureClient側のLinuxコンソールから確認します。
[turbo@turbo3013 ~]$ /opt/local/bin/check_connection.sh --ip claims-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com --port 443
Checking connectivity to claims-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443...
The request to claims-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443 was successful
[turbo@turbo3013 ~]$
[turbo@turbo3013 ~]$ /opt/local/bin/check_connection.sh --ip skupper-edge-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com --port 443
Checking connectivity to skupper-edge-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443...
The request to skupper-edge-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443 was successful
[turbo@turbo3013 ~]$
[turbo@turbo3013 ~]$ /opt/local/bin/check_connection.sh --ip skupper-inter-router-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com --port 443
Checking connectivity to skupper-inter-router-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443...
The request to skupper-inter-router-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443 was successful
[turbo@turbo3013 ~]$
併せて、同等に "icr.io" への疎通についても確認しておきます。
こちらはSecureClient自身のアップグレード等に際して必要となるIBMのコンテナレジストリのURLとなります。(icr = IBM Container Registry)
[turbo@turbo3013 ~]$ /opt/local/bin/check_connection.sh --ip icr.io --port 443
Checking connectivity to icr.io:443...
The request to icr.io:443 was successful
[turbo@turbo3013 ~]$
なお、もしFirewall等で接続可能なURLを制限している場合は、こちらのマニュアルに記載の通り、上記で記載したURL以外に、*.icr.ioについても疎通を許可下さい。実際のイメージのダウンロードではdd2.icr.ioといったURLへ接続されますが、dds.の部分については、変更される可能性がありますため、*.として許可頂く様お願いします。
セットアップスクリプトの実行
SecureClientの構成自動セットアップスクリプト(/opt/local/bin/t8cClientInstall.sh)を実行します。
これによって、Linux内部でKubernetesが構成され、セキュアクライアントの稼働に必要な各種podが自動的に展開されます。
似たような名前のスクリプトとして"t8cInstall.sh"がありますが、そちらはTurbonomicサーバ自体を構成する場合に実行するものとなります。今回はセキュアクライアントのセットアップになりますので、実行するスクリプトの名前にはご注意下さい。
ネットワークのセットアップは完了していますので、 y を押します。
[turbo@turbo3013 ~]$ /opt/local/bin/t8cClientInstall.sh
###############################################################
Initializing Kubernetes
###############################################################
Have you run the ipsetup script to setup networking yet? [y/n] y
セキュア・クライアント・オペレーターの自動更新を有効にします。これによって、SaaS版Turbonomic本体がアップグレードされた際、自動的にセキュアクライアントもアップグレードが実行されます。(オンラインアップグレードの為のicr.ioへの疎通が必要となります)
###############################################################
Installing Turbonomic Secure Client
###############################################################
Do you wish to automatically update the Turbonomic Secure Client application - this requires internet access to icr.io? [y/n] y
インストールに成功すると、以下のメッセージが表示されます。
Installation complete!
You can now perform the token exchange to connect to your SaaS instance
インストールを検証します。(kubectl get pod)
出力は、次の例と同様なものになります。全てのPodがRunningでありREADY状態である事をご確認下さい。
[turbo@turbo3013 ~]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
kube-state-metrics-86dbd4db86-95xg7 1/1 Running 0 8m22s
mediation-netapp-b867d8b88-6vdm7 1/1 Running 0 8m21s
mediation-pure-547b6df5dd-clqxd 1/1 Running 0 8m21s
mediation-ucs-b6449898b-2rknf 1/1 Running 0 8m21s
mediation-vcenter-7d579d8686-6rmkj 1/1 Running 0 8m21s
mediation-vcenterbrowsing-6cfcf768-fpkdg 1/1 Running 0 8m21s
rsyslog-courier-mst48 1/1 Running 0 8m21s
skupper-router-6c9dcfb746-6mpn6 2/2 Running 0 5m
skupper-service-controller-79878788b5-mf2dz 1/1 Running 1 (2m4s ago) 5m
skupper-site-controller-54f68cb6b4-p7n7g 1/1 Running 0 8m22s
t8c-client-operator-controller-manager-79d4d5ccb8-s8zzc 1/1 Running 3 (3m41s ago) 8m34s
tsc-site-resources-5669bc77df-27cg2 1/1 Running 0 8m21s
[turbo@turbo3013 ~]$
セキュア・クライアントとSaaS Turbonomicサーバー間のセキュアな接続の確立
こちらを参考に手順を進めます。
https://www.ibm.com/docs/ja/tarm/8.16.x?topic=client-secure-deployment-ova#Configure_Client_Instance__OVA_connection__title__1
生成されたトークンをセキュアクライアントに登録する際の実行例:
※実行後、エンターを2回押下する必要があります。
[turbo@turbo3013 ~]$ /opt/local/bin/tokenExchange.sh -n turbonomic
Paste token provided by your Turbonomic SaaS instance, and then press ENTER twice:
{
"apiVersion": "v1",
"kind": "Secret",
"metadata": {
"name": "e4828764-46a0-11f0-a12e-0a58ac151242",
"annotations": {
"skupper.io/claim-expiration": "2025-06-11T09:48:49Z",
"skupper.io/generated-by": "7f281277-8565-454b-bdcf-101e65c06024",
"skupper.io/site-version": "1.8.3",
"skupper.io/url": "https://claims-xxxxx.apps.trbo-prod-cp-10.x6tl.p1.openshiftapps.com:443/e4828764-46a0-11f0-a12e-0a58ac151242"
},
"labels": {
"skupper.io/type": "token-claim"
}
},
"data": {
"ca.crt": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMRENDQWhTZ0F3SUJBZ0lRZHlvNWlPNjRDUDRrNEV2RDhjNmp5REFOQmdrcWhraUc5dzBCQVFzRkFEQWEKTVJnd0ZnWURWUVFERXc5emEzVndjR1Z5TFhOcGRHVXRZMkV3SGhjTk1qVXdNekV5TVRReE9EUXlXaGNOTXpBdwpNekV4TVRReE9EUXlXakFhTVJnd0ZnWURWUVFERXc5emEzVndjR1Z5TFhOcGRHVXRZMkV3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUMrTktCbWFydlRrd2JBRFE2eHMxZzdvZW1uVnhMRVlOUm0KN25LQ0Jkbm9pSGl6L1ZaUGY0TWdmVGJYQ1FXV3Exb2xDYVFCcTRKdEZrd09jc2V0Wm9HQkpVTTVvVU5sYXdxegoxOUlNaklFTmFuMnRaRTZGbUpyUjdYZFU3VnBZaFFpcmJoVzFlcXVISEZJZjVtdXZTeFNINVpNYUltTDkzL09xCnpyME41bTJKamIvc1lDZjhNbjNEUk5HUDlLZ0Zka2toTUdkTFRVbkJWNXQ2VjBlMDhYelBXNWRpZ29VQlRDQjIKeStSZDEzOXV5d0xwcEpSWXZ2c3h3Mkxta25UQWt6YjVLbWxIMlpRQ2xzaDJ4QzdOMFFEREoyQmt5ajNMV1NBZwpncDZSZHZYY3M2cW5WK3R0UnhjeWRMeURRQjhPaVpmMkFSbTZoT2NsNHEzNi9PM0gxQksxQWdNQkFBR2piakJzCk1BNEdBMVVkRHdFQi93UUVBd0lDcERBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFVSEF3SXcKRHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVb0s0QzA4ZmVSTEJHaXBZTVl3eHN1OHQ5L1NFdwpDd1lEVlIwUkJBUXdBb0lBTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDTzRHQS93dmNReEZBNmQ2NnYvcWI3CjFEZFBJSGVQaldKYU9IbHRzWml6aGRnVkpiRE5NcUNLdTlkSTR5d1Zxd0t4M0g0TG5mYWlrdk5pUzdOVWxtaHIKcTRiUThHZ2cwcFZENDNvd2FYTGo1bnFGbk1TWTBXZndZTG9yTzBOTjRDcjdwWnRHVTZDR3MzTHRVeEpGUVpMegpRT0tPcE5BRjFSekxLL0p2bmdOOUwxbHZ1MFY3OGczM2tnYnd5OEpUSVFRS1ZYTWpxQW5SVDFTcG95bHRPZlQvCjU1TlQ5YnBYbFhpbHFLazc5dVBQc0NyU1Q1Z2R0MkNocUxSSklaTThUN3JoaFFwbXZ1UUNtZjFDVWplUk1TK2EKQlh4elE5T3JTaXUrNkZLelJMZzI0KzIvbWZGS1dEQlJod2lSalE4eXpkRHh3SFhmUXVncS9iVnlZRnA5K2RCWAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==",
"password": "R0VublRNbTNwVlVmSnZtVUdXNDZCQjF4VjhKZ2V1S2FDTW1RcmRMSWFjc0RlemVYQllaZUFhYWdmY2FQSFVFa2hhSU9MWlJhYWdkemFQN2NqY0pRajlTbFFWUjBlSGxJV0trempTaFViNmluYnowa0dGWUhNWG42UHpaY09ZWDQ="
}
}
Applying raw token
Token applied successfully. Waiting up to 30s for connection to be established...
Connection has been established.
Token exchange successful.
[turbo@turbo3013 ~]$
設定が反映され、SaaS版Turbonomicサーバとの接続が確立された事を確認します。
[turbo@turbo3013 ~]$ kubectl get services | grep ^remote
remote-nginx-tunnel ClusterIP 10.233.54.132 <none> 9080/TCP 2m28s
remote-rsyslog ClusterIP 10.233.41.230 <none> 2514/TCP,8080/TCP 2m28s
[turbo@turbo3013 ~]$
また、各種mediation-xxxという名前のPodが再起動され、Running/READYに戻る事を確認します。
[turbo@turbo3013 ~]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
kube-state-metrics-86dbd4db86-95xg7 1/1 Running 0 17m
mediation-netapp-dcb75f447-8vdwv 1/1 Running 0 2m25s
mediation-pure-77b6ddfb55-n5bmf 1/1 Running 0 2m24s
mediation-ucs-769556747f-c7446 1/1 Running 0 2m24s
mediation-vcenter-5bfcf66d65-vldq6 1/1 Running 0 2m24s
mediation-vcenterbrowsing-7b7d5dfdb7-dvnll 1/1 Running 0 2m24s
rsyslog-courier-hqvck 1/1 Running 0 2m24s
skupper-router-8544f4cdd8-w2kvd 2/2 Running 0 2m16s
skupper-service-controller-66c4554f66-tzhw5 1/1 Running 0 2m16s
skupper-site-controller-6b8ffcb454-zj8z5 1/1 Running 0 2m25s
t8c-client-operator-controller-manager-79d4d5ccb8-s8zzc 1/1 Running 3 (12m ago) 17m
tsc-site-resources-9fb8b78bd-x9f6t 1/1 Running 0 2m25s
[turbo@turbo3013 ~]$
Turbonomic側でvCenter等のターゲット追加が可能になった事を確認
ここまでの手順にてセキュアクライアントが無事にTurbonomicサーバと疎通が取れると、Turbonomicのターゲット登録対象の画面に、vCenterなどが追加されます。
TurbonomicのUI(設定 -> ターゲット構成)からvCenterなどが選択可能になった事をご確認下さい。
以上です。
※以降の作業としては、管理対象のvCenterへのターゲット登録に進んでいただくことになります。
https://www.ibm.com/docs/ja/tarm/latest?topic=targets-vcenter-server
なお、その際に指定するvCenterのIPアドレス/FQDNについては、SecureClientを起点と考えて接続可能な宛先をご指定ください。
例:SecureClientからvCenterに対してはローカルな内部IPアドレスで到達可能であれば、そのローカルのIPアドレスをTurbonomicのUI上で指定頂くことになります。(SaaS版Turbonomic本体からの到達可否は気にしなくて大丈夫です)
補足
SecureClientからSaaS版Turbonomicの接続に当たって、Proxyの利用は可能か?
はい、可能ですが、2025年6月現在、ご利用可能なProxyはいわゆる "透過型Proxy" に限定されます。(明示的にProxyサーバのIPアドレスを指定・経由させるタイプの一般的なProxyは利用不可です)具体的な透過型Proxyサーバの構成例は以下に記載されておりますので、必要に応じてご参照下さい。
https://www.ibm.com/docs/en/tarm/latest?topic=client-configuring-proxy-server-secure
※具体的には以下の3つすべてを満たす必要があります:
TLS over TCP:
通信が純粋なTLS(HTTPS)トラフィックである必要があります。プロキシはそのまま中継するだけで、通信内容を解釈・変更してはいけません。
TLS passthrough:
プロキシは、TLS接続を終端せずにそのままバックエンドへパススルーします。
➔ 通信の暗号化はエンドツーエンドで保たれる必要があります。
SNI(Server Name Indication)サポート:
クライアントがTLSハンドシェイク時に送るSNIを使って、プロキシが通信先をルーティングできる必要があります。


