IBM Turbonomic | SecureClient構築手順例

### はじめに
本ドキュメントでは以下に記載された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の名前空間の一部として仮想的に接続する形となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3082344/c411dec1-1242-4b06-8647-f6703c152ef6.png)


### SecureClinetのOVAイメージdownload
こちらより最新のOVAファイルをダウンロード下さい
https://community.ibm.com/community/user/viewdocument/turbonomic-latest-releases-downlo

:::note info
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

:::note info
尚、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を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3082344/d84562fa-2cd8-4f2f-b293-7ff91fb61615.png)

上記ページで確認出来た３つの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 ~]$
```

:::note info
なお、もしFirewall等で接続可能なURLを制限している場合は、[こちら](https://www.ibm.com/docs/ja/tarm/latest?topic=client-secure-deployment-ova)のマニュアルに記載の通り、上記で記載したURL以外に、`*.icr.io`についても疎通を許可下さい。実際のイメージのダウンロードでは`dd2.icr.io`といったURLへ接続されますが、`dds.`の部分については、変更される可能性がありますため、`*.`として許可頂く様お願いします。
:::


### セットアップスクリプトの実行
SecureClientの構成自動セットアップスクリプト（/opt/local/bin/t8cClientInstall.sh）を実行します。
これによって、Linux内部でKubernetesが構成され、セキュアクライアントの稼働に必要な各種podが自動的に展開されます。

:::note info
似たような名前のスクリプトとして"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

生成されたトークンをセキュアクライアントに登録する際の実行例：
※実行後、エンターを２回押下する必要があります。

```
[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などが選択可能になった事をご確認下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3082344/b7613654-a55f-42a7-9cbb-49736bd5c952.png)


以上です。