IBM Cloud: IKS/ROKS環境におけるIBM Cloud Monitoring with Sysdig / IBM Cloud Log Analysis with LogDNAのエージェント更新

# 1. はじめに
IBM Cloud Monitoring with SysdigやIBM Cloud Log Analysis with LogDNAをRed Hat OpenShift on IBM Cloud(以下ROKS)やIBM Cloud Kubernetes Service(以下IKS）環境で利用している人は多いと思う。でも、よく考えたら、これって導入した後に定期的な更新を全然やっていないことに気がついた。これ、本当は更新しておかないといけないはずだけど、どうなっているんだっけ・・・？って思って、調べてみた。

# 2. 結論
これらのサービスがIBM Cloudのポータル画面経由で導入されると、`ibm-observe`というnamespace上で稼働する。

```
[root@new-syasuda-tok1-vpc1 ~]# oc get daemonsets -n ibm-observe
NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
logdna-agent   2         2         2       2            2           <none>          47d
sysdig-agent   2         2         2       2            2           <none>          47d
```

そして、以下のように[imagePullPolicyがAlways](https://kubernetes.io/ja/docs/concepts/configuration/overview/#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8)になっているため、コンテナーが再起動する度に、最新のイメージが取得されるようだ。つまり、IKS/ROKSに対して継続的にupdateを適用していれば、その際にworker nodeの入れ替えやコンテナーの再起動が発生するため、自動的に最新イメージがpullされるため、利用者としては継続して最新化されていると思って良いだろう。

ただし、

- これらのAgentのバージョンを固定化したいのであれば、マニフェストファイルを編集する必要がある。
- IBM Cloud Log Analysis with LogDNAについてはVersion 2（安定版）を利用しており、Version 3を利用するためにはやはりマニフェストファイルの更新が必要になる（後述）。

```
[root@new-syasuda-tok1-vpc1 ~]# oc get daemonsets sysdig-agent -n ibm-observe -o jsonpath="{.spec.template.spec.containers[*]"} | jq | grep image
  "image": "icr.io/ext/sysdig/agent",
  "imagePullPolicy": "Always",

[root@new-syasuda-tok1-vpc1 ~]# oc get daemonsets logdna-agent -n ibm-observe -o jsonpath="{.spec.template.spec.containers[*]"} | jq | grep image
  "image": "icr.io/ext/logdna-agent:stable",
  "imagePullPolicy": "Always",
```


# 3. IBM Cloud Monitoring with Sysdigの場合

```
[root@new-syasuda-tok1-vpc1 ~]# oc get pods -n ibm-observe
NAME                 READY   STATUS    RESTARTS        AGE
logdna-agent-bs7s9   1/1     Running   3 (7d11h ago)   48d
logdna-agent-f2bpc   1/1     Running   5 (7d11h ago)   48d
sysdig-agent-b7fb6   1/1     Running   0               48d
sysdig-agent-ffhf4   1/1     Running   0               48d
```

以下のようにdaemonsetにはタグ情報が記載されていないので、イメージとしては暗黙的に`icr.io/ext/sysdig/agent:latest`が利用される。

```
[root@new-syasuda-tok1-vpc1 ~]# oc get daemonsets sysdig-agent -n ibm-observe -o jsonpath="{.spec.template.spec.containers[*]"} | jq | grep image
  "image": "icr.io/ext/sysdig/agent",
  "imagePullPolicy": "Always",

[root@new-syasuda-tok1-vpc1 ~]# oc get pod sysdig-agent-b7fb6 -n ibm-observe -o jsonpath="{.status.containerStatuses}" | jq
[
  {
    "containerID": "cri-o://95f02ce1626a19e79270f5591b48470bee175aba690c80c999f836202f81318c",
    "image": "icr.io/ext/sysdig/agent:latest",
    "imageID": "icr.io/ext/sysdig/agent@sha256:df39741e0cd0ad20f56ca6cac092586d9d14ba25708a42fe7e3c490ac7eea56f",
    "lastState": {},
    "name": "sysdig-agent",
    "ready": true,
    "restartCount": 0,
    "started": true,
    "state": {
      "running": {
        "startedAt": "2022-10-06T07:19:26Z"
      }
    }
  }
]
```

以下で、現在icr.ioに存在するイメージを確認してみる。

```txt:ハッシュ値が現行環境と同じイメージを探索
[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr region-set global
The region is set to 'global', the registry is 'icr.io'.

OK

[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/sysdig/agent --no-trunc | grep -e Tag -e df39741e0cd0ad20f56ca6cac092586d9d14ba25708a42fe7e3c490ac7eea56f
Repository                Tag        Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/sysdig/agent   12.8.1     sha256:df39741e0cd0ad20f56ca6cac092586d9d14ba25708a42fe7e3c490ac7eea56f   ext         2 months ago    731 MB   -
```
```txt:ハッシュ値がlatestと同じイメージを探索
[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/sysdig/agent --no-trunc | grep -e Tag -e latest
Repository                Tag        Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/sysdig/agent   latest     sha256:45b10702667b33b0663dd23164fc9f928945083060c14c3dd1e4b538b9348942   ext         1 week ago      696 MB   -


[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/sysdig/agent --no-trunc | grep -e Tag -e 45b10702667b33b0663dd23164fc9f928945083060c14c3dd1e4b538b9348942
Repository                Tag        Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/sysdig/agent   12.9.1     sha256:45b10702667b33b0663dd23164fc9f928945083060c14c3dd1e4b538b9348942   ext         1 week ago      696 MB   -
icr.io/ext/sysdig/agent   latest     sha256:45b10702667b33b0663dd23164fc9f928945083060c14c3dd1e4b538b9348942   ext         1 week ago      696 MB   -
```





Sysdig agentのrelease notesは[こちら](https://docs.sysdig.com/en/docs/release-notes/sysdig-agent-release-notes/)。
これらのハッシュ値の結果から、現在はversion 12.8.1を利用しており、最新化するとversion 12.9.1になることがわかる。ここで、daemonsetを再起動すると、以下のように12.9.1に直ちに最新化された。（ちなみに、[IBM cloud docsにはAgentのバージョン指定で更新する方法](https://cloud.ibm.com/docs/monitoring?topic=monitoring-upgrade_agent&locale=en)が記載されているが、最新バージョンに更新するならば、このように再起動するだけの方が簡単だと思う。）

```
[root@new-syasuda-tok1-vpc1 ~]# oc rollout restart daemonset sysdig-agent -n ibm-observe
daemonset.apps/sysdig-agent restarted

[root@new-syasuda-tok1-vpc1 ~]# oc get pods -n ibm-observe
NAME                 READY   STATUS    RESTARTS        AGE
logdna-agent-bs7s9   1/1     Running   3 (7d11h ago)   48d
logdna-agent-f2bpc   1/1     Running   5 (7d11h ago)   48d
sysdig-agent-b9tlg   0/1     Running   0               27s
sysdig-agent-tx6q7   0/1     Running   0               25s


[root@new-syasuda-tok1-vpc1 ~]# oc get pod sysdig-agent-b9tlg -n ibm-observe -o jsonpath="{.status.containerStatuses}" | jq
[
  {
    "containerID": "cri-o://a3c695e1c17c5a8bffb1b23fe54c7a7535bdbeb2b808a541c59c479f300cb0b3",
    "image": "icr.io/ext/sysdig/agent:latest",
    "imageID": "icr.io/ext/sysdig/agent@sha256:45b10702667b33b0663dd23164fc9f928945083060c14c3dd1e4b538b9348942",
    "lastState": {},
    "name": "sysdig-agent",
    "ready": true,
    "restartCount": 0,
    "started": true,
    "state": {
      "running": {
        "startedAt": "2022-11-24T01:52:12Z"
      }
    }
  }
]

```

# 4. IBM Cloud Log Analysis with LogDNAの場合

IBM Cloud Monitoring with Sysdigの時と違って、イメージ名を`icr.io/ext/logdna-agent:stable`のようにタグで指定している。

```
[root@new-syasuda-tok1-vpc1 ~]# oc get daemonsets logdna-agent -n ibm-observe -o jsonpath="{.spec.template.spec.containers[*]"} | jq | grep image
  "image": "icr.io/ext/logdna-agent:stable",
  "imagePullPolicy": "Always",

[root@new-syasuda-tok1-vpc1 ~]# oc get pods -n ibm-observe
NAME                 READY   STATUS    RESTARTS        AGE
logdna-agent-bs7s9   1/1     Running   3 (7d11h ago)   48d
logdna-agent-f2bpc   1/1     Running   5 (7d11h ago)   48d
sysdig-agent-b9tlg   1/1     Running   0               2m51s
sysdig-agent-tx6q7   1/1     Running   0               4m13s

[root@new-syasuda-tok1-vpc1 ~]# oc get pod logdna-agent-bs7s9 -n ibm-observe -o jsonpath="{.status.containerStatuses}" | jq
[
  {
    "containerID": "cri-o://f6210f6e78468d77ece205f29fe12093be6a66507db24d8ace463875e9f6f02a",
    "image": "icr.io/ext/logdna-agent:stable",
    "imageID": "icr.io/ext/logdna-agent@sha256:f23a81c2653187be7211478b535e3af2d3e37f6e5e4d7503147a2287b21f4c3d",
    "lastState": {
      "terminated": {
        "containerID": "cri-o://4bed432257c30a50a16b2dfa3b134ba2c1fb95d25f857268712fbae52dcff1cf",
        "exitCode": 139,
        "finishedAt": "2022-11-16T13:15:27Z",
        "reason": "Error",
        "startedAt": "2022-11-16T13:08:45Z"
      }
    },
    "name": "logdna-agent",
    "ready": true,
    "restartCount": 3,
    "started": true,
    "state": {
      "running": {
        "startedAt": "2022-11-16T13:16:54Z"
      }
    }
  }
]
```

以下で、該当イメージを検索してみる。

```txt:ハッシュ値が現行環境と同じイメージを探索
[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr region-set global
The region is set to 'global', the registry is 'icr.io'.

OK

[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/logdna-agent --no-trunc | grep -e Tag -e f23a81c2653187be7211478b535e3af2d3e37f6e5e4d7503147a2287b21f4c3d
Repository                Tag                                                          Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/logdna-agent   2.2.8-20221114.dc2e7002d839                                  sha256:f23a81c2653187be7211478b535e3af2d3e37f6e5e4d7503147a2287b21f4c3d   ext         1 week ago      125 MB   -
```
```txt:タグがstableのイメージを探索
[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/logdna-agent --no-trunc | grep -e Tag -e " stable "
Repository                Tag                                                          Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/logdna-agent   stable                                                       sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -

[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/logdna-agent --no-trunc | grep -e Tag -e a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23
Repository                Tag                                                          Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/logdna-agent   2                                                            sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -
icr.io/ext/logdna-agent   2.2                                                          sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -
icr.io/ext/logdna-agent   2.2.8                                                        sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -
icr.io/ext/logdna-agent   2.2.8-20221121.561180815f8f                                  sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -
icr.io/ext/logdna-agent   stable                                                       sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -
icr.io/ext/logdna-agent   v2-stable                                                    sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23   ext         2 days ago      125 MB   -
```
```txt:タグがlatestのイメージを探索
[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/logdna-agent --no-trunc | grep -e Tag -e latest
Repository                Tag                                                          Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/logdna-agent   latest                                                       sha256:94981ab6a8d46fcbce3d9c4191ad2e19b30a090ed390f1d0660b4106acf4e3db   ext         2 years ago     59 MB    -

[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/logdna-agent --no-trunc | grep -e Tag -e 94981ab6a8d46fcbce3d9c4191ad2e19b30a090ed390f1d0660b4106acf4e3db
Repository                Tag                                                          Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/logdna-agent   1.6.2                                                        sha256:94981ab6a8d46fcbce3d9c4191ad2e19b30a090ed390f1d0660b4106acf4e3db   ext         2 years ago     59 MB    -
icr.io/ext/logdna-agent   1.6.2-20200409                                               sha256:94981ab6a8d46fcbce3d9c4191ad2e19b30a090ed390f1d0660b4106acf4e3db   ext         2 years ago     59 MB    -
icr.io/ext/logdna-agent   latest                                                       sha256:94981ab6a8d46fcbce3d9c4191ad2e19b30a090ed390f1d0660b4106acf4e3db   ext         2 years ago     59 MB    -
```
```txt:タグがv3.7のイメージ
[root@new-syasuda-tok1-vpc1 ~]# ibmcloud cr images --restrict ext/logdna-agent --no-trunc | grep -e Tag -e ' 3.7'
Repository                Tag                                                          Digest                                                                    Namespace   Created         Size     Security status
icr.io/ext/logdna-agent   3.7                                                          sha256:891ee3ff95fb4492c1b85edc8e2bc6d84994ba2e256537af1501e12a6c2bd9be   ext         -               743 B    -
icr.io/ext/logdna-agent   3.7-amd64                                                    sha256:e5691f7d8fa1c31592f95cefbd4dec8994087f04f9b7115268ac12c7b8be64d9   ext         2 days ago      131 MB   -
icr.io/ext/logdna-agent   3.7-arm64                                                    sha256:44b42007a198964d69016612bba1aa30f835424d3923430f416852b7971f8734   ext         2 days ago      129 MB   -
icr.io/ext/logdna-agent   3.7.0                                                        sha256:891ee3ff95fb4492c1b85edc8e2bc6d84994ba2e256537af1501e12a6c2bd9be   ext         -               743 B    -
icr.io/ext/logdna-agent   3.7.0-20221020.a98a55ec1b327e82                              sha256:722427abfab7c20507aafe6a7f2be8d8dadfc2640913b18cf0c63ea31ddc7e27   ext         -               743 B    -
icr.io/ext/logdna-agent   3.7.0-20221020.a98a55ec1b327e82-amd64                        sha256:fe29af01fd5b60cd24e5d3574de70cf33ea110dc6cdb85afc12b877569650644   ext         1 month ago     110 MB   -
icr.io/ext/logdna-agent   3.7.0-20221020.a98a55ec1b327e82-arm64                        sha256:f98a911833f7b3346f3148798dcb7118429c6f711addf6e177a751fc2d05ec94   ext         1 month ago     108 MB   -
icr.io/ext/logdna-agent   3.7.0-20221107.6441deae7152ea0b                              sha256:9a78a971a2180031dbf93b6a541acf53c2d71e53f7529ea0d084782c32a4f8be   ext         -               743 B    -
icr.io/ext/logdna-agent   3.7.0-20221107.6441deae7152ea0b-amd64                        sha256:204a04672901372914966ca1babfccfea75fff2bfba058485e07342a123769d0   ext         2 weeks ago     129 MB   -
icr.io/ext/logdna-agent   3.7.0-20221107.6441deae7152ea0b-arm64                        sha256:b72b03ae5d87852004d8f63d55a76fa7cc06692cee16939f536cf3c8dc2b625e   ext         2 weeks ago     126 MB   -
icr.io/ext/logdna-agent   3.7.0-20221115.da825b2ba12f0a74                              sha256:84b4b055b5e3bf0b57399d32090e83ce6d673849fe3894bf16d17b1ee869a84b   ext         -               743 B    -
icr.io/ext/logdna-agent   3.7.0-20221115.da825b2ba12f0a74-amd64                        sha256:9d73e4362e95c29676af41d781f667a8161baeafeec191d698d472f500afbcc5   ext         1 week ago      131 MB   -
icr.io/ext/logdna-agent   3.7.0-20221115.da825b2ba12f0a74-arm64                        sha256:dec37d5b1a904ff200f0bbe03c5c506b22afce30e5276da3fd068f0a74dee785   ext         1 week ago      129 MB   -
icr.io/ext/logdna-agent   3.7.0-20221121.e92301baa3528d02                              sha256:891ee3ff95fb4492c1b85edc8e2bc6d84994ba2e256537af1501e12a6c2bd9be   ext         -               743 B    -
icr.io/ext/logdna-agent   3.7.0-20221121.e92301baa3528d02-amd64                        sha256:e5691f7d8fa1c31592f95cefbd4dec8994087f04f9b7115268ac12c7b8be64d9   ext         2 days ago      131 MB   -
icr.io/ext/logdna-agent   3.7.0-20221121.e92301baa3528d02-arm64                        sha256:44b42007a198964d69016612bba1aa30f835424d3923430f416852b7971f8734   ext         2 days ago      129 MB   -
icr.io/ext/logdna-agent   3.7.0-amd64                                                  sha256:e5691f7d8fa1c31592f95cefbd4dec8994087f04f9b7115268ac12c7b8be64d9   ext         2 days ago      131 MB   -
icr.io/ext/logdna-agent   3.7.0-arm64                                                  sha256:44b42007a198964d69016612bba1aa30f835424d3923430f416852b7971f8734   ext         2 days ago      129 MB   -
```

これらの結果からわかるように、2022年11月24日現在、`logdna-agent:stable`は最新のversion 3ではなく、`logdna-agent:2.2.8`を指している。また、`logdna-agent:latest`はあろうことか、`logdna-agent:1.6.2`を指している。この驚きの事実（！？）は、[IBM Cloud docsにも以下のように説明されている](https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-log_analysis_agent#log_analysis_agent_image_tags_1)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/125b850c-d095-4a80-0e25-455fd552e73d.png)

いったんVersion 2のまま安定版を利用し続けたいのであれば、やはりPodを再起動するだけで良い。今回は`2.2.8-20221114.dc2e7002d839`から`2.2.8-20221121.561180815f8f`の変更であり、何らかの問題があって一週間程度でfixがリリースされたのであろう。
もしVersion 3に更新したいのであれば、[こちら](https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-upgrade_log_analysis_agent_3&locale=en)を参考。

```
[root@new-syasuda-tok1-vpc1 ~]# oc rollout restart daemonset logdna-agent -n ibm-observe
daemonset.apps/logdna-agent restarted

[root@new-syasuda-tok1-vpc1 ~]# oc get pods -n ibm-observe
NAME                 READY   STATUS    RESTARTS   AGE
logdna-agent-2p6p4   1/1     Running   0          20s
logdna-agent-75pxm   1/1     Running   0          19s
sysdig-agent-b9tlg   1/1     Running   0          7m56s
sysdig-agent-tx6q7   1/1     Running   0          9m18s
```

```
[root@new-syasuda-tok1-vpc1 ~]# oc get pod logdna-agent-2p6p4 -n ibm-observe -o jsonpath="{.status.containerStatuses}" | jq
[
  {
    "containerID": "cri-o://f4c42b092a44d960a58c46ab23383137d2dc69133a6fcab6a55c961b9ddf8556",
    "image": "icr.io/ext/logdna-agent:stable",
    "imageID": "icr.io/ext/logdna-agent@sha256:a52f2e44ad7db9f88cb3da9565772734449ec97c8c6182b4369d42928c3eaa23",
    "lastState": {},
    "name": "logdna-agent",
    "ready": true,
    "restartCount": 0,
    "started": true,
    "state": {
      "running": {
        "startedAt": "2022-11-24T01:52:30Z"
      }
    }
  }
]
```