OpenShiftのアップデート(OCP4.11 to 4.12)


# 概要

OpenShift Container Platform (OCP) 4.11からOCP 4.12にアップデートした際のメモを残しておきます。

今回は`stable-4.11`チャネルの`OCP 4.11.16`から、`fast-4.12`チャネルの`OCP 4.12.3`にアップデートしました。
(検証時点では`stable-4.12`や`eus-4.12` Channelは出てこなかったので、`fast-4.12` Channelでやっていますが、実環境では`stable`や`eus`のアップデートパスが出るまでアップデートはしない方が良いと思います。)


# 参考リンク

**全般**
- [OCP 4.12 Docs / クラスターの更新](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.12/html-single/updating_clusters/index)

**4.12に上げるための準備(削除されたAPI対応)**
- [OCP 4.12 Docs / クラスターの更新 / 5. OpenShift Container Platform 4.12 への更新の準備](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.12/html-single/updating_clusters/index#updating-cluster-prepare)
- [KB / Preparing to upgrade to OpenShift Container Platform 4.12](https://access.redhat.com/articles/6955381)
- [KB / Navigating Kubernetes API deprecations and removals](https://access.redhat.com/articles/6955985)

**アップデートパスの確認**
- [Red Hat OpenShift Container Platform Update Graph / Update Graph](https://access.redhat.com/labs/ocpupgradegraph/update_channel)
- [Red Hat OpenShift Container Platform Update Graph / Update Path](https://access.redhat.com/labs/ocpupgradegraph/update_path)
- [KB / OpenShift Container Platform (OCP) 4 upgrade paths](https://access.redhat.com/solutions/4583231)

# 検証構成

## OCP構成

「[Qiita / ベアメタルUPIで導入したオンプレのOpenShift 4.11に LokiStack + Vectorを入れてみた](https://qiita.com/t_sweetfish/items/49db5967abbf86102b4b)」で作成した環境を使用しています。

## node構成

MCPはinfra node用のMCPも作成しています。

```bash
[root@bastion-01 ~]# oc get mcp
NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
infra    rendered-infra-bd0eb2d6bddaa13bd9a1fe95217a0e88    True      False      False      6              6                   6                     0                      219d
master   rendered-master-60815c158d00703013c8ffa0f9090be0   True      False      False      3              3                   3                     0                      219d
worker   rendered-worker-bd0eb2d6bddaa13bd9a1fe95217a0e88   True      False      False      2              2                   2                     0                      219d
[root@bastion-01 ~]#
```

master node x3、infra node x3、infra node (ODF用) x3、worker node x2の構成です。
```bash
[root@bastion-01 ~]# oc get node
NAME         STATUS   ROLES    AGE    VERSION
infra-01     Ready    infra    219d   v1.24.6+5157800
infra-02     Ready    infra    219d   v1.24.6+5157800
infra-03     Ready    infra    219d   v1.24.6+5157800
master-01    Ready    master   219d   v1.24.6+5157800
master-02    Ready    master   219d   v1.24.6+5157800
master-03    Ready    master   219d   v1.24.6+5157800
storage-01   Ready    infra    73d    v1.24.6+5157800
storage-02   Ready    infra    73d    v1.24.6+5157800
storage-03   Ready    infra    73d    v1.24.6+5157800
worker-01    Ready    worker   219d   v1.24.6+5157800
worker-02    Ready    worker   219d   v1.24.6+5157800
[root@bastion-01 ~]#
```

## OCPバージョン

現在のバージョンは`stable-4.11`チャネルの`OCP 4.11.16`です。

```bash
[root@bastion-01 ~]# oc version
Client Version: 4.11.16
Kustomize Version: v4.5.4
Server Version: 4.11.16
Kubernetes Version: v1.24.6+5157800
[root@bastion-01 ~]#
```
```bash
[root@bastion-01 ~]# oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.11.16   True        False         73d     Cluster version is 4.11.16
[root@bastion-01 ~]#
```


## Operator

導入しているOperatorは以下になります。

| Operator                  | Channel       | 更新承認ストラテジー | CSV                                          | 備考 |
|:--------------------------|:--------------|:---------------|:---------------------------------------------|:-----|
| Local Storage             | `stable`      | Manual         | `local-storage-operator.4.11.0-202211072116` |      |
| OpenShift Data Foundation | `stable-4.11` | Manual         | `odf-operator.v4.11.4`                       |      |


| Operator                  | Channel      | 更新承認ストラテジー | CSV                     | 備考                                                |
|:--------------------------|:-------------|:---------------|:------------------------|:----------------------------------------------------|
| Red Hat OpenShift Logging | `stable-5.5` | Manual         | `cluster-logging.5.5.5` | 以前は`Cluster Logging Operator`という名称だったが変更されたもの |
| Loki Operator             | `stable-5.5` | Manual         | `loki-operator.5.5.5`   |                                                     |


こちらもOCP 4.12 アップデート後にOCP 4.12に対応している最新のチャネルのものにアップデートします。


# 手順の流れ

ベアメタルUPIのOCPでOCP 4.11.16からOCP 4.12.3にアップデートする流れは以下のようになります。


**アップデートパスの確認**
- (0)アップデートパスの確認

**OCP本体**
- (1) 4.11 -> 4.12に上げるための準備(削除されたAPI対応) (一部Operatorのアップデート)
- (2) チャネルを`stable-4.12`に変更し4.12.3にアップデート (今回は`fast-4.12`)
- (3) バージョンが4.12.3になる
- (4) CLI(oc)のアップデート

**Operator**
- (1) 適宜必要なものをアップデート
- (2) その他個別に導入していたものも対応
- ((*) Operatorやその他アプリは、OCPとの互換性によっては、OCPを4.12に上げる前にアップデートしておく必要があるものがある場合もありますので適宜判断ください。)


# 実際の手順

## アップデートパスの確認

### (0) アップデートパスの確認

アップデートパスの確認は以下のリンクで確認できます。
- [Red Hat OpenShift Container Platform Update Graph / Update Graph](https://access.redhat.com/labs/ocpupgradegraph/update_channel)
- [Red Hat OpenShift Container Platform Update Graph / Update Path](https://access.redhat.com/labs/ocpupgradegraph/update_path)
- [KB / OpenShift Container Platform (OCP) 4 upgrade paths](https://access.redhat.com/solutions/4583231)

Update Pathの方で「Current Channel」を`stable-4.11`を選択し、「Current OpenShift Version」に`4.11.16`を選択すると、「Target OpenShift Version」のプルダウンからはOCP 4.12の全てのバージョンが (no update path available) と表示されていました。
![2023-02-16-20-14-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/6debae04-c218-49fd-2940-c8ddf7955b02.png)

`fast-4.11`とした場合は、アップデートパスとして`4.12.2`が選択できました。
![2023-02-16-20-21-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/8a290d5e-ed9b-db41-fbfe-6960e2904b73.png)

ここで「Generate」をクリックすると、`fast-4.12` Channelでは、「`4.11.16` -> `4.12.2`」の順番のアップデートパスがあることがわかります。
![2023-02-16-20-23-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/4878b222-431c-e433-509d-a5aced2caaba.png)

今回はあくまでも検証環境なので`stable`チャネルではなく`fast`チャネルでアップデートしてみます。
(そもそも検証した日は、まだこの画面では`stable-4.12`や`eus-4.12` Channelが表示されていなかったというのもあります。)
!<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/9f161877-3c79-e31c-5d57-bd8f4ec2e201.png width="400">


## OCP本体

### (1) 4.11 -> 4.12に上げるための準備(削除されたAPI対応) (一部Operatorのアップデート)


OCPのGUIの管理->クラスター設定画面上部にもメッセージが出ているように、まず初めに、以下の手順に従ってOCP 4.12に上げるための準備(削除されたAPI対応)を実施する必要があります。
![2023-02-16-19-59-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/31a77a0f-0e4d-5f63-8e60-4f6a5e946ef7.png)

OCP 4.12に上げるための削除されたAPI対応は以下のリンクを見て実施します。

[OCP 4.12 Docs / クラスターの更新 / 5. OpenShift Container Platform 4.12 への更新の準備](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.12/html-single/updating_clusters/index#updating-cluster-prepare)
[KB / Preparing to upgrade to OpenShift Container Platform 4.12](https://access.redhat.com/articles/6955381)
[KB / Navigating Kubernetes API deprecations and removals](https://access.redhat.com/articles/6955985)


#### 削除される予定のAPIが使用されているかの確認

`cluster-admin`ロールを持つユーザーとしてクラスターにログインします。

`APIRequestCount`を使用し、削除される`API`を使用しているかを特定します。
以下のコマンドを実行すると、`REMOVEDINRELEASE`列で、現在使用中の削除される`API`を確認することができます。
```bash
oc get apirequestcounts
```
(出力例)
```bash
[root@bastion-01 ~]# oc get apirequestcounts
NAME                                                                           REMOVEDINRELEASE   REQUESTSINCURRENTHOUR   REQUESTSINLAST24H
# REMOVEDINRELEASEに値がある行以外を削除して記載
cronjobs.v1beta1.batch                                                         1.25               0                       8
flowschemas.v1beta1.flowcontrol.apiserver.k8s.io                               1.26               23                      3487
horizontalpodautoscalers.v2beta1.autoscaling                                   1.25               0                       0
horizontalpodautoscalers.v2beta2.autoscaling                                   1.26               1                       175
ingresses.v1beta1.extensions                                                   1.22               0                       0
poddisruptionbudgets.v1beta1.policy                                            1.25               0                       0
podsecuritypolicies.v1beta1.policy                                             1.25               2                       178
prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io               1.26               3                       318
```

以下のように`-o json`フィルターをして確認すると使用されているAPIだけを抽出して表示することができます。
```bash
oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.status.requestCount}{"\t"}{.metadata.name}{"\n"}{end}'
```
(出力例)
```bash
[root@bastion-01 ~]# oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.status.requestCount}{"\t"}{.metadata.name}{"\n"}{end}'
1.25    8       cronjobs.v1beta1.batch
1.26    3498    flowschemas.v1beta1.flowcontrol.apiserver.k8s.io
1.25    0       horizontalpodautoscalers.v2beta1.autoscaling
1.26    176     horizontalpodautoscalers.v2beta2.autoscaling
1.22    0       ingresses.v1beta1.extensions
1.25    0       poddisruptionbudgets.v1beta1.policy
1.25    179     podsecuritypolicies.v1beta1.policy
1.26    319     prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io
[root@bastion-01 ~]#
```


洗い出されたAPIをどのワークロードが使用しているかを特定します。
-o jsonpathを使用して、APIRequestCountリソースからusernameおよびuserAgentの値を抽出することができます、
(今回は、OCP 4.12のドキュメントの`.status.currentHour`ではなく、KBの方にあった24時間以下に使用されたものを表示する`.status.last24h`の方でフィルターして確認しました。)
```bash
oc get apirequestcounts ingresses.v1beta1.networking.k8s.io \
  -o jsonpath='{range .status.last24h..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \
  | sort -k 2 -t, -u | column -t -s, -NVERBS,USERNAME,USERAGENT
```

こちらを、KBのComment欄にあったfor文で実行して、一覧を表示しました。
```bash
[root@bastion-01 ~]# for i in $(oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.metadata.name}{"\n"}{end}'); do
>     oc get apirequestcounts $i -o jsonpath='{range .status.last24h..byUser[*]}{..byVerb[*].verb}{","}{"'$i',"}{.username}{","}{.userAgent}{"\n"}{end}' \
>        | sort -k 2 -t, -u
>   done | column -t -s, -NVERBS,API,USERNAME,USERAGENT
VERBS   API                                                               USERNAME                                                       USERAGENT
delete  cronjobs.v1beta1.batch                                            system:serviceaccount:openshift-storage:rook-ceph-system       rook/v0.0.0
get     flowschemas.v1beta1.flowcontrol.apiserver.k8s.io                  system:serviceaccount:openshift-cluster-version:default        cluster-version-operator/v0.0.0
watch   horizontalpodautoscalers.v2beta2.autoscaling                      system:serviceaccount:openshift-monitoring:kube-state-metrics  v2.5.0
watch   podsecuritypolicies.v1beta1.policy                                system:kube-controller-manager                                 kube-controller-manager/v1.24.6+5157800
get     prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io  system:serviceaccount:openshift-cluster-version:default        cluster-version-operator/v0.0.0
[root@bastion-01 ~]#
```


上述のコマンド出力から、今回は以下の対応をしました。

(1) ドキュメントに記載のある以下のエントリーは無視しても良いとのことなので、今回は無視します。
- `podsecuritypolicies.v1beta1.policy`

(ドキュメント抜粋)
> **重要**  
> 結果に表示される以下のエントリーは無視しても問題はありません。
> 
> system:serviceaccount:kube-system:generic-garbage-collector および system:serviceaccount:kube-system:namespace-controller ユーザーは、削除するリソースの検索時に登録されたすべての API を呼び出すので、結果に表示される可能性があります。  
> system:kube-controller-manager および system:cluster-policy-controller ユーザーは、さまざまなポリシーを適用しながらすべてのリソースをウォークスルーするため、結果に表示される場合があります。



(2) 以下のAPIは、前述の確認コマンドの出力から`1.25`ではなく`1.26`で削除予定のため、一旦今回は無視しました。
- `flowschemas.v1beta1.flowcontrol.apiserver.k8s.io`
- `horizontalpodautoscalers.v2beta2.autoscaling`
- `prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io`


(3) 残ったのは`cronjobs.v1beta1.batch`です。
これは`openshift-storage` namespaceに導入している、「OpenShift Data Foudation」のrookが使用していると思われます。

現在の状況は、OCP 4.11に、ODF 4.11を導入しています。

OCPとODFの互換性を確認すると、ODF 4.12は、OCP 4.12でしかサポートされていませんでしたので、ODFを先に4.12に上げることはできないと思われます。

[Red Hat OpenShift Container Platform Life Cycle Policy / Red Hat OpenShift Data Foundation](https://access.redhat.com/support/policy/updates/openshift#odf)  
[KB / Red Hat OpenShift Data Foundation(previously known as OpenShift Container Storage) Supportability and Interoperability Guide](https://access.redhat.com/articles/4731161)
![2023-02-17-21-11-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/b24303e1-ec50-a766-1510-9e215c3df6fd.png)

一方でODF 4.11は、OCP4.12でもサポートされます。
(バージョン互換性とAPI互換性が矛盾している気もしますが)、今回は影響があるのは、rookのcronjobだけなので、とりあえずこの時点ではcronjobのAPIの対応は何もせず、一旦OCPを4.12にアップデートしてからODFも追いつきですぐに4.12にアップデートをするという対応をすることにしました。

以上から、これで一旦影響のあるAPIの確認が終わったということで、確認終了の処理をします。


#### 管理者の確認

削除される予定のAPIを使用しているかを確認して全ての移行の対応が完了したら、管理者は明示的に確認をしたという処理をする必要があります。

以下のコマンドを実行して、評価を完了し、OCP 4.12にアップデートできることを確認したフラグを立てます。
(`admin-acks`という`configmap`に`"ack-4.11-kube-1.25-api-removals-in-4.12":"true"}`というフラグをつける)
```bash
oc -n openshift-config patch cm admin-acks --patch '{"data":{"ack-4.11-kube-1.25-api-removals-in-4.12":"true"}}' --type=merge
```

実施前
```bash
[root@bastion-01 ~]# oc get cm -n openshift-config admin-acks -o yaml
apiVersion: v1
data:
  ack-4.8-kube-1.22-api-removals-in-4.9: "true"
kind: ConfigMap
metadata:
  annotations:
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
    release.openshift.io/create-only: "true"
  creationTimestamp: "2022-07-12T07:59:54Z"
  name: admin-acks
  namespace: openshift-config
  resourceVersion: "17694913"
  uid: e1f88089-0a23-40dc-8daf-36704714ec71
[root@bastion-01 ~]#
```
フラグを立てる
```bash
[root@bastion-01 ~]# oc -n openshift-config patch cm admin-acks --patch '{"data":{"ack-4.11-kube-1.25-api-removals-in-4.12":"true"}}' --type=merge
configmap/admin-acks patched
[root@bastion-01 ~]#
```
処理後
```bash
[root@bastion-01 ~]# oc get cm -n openshift-config admin-acks -o yaml
apiVersion: v1
data:
  ack-4.8-kube-1.22-api-removals-in-4.9: "true"
  ack-4.11-kube-1.25-api-removals-in-4.12: "true"
kind: ConfigMap
metadata:
  annotations:
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
    release.openshift.io/create-only: "true"
  creationTimestamp: "2022-07-12T07:59:54Z"
  name: admin-acks
  namespace: openshift-config
  resourceVersion: "270106618"
  uid: e1f88089-0a23-40dc-8daf-36704714ec71
[root@bastion-01 ~]#
```

こうすることで、OCPのGUIから先ほどのメッセージが表示されなくなり、OCP 4.12にアップデートすることができるようことが出来るようになりました。

(参考)クラスター設定画面上部に表示されていたメッセージも消える。
![2023-02-18-18-59-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/0f21492b-dbd6-da12-b2e9-8a8080c9fe5e.png)

### (2) チャネルを`stable-4.12`に変更し4.12.3にアップデート (今回は`fast-4.12`)

今回はCLIではなくOCPのGUIからアップデートをしました。

また、[(0)アップデートパスの確認](#0-アップデートパスの確認)でも記載したように、まだ`stable-4.12` Channelがないので、`fast-4.12`を選択し、「`4.11.16` -> `4.12.3`」にアップデートします。

アップデート前の状態
```bash
[root@bastion-01 ~]# oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.11.16   True        False         75d     Cluster version is 4.11.16
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get node
NAME         STATUS   ROLES    AGE    VERSION
infra-01     Ready    infra    221d   v1.24.6+5157800
infra-02     Ready    infra    221d   v1.24.6+5157800
infra-03     Ready    infra    221d   v1.24.6+5157800
master-01    Ready    master   221d   v1.24.6+5157800
master-02    Ready    master   221d   v1.24.6+5157800
master-03    Ready    master   221d   v1.24.6+5157800
storage-01   Ready    infra    75d    v1.24.6+5157800
storage-02   Ready    infra    75d    v1.24.6+5157800
storage-03   Ready    infra    75d    v1.24.6+5157800
worker-01    Ready    worker   221d   v1.24.6+5157800
worker-02    Ready    worker   221d   v1.24.6+5157800
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get mcp
NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
infra    rendered-infra-bd0eb2d6bddaa13bd9a1fe95217a0e88    True      False      False      6              6                   6                     0                      221d
master   rendered-master-60815c158d00703013c8ffa0f9090be0   True      False      False      3              3                   3                     0                      221d
worker   rendered-worker-bd0eb2d6bddaa13bd9a1fe95217a0e88   True      False      False      2              2                   2                     0                      221d
[root@bastion-01 ~]#
```



`fast-4.12`に変更し、アップデートパスがある`4.12.3`を選択します。
(「[(0)アップデートパスの確認](#0-アップデートパスの確認)」で確認した時はTargetのバージョンは`4.12.2`しか選択できなかったですが、この操作の実施時には、`4.12.3`が選択できるようになっていたので、今回は`4.12.3`を選択しました。)

OCPのGUIのメニューから管理 -> クラスター設定を開き、チャネルの`stable-4.11`のリンクをクリックします。
![2023-02-18-19-09-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/284c5b01-33b8-544d-42ca-a627d3f4a7c6.png)

表示されるチャネルの選択画面で`fast-4.12`に変更します。
![2023-02-18-19-09-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/3db1ee48-d7d1-be3f-68a0-ced08160d7e6.png)


チャネルが`fast-4.12`に更新され、アップデートできるバージョンが表示されますので「バージョンの更新」をクリックします。
![2023-02-18-19-10-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/b2826cc2-8283-234e-10de-d5ba6c4270ee.png)

「新規バージョンの選択」のプルダウンメニューでは、推奨とサポート対象(ただし非推奨)のバージョンが選べます。
![2023-02-18-19-11-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/25cbad31-afda-87d3-e32b-74ac6b2d8df6.png)



今回は推奨の中で最新の`4.12.3`を選択します。
また、master nodeもworker/infra nodeも一緒にアップデートするので「クラスターの完全な更新」を選択して、「更新」をクリックします。
![2023-02-18-19-10-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/4e0db5b8-d2de-d3ac-5b88-78d9fb85490e.png)


`4.12.3`へのアップデートが始まります。

```bash
[root@bastion-01 ~]# oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.11.16   True        True          3m35s   Working towards 4.12.3: 104 of 829 done (12% complete), waiting on etcd, kube-apiserver
[root@bastion-01 ~]#
```

まずはCluster Operatorのアップデートが始まります。
![2023-02-18-19-58-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/86255306-f017-83df-3922-2ad5640fd853.png)

Cluster Operatorのアップデートが大体終わると、新しいMCPのMCを適用するために、master nodeと、worker node、infra nodeの再起動が始まります。
![2023-02-18-20-37-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/16b6dd04-4220-6908-461c-c4fca58253a2.png)

```
[root@bastion-01 ~]# oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.11.16   True        True          54m     Working towards 4.12.3: 374 of 829 done (45% complete)
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get mcp
NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
infra    rendered-infra-bd0eb2d6bddaa13bd9a1fe95217a0e88    False     True       False      6              1                   1                     0                      221d
master   rendered-master-60815c158d00703013c8ffa0f9090be0   False     True       False      3              1                   1                     0                      221d
worker   rendered-worker-bd0eb2d6bddaa13bd9a1fe95217a0e88   False     True       False      2              1                   1                     0                      221d
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get node
NAME         STATUS                     ROLES    AGE    VERSION
infra-01     Ready                      infra    221d   v1.24.6+5157800
infra-02     Ready,SchedulingDisabled   infra    221d   v1.24.6+5157800
infra-03     Ready                      infra    221d   v1.25.4+a34b9e9
master-01    Ready                      master   221d   v1.25.4+a34b9e9
master-02    Ready,SchedulingDisabled   master   221d   v1.24.6+5157800
master-03    Ready                      master   221d   v1.24.6+5157800
storage-01   Ready                      infra    75d    v1.24.6+5157800
storage-02   Ready                      infra    75d    v1.24.6+5157800
storage-03   Ready                      infra    75d    v1.24.6+5157800
worker-01    Ready,SchedulingDisabled   worker   221d   v1.25.4+a34b9e9
worker-02    Ready                      worker   221d   v1.25.4+a34b9e9
[root@bastion-01 ~]#
```

### (3) バージョンが4.12.3になる

master、infra、worker nodeの再起動が完了し、OCP 4.12.3へのアップデートが完了したことを確認します。

![2023-02-18-21-02-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/a4aed6ea-8e56-1ca9-427f-7902e5118728.png)
![2023-02-18-21-03-33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/f95e2b07-0ab3-8393-ea8f-53514bbc8bb2.png)

CLIでも正常にアップデートしたことを確認します。

clusterversionの`VERSION`は`4.12.3`です。
```bash
[root@bastion-01 ~]# oc get clusterversion
NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
version   4.12.3    True        False         13m     Cluster version is 4.12.3
[root@bastion-01 ~]#
```

MCPの全てのnodeの`UPDATED`が`True`になっています。
```bash
[root@bastion-01 ~]# oc get mcp
NAME     CONFIG                                             UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
infra    rendered-infra-74f981727fab0316702889103c90d475    True      False      False      6              6                   6                     0                      221d
master   rendered-master-66bd7c1e50b9cd63ddc138121fdd26ca   True      False      False      3              3                   3                     0                      221d
worker   rendered-worker-74f981727fab0316702889103c90d475   True      False      False      2              2                   2                     0                      221d
[root@bastion-01 ~]#
```

nodeは全て`STATUS`が`READY`になり、kubernetesのバージョンも`v1.25`になっています。

```bash
[root@bastion-01 ~]# oc get node
NAME         STATUS   ROLES    AGE    VERSION
infra-01     Ready    infra    221d   v1.25.4+a34b9e9
infra-02     Ready    infra    221d   v1.25.4+a34b9e9
infra-03     Ready    infra    221d   v1.25.4+a34b9e9
master-01    Ready    master   221d   v1.25.4+a34b9e9
master-02    Ready    master   221d   v1.25.4+a34b9e9
master-03    Ready    master   221d   v1.25.4+a34b9e9
storage-01   Ready    infra    75d    v1.25.4+a34b9e9
storage-02   Ready    infra    75d    v1.25.4+a34b9e9
storage-03   Ready    infra    75d    v1.25.4+a34b9e9
worker-01    Ready    worker   221d   v1.25.4+a34b9e9
worker-02    Ready    worker   221d   v1.25.4+a34b9e9
[root@bastion-01 ~]#
```

clusteroperatorの`VERSION`も全て`4.12.3`になっています。

```bash
[root@bastion-01 ~]# oc get co
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
authentication                             4.12.3    True        False         False      6m39s
baremetal                                  4.12.3    True        False         False      221d
cloud-controller-manager                   4.12.3    True        False         False      220d
cloud-credential                           4.12.3    True        False         False      221d
cluster-autoscaler                         4.12.3    True        False         False      221d
config-operator                            4.12.3    True        False         False      221d
console                                    4.12.3    True        False         False      8d
control-plane-machine-set                  4.12.3    True        False         False      62m
csi-snapshot-controller                    4.12.3    True        False         False      220d
dns                                        4.12.3    True        False         False      115d
etcd                                       4.12.3    True        False         False      96d
image-registry                             4.12.3    True        False         False      25m
ingress                                    4.12.3    True        False         False      8d
insights                                   4.12.3    True        False         False      221d
kube-apiserver                             4.12.3    True        False         False      221d
kube-controller-manager                    4.12.3    True        False         False      221d
kube-scheduler                             4.12.3    True        False         False      221d
kube-storage-version-migrator              4.12.3    True        False         False      35m
machine-api                                4.12.3    True        False         False      221d
machine-approver                           4.12.3    True        False         False      221d
machine-config                             4.12.3    True        False         False      62d
marketplace                                4.12.3    True        False         False      221d
monitoring                                 4.12.3    True        False         False      62d
network                                    4.12.3    True        False         False      221d
node-tuning                                4.12.3    True        False         False      58m
openshift-apiserver                        4.12.3    True        False         False      8d
openshift-controller-manager               4.12.3    True        False         False      58m
openshift-samples                          4.12.3    True        False         False      61m
operator-lifecycle-manager                 4.12.3    True        False         False      221d
operator-lifecycle-manager-catalog         4.12.3    True        False         False      221d
operator-lifecycle-manager-packageserver   4.12.3    True        False         False      41m
service-ca                                 4.12.3    True        False         False      221d
storage                                    4.12.3    True        False         False      221d
[root@bastion-01 ~]#
```

RHCOSのバージョンもmaster、infra、worker nodeとも全て`4.12`になっています。
```bash
[root@bastion-01 ~]# ssh core@master-01 -- cat /etc/redhat-release
Red Hat Enterprise Linux CoreOS release 4.12
[root@bastion-01 ~]#
[root@bastion-01 ~]# ssh core@infra-01 -- cat /etc/redhat-release
Red Hat Enterprise Linux CoreOS release 4.12
[root@bastion-01 ~]#
[root@bastion-01 ~]# ssh core@storage-01 -- cat /etc/redhat-release
Red Hat Enterprise Linux CoreOS release 4.12
[root@bastion-01 ~]#
[root@bastion-01 ~]# ssh core@worker-01 -- cat /etc/redhat-release
Red Hat Enterprise Linux CoreOS release 4.12
[root@bastion-01 ~]#
```

### (4) CLI(oc)のアップデート

CLI(oc)も`4.12.3`のものにアップデートします。
```bash
[root@bastion-01 4.12.3]# curl -s -O https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.12.3/openshift-client-linux-4.12.3.tar.gz
[root@bastion-01 4.12.3]# curl -s -O https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.12.3/release.txt
[root@bastion-01 4.12.3]# curl -s -O https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.12.3/sha256sum.txt
[root@bastion-01 4.12.3]#
[root@bastion-01 4.12.3]# ls -l
合計 53908
-rw-r--r--. 1 root root 55162055  2月 18 21:09 openshift-client-linux-4.12.3.tar.gz
-rw-r--r--. 1 root root    31959  2月 18 21:09 release.txt
-rw-r--r--. 1 root root     1277  2月 18 21:09 sha256sum.txt
[root@bastion-01 4.12.3]#
[root@bastion-01 4.12.3]# sha256sum openshift-client-linux-4.12.3.tar.gz
41eb5f7557017396e8dae48352c64a840eed46fc552a2888d44534bdbeb1f561  openshift-client-linux-4.12.3.tar.gz
[root@bastion-01 4.12.3]# grep openshift-client-linux-4.12.3.tar.gz sha256sum.txt
41eb5f7557017396e8dae48352c64a840eed46fc552a2888d44534bdbeb1f561  openshift-client-linux-4.12.3.tar.gz
[root@bastion-01 4.12.3]#
[root@bastion-01 4.12.3]# tar zxf openshift-client-linux-4.12.3.tar.gz
[root@bastion-01 4.12.3]#
[root@bastion-01 4.12.3]# mv oc kubectl /usr/local/bin/
mv: '/usr/local/bin/oc' を上書きしますか? y
mv: '/usr/local/bin/kubectl' を上書きしますか? y
[root@bastion-01 4.12.3]#
[root@bastion-01 4.12.3]# oc version
Client Version: 4.12.3
Kustomize Version: v4.5.7
Server Version: 4.12.3
Kubernetes Version: v1.25.4+a34b9e9
[root@bastion-01 4.12.3]#
```
タブ補完
```bash
[root@bastion-01 4.12.3]# oc completion bash > oc_bash_completion
[root@bastion-01 4.12.3]# mv oc_bash_completion /etc/bash_completion.d/
mv: '/etc/bash_completion.d/oc_bash_completion' を上書きしますか? y
[root@bastion-01 4.12.3]#
```


## Operator

### (1) 適宜必要なものをアップデート

アップデートが必要なOperatorがあればアップデートします。

#### アップデート対象のOperator (ストレージ関連)

導入しているOperatorは以下になります。

| Operator                  | Channel       | 更新承認ストラテジー | CSV                                          | 備考 |
|:--------------------------|:--------------|:---------------|:---------------------------------------------|:-----|
| Local Storage             | `stable`      | Manual         | `local-storage-operator.4.11.0-202211072116` |      |
| OpenShift Data Foundation | `stable-4.11` | Manual         | `odf-operator.v4.11.4`                       |      |


Local Storage Operatorに関しては、[Red Hat OpenShift Container Platform のライフサイクルポリシー](https://access.redhat.com/ja/support/policy/updates/openshift)にはOCPとの互換性の記述の記載はありません。

ですが、一旦Local Storage Operatorは`4.11`のまま、OCP自体は`4.12`にアップデートはできたので、併せてここでLocal Storage Operatorも`4.12`にしておきます。


OpenShift Data Foundationは、OCP `4.12`で、ODF `4.11`、`4.12`をサポートしているので、`4.12`にアップデートします。
特にcronjobを使用していたODFは、APIが削除されているのでバージョンアップしておく必要があります。


#### アップデート対象のOperator (ロギング関連)

次にLogging関連のOperatorもアップデートします。
現在導入していたバージョンは以下です。

| Operator                  | Channel      | 更新承認ストラテジー | CSV                     | 備考                                                |
|:--------------------------|:-------------|:---------------|:------------------------|:----------------------------------------------------|
| Red Hat OpenShift Logging | `stable-5.5` | Manual         | `cluster-logging.5.5.5` | 以前は`Cluster Logging Operator`という名称だったが変更されたもの |
| Loki Operator             | `stable-5.5` | Manual         | `loki-operator.5.5.5`   |         

Loggingは、「[Red Hat OpenShift Container Platform のライフサイクルポリシー](https://access.redhat.com/ja/support/policy/updates/openshift)」を見ると、`5.5`は、OCP `4.11`、`4.12`でもサポートされており、`5.6`はOCP `4.12`でサポートされているので、ここで、Red Hat OpenShift Loggingと、Loki Operatorも、`5.6`にアップデートします。


(補足)
OCP 4.12.3にアップグレードしたところ、画面上部にCluster Logging Operatorと、Loki Operator、(あとは使用していないけど消していなかったElasticsearch Operator)の`5.5.5`が、OCP 4.12と互換性がないとの記載があります。
ですので、これらを`5.5.6`にアップデートします。

(というか、ライフサイクルポリシーで確認したときはOCP `4.12`で Logging `5.5`のサポートがある、、との記載がある気がするのだけれど、、、)
![2023-02-18-21-15-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/235a1ac2-8d7e-b2fe-98d7-c56136b5fe48.png)

#### Local Storage Operatorのアップデート

Local Storage OperatorのChannelを`4.11`から`4.12`に更新します。

**アップデート前の確認**

アップデート前の状態を確認します。

local-storage operatorのChannelは`stable`になっており、CSVのバージョンは`4.11.0-202211072116`となっています。
```bash
[root@bastion-01 ~]# oc get sub -n openshift-local-storage
NAME                     PACKAGE                  SOURCE             CHANNEL
local-storage-operator   local-storage-operator   redhat-operators   stable
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get csv -n openshift-local-storage
NAME                                         DISPLAY                            VERSION               REPLACES                                     PHASE
elasticsearch-operator.5.5.5                 OpenShift Elasticsearch Operator   5.5.5                 elasticsearch-operator.5.4.9                 Succeeded
local-storage-operator.4.11.0-202211072116   Local Storage                      4.11.0-202211072116   local-storage-operator.4.10.0-202207192148   Succeeded
loki-operator.5.5.5                          Loki Operator                      5.5.5                                                              Succeeded
[root@bastion-01 ~]#
```

更新承認ストラテジーは手動にしているので、より最新のinstallplanがあれば承認待ちになっています。
```bash
[root@bastion-01 ~]# oc get installplan -n openshift-local-storage
NAME            CSV                                          APPROVAL    APPROVED
install-8979p   local-storage-operator.4.11.0-202212070335   Manual      false
install-f2rfw   local-storage-operator.4.11.0-202211072116   Manual      true
install-fq5qr   local-storage-operator.4.8.0-202206281335    Automatic   true
install-zdsfg   local-storage-operator.4.10.0-202207192148   Manual      true
install-zslmm   local-storage-operator.4.10.0-202206291026   Manual      true
[root@bastion-01 ~]#
```


アップデート前の状況です。

この時点ではモニタリング用のPVは、ODFに移行しておらず、Local Storage Operatorのみで作成していたので、Localvolumeリソースがあります。
ODF用には、storage nodeの追加ディスクで、ODFがlocalvolumesetを作成しているので、それに関するPVが存在します。
```bash
[root@bastion-01 ~]# oc get pod -n openshift-local-storage -o wide
NAME                                     READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE   READINESS GATES
diskmaker-discovery-2t98b                2/2     Running   22         74d   10.131.0.6    worker-02    <none>           <none>
diskmaker-discovery-8hwtb                2/2     Running   22         74d   10.131.2.3    worker-01    <none>           <none>
diskmaker-discovery-bclhw                2/2     Running   22         74d   10.128.4.5    storage-01   <none>           <none>
diskmaker-discovery-cv27d                2/2     Running   12         64d   10.128.2.4    infra-02     <none>           <none>
diskmaker-discovery-f7whm                2/2     Running   16         64d   10.130.2.2    infra-01     <none>           <none>
diskmaker-discovery-jqc5h                2/2     Running   22         67d   10.129.2.3    infra-03     <none>           <none>
diskmaker-discovery-m4nvp                2/2     Running   24         74d   10.129.4.5    storage-02   <none>           <none>
diskmaker-discovery-wdkv5                2/2     Running   22         74d   10.130.4.3    storage-03   <none>           <none>
diskmaker-manager-2v4zh                  2/2     Running   4          44d   10.130.4.4    storage-03   <none>           <none>
diskmaker-manager-8q8q7                  2/2     Running   4          44d   10.129.4.2    storage-02   <none>           <none>
diskmaker-manager-bqfhw                  2/2     Running   4          44d   10.130.2.6    infra-01     <none>           <none>
diskmaker-manager-fdh9f                  2/2     Running   4          44d   10.128.2.3    infra-02     <none>           <none>
diskmaker-manager-gjvhf                  2/2     Running   4          44d   10.129.2.5    infra-03     <none>           <none>
diskmaker-manager-tf7zw                  2/2     Running   4          44d   10.128.4.3    storage-01   <none>           <none>
local-storage-operator-98d79687d-czvvm   1/1     Running   0          34m   10.130.2.14   infra-01     <none>           <none>
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get localvolume -n openshift-local-storage
NAME                           AGE
localvolume-alertmanagermain   220d
localvolume-prometheusk8s      220d
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get localvolumesets -n openshift-local-storage
NAME         STORAGECLASS   PROVISIONED   AGE
localblock   localblock     3             44d
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                                           STORAGECLASS                  REASON   AGE
image-registry-storage                     100Gi      RWX            Retain           Bound       openshift-image-registry/image-registry-storage                 image-registry                         221d
local-pv-13e978f0                          40Gi       RWO            Delete           Available                                                                   local-prometheusk8s                    220d
local-pv-6a3a9d54                          40Gi       RWO            Delete           Bound       openshift-monitoring/prometheus-k8s-db-prometheus-k8s-1         local-prometheusk8s                    220d
local-pv-6b3c4558                          1Ti        RWO            Delete           Bound       openshift-storage/ocs-deviceset-localblock-0-data-022zww        localblock                             44d
local-pv-6cb91dfa                          10Gi       RWO            Delete           Bound       openshift-monitoring/alertmanager-main-db-alertmanager-main-1   local-alertmanagermain                 220d
local-pv-d94c27a1                          1Ti        RWO            Delete           Bound       openshift-storage/ocs-deviceset-localblock-0-data-1mpknn        localblock                             44d
local-pv-e646c476                          40Gi       RWO            Delete           Bound       openshift-monitoring/prometheus-k8s-db-prometheus-k8s-0         local-prometheusk8s                    220d
local-pv-faa39169                          1Ti        RWO            Delete           Bound       openshift-storage/ocs-deviceset-localblock-0-data-2mz7zn        localblock                             44d
local-pv-fc84cac                           10Gi       RWO            Delete           Bound       openshift-monitoring/alertmanager-main-db-alertmanager-main-0   local-alertmanagermain                 220d
pvc-1efa22ea-6ceb-4ca1-96dc-28538c711e6d   150Gi      RWO            Delete           Bound       openshift-logging/wal-logging-lokistack-ingester-1              ocs-storagecluster-ceph-rbd            44d
pvc-3e3abe0f-90fb-4116-b643-f7dcada73612   50Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-index-gateway-1     ocs-storagecluster-ceph-rbd            44d
pvc-43fca63a-21cf-4b88-936b-bec1fa58a027   100Gi      RWO            Delete           Bound       openshift-storage/loki-backingstore-noobaa-pvc-40a78edf         ocs-storagecluster-ceph-rbd            44d
pvc-5517c083-4115-438d-850e-69e8748f0fb0   10Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-ingester-1          ocs-storagecluster-ceph-rbd            44d
pvc-63859b3f-ad89-4470-a481-e9bfaf5aaa03   100Gi      RWO            Delete           Bound       openshift-storage/loki-backingstore-noobaa-pvc-933a9ff4         ocs-storagecluster-ceph-rbd            44d
pvc-a1274593-7864-4ce4-826f-6a1c809dbc76   10Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-compactor-0         ocs-storagecluster-ceph-rbd            44d
pvc-a5937d8a-6bbb-4914-b8c9-cccf3048f87e   100Gi      RWO            Delete           Bound       openshift-storage/loki-backingstore-noobaa-pvc-3fea5969         ocs-storagecluster-ceph-rbd            44d
pvc-b96220ee-4671-4b6e-bde2-2449c9a5016d   150Gi      RWO            Delete           Bound       openshift-logging/wal-logging-lokistack-ingester-0              ocs-storagecluster-ceph-rbd            44d
pvc-c437bda3-1431-4124-82ae-662ee2a54a33   50Gi       RWO            Delete           Bound       openshift-storage/db-noobaa-db-pg-0                             ocs-storagecluster-ceph-rbd            44d
pvc-d3d6b2b2-e14d-4a5c-9a46-d1b668ce8bd5   50Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-index-gateway-0     ocs-storagecluster-ceph-rbd            44d
pvc-f97a47b6-b76c-41be-b8d5-0f4273dc2111   10Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-ingester-0          ocs-storagecluster-ceph-rbd            44d
[root@bastion-01 ~]#
```


**アップデート**

CLIでSubscriptionリソースのChennelを更新しても良いのですが、ここではGUIでやりました。

OCPのGUIのメニューからOperator->インストール済みのOperatorを選択し、画面でopenshift-local-storageプロジェクトを選択し、表示されるLocal Storage Operatorのエントリーをクリックします。
サブスクリプションタブを選択します。
![2023-02-18-21-35-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/f596a690-38ae-5dd0-cdbc-259292e3fb30.png)


サブスクリプション更新チャネルの`stable`のリンクをクリックします。
![2023-02-18-21-37-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/5b987b00-20e0-3356-1fa9-97b7b103502c.png)

このLocal Storage Operatorは更新チャネルが`stable`しかありませんでした。
また最新のバージョンとして`local-storage-operator.v4.12.0-202302061702`が表示されていました。
![2023-02-18-21-37-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/496bc98c-d440-9daa-3fe6-212675a94bc9.png)

今回は「更新の承認」を`Manual`にしているので、そのままではアップデートされません。アップグレードのステータスの横にある「1件に承認が必要」のリンクをクリックします。  
![2023-02-18-21-39-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/396d6718-27e7-9f2e-bcad-7e9d7a3cd876.png)

該当InstallPlanの画面が表示されます。ただ、このInstallPlanのバージョンが、先ほど表示された最新のバージョンより小さいので、このInstallPlanを削除して、あたらしInstallPlanを作成します。
左上の`InstallPlan`のリンクをクリックします。
![2023-02-18-21-39-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/7bc5f99f-7c8b-e912-ef44-92fa0ffe60bb.png)

InstallPlanの一覧が表示されます。
ステータスが`RequiresApproval`で、バージョンが`local-storage-operator.4.11.0-202212070335`のInstallPlanを削除します。
右側の3点のリンクをクリックし「InstallPlanの削除」をクリックします。
![2023-02-18-21-41-36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/6bb18096-a4c8-fa59-75cd-379621659dd1.png)

確認のメッセージが出たら「削除」をクリックします。
![2023-02-18-21-43-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/71da84ca-301b-d781-2f43-c3484b869932.png)

先ほど`stable`のChannelで表示されていた、作業時の最新のCSVバージョンの`local-storage-operator.v4.12.0-202302061702`のInstallPlanが表示されます。
このInstallPlanのリンクをクリックします。
![2023-02-18-21-43-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/925279aa-751e-cd74-2bc8-620e468e0626.png)

該当InstallPlanの画面の「手動のInstallPlanの確認」欄の「InstallPlanのプレビュー」をクリックします。
![2023-02-18-21-45-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/1b5042be-a58e-3149-276d-062966de6a46.png)

アップデート対象のものを画面下部で確認し、「承認」をクリックします。
![2023-02-18-21-46-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/b817d846-2917-342b-27ea-6e1a218f434a.png)

InstallPlanが適用され、アップデートが始まります。
![2023-02-18-21-47-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/7a6360c0-c13c-9502-1981-203091c588c7.png)

しばらくするとLocal Storage Operatorのアップデートが完了しインストール済みのバージョンが先ほど承認したInstallPlanに表示されていたバージョンに変わっています。
![2023-02-18-21-47-46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/bc1cc66f-ef7b-30a7-46b4-ff2bc5d861fe.png)

**アップデート後の確認**

local-storage operatorのChannelは`stable`のままです。  
csvのVERSIONは、`v4.12.0-202302061702`というバージョンになっています。

```bash
[root@bastion-01 ~]# oc get sub -n openshift-local-storage
NAME                     PACKAGE                  SOURCE             CHANNEL
local-storage-operator   local-storage-operator   redhat-operators   stable
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get csv -n openshift-local-storage
NAME                                          DISPLAY                            VERSION               REPLACES                                     PHASE
elasticsearch-operator.5.5.5                  OpenShift Elasticsearch Operator   5.5.5                 elasticsearch-operator.5.4.9                 Succeeded
local-storage-operator.v4.12.0-202302061702   Local Storage                      4.12.0-202302061702   local-storage-operator.4.11.0-202211072116   Succeeded
loki-operator.5.5.5                           Loki Operator                      5.5.5                                                              Succeeded
[root@bastion-01 ~]#
```

4.12.0のInstallPlanのAPPROVED欄が`true`になっています。
アップデート直後なので`stable` Channelのより新しいInstallPlanはまだない状態です。

```bash
[root@bastion-01 ~]# oc get installplan -n openshift-local-storage
NAME            CSV                                           APPROVAL    APPROVED
install-f2rfw   local-storage-operator.4.11.0-202211072116    Manual      true
install-fq5qr   local-storage-operator.4.8.0-202206281335     Automatic   true
install-rz8lq   local-storage-operator.v4.12.0-202302061702   Manual      true
install-zdsfg   local-storage-operator.4.10.0-202207192148    Manual      true
install-zslmm   local-storage-operator.4.10.0-202206291026    Manual      true
[root@bastion-01 ~]#
```

Local Storage OperatorのPodは再作成されています。
モニタリング用のPVやLocalvolumeリソース、ODF用のlocalvolumesetなども正常に保持されています。

```bash
[root@bastion-01 ~]# oc get pod -n openshift-local-storage -o wide
NAME                                     READY   STATUS    RESTARTS   AGE     IP            NODE         NOMINATED NODE   READINESS GATES
diskmaker-discovery-6c4n2                2/2     Running   0          97s     10.128.4.23   storage-01   <none>           <none>
diskmaker-discovery-b55pk                2/2     Running   0          2m16s   10.128.2.25   infra-02     <none>           <none>
diskmaker-discovery-cg89v                2/2     Running   0          84s     10.130.2.22   infra-01     <none>           <none>
diskmaker-discovery-h7vv7                2/2     Running   0          101s    10.129.2.24   infra-03     <none>           <none>
diskmaker-discovery-j7mrk                2/2     Running   0          92s     10.131.2.12   worker-01    <none>           <none>
diskmaker-discovery-lldjg                2/2     Running   0          2m7s    10.129.4.16   storage-02   <none>           <none>
diskmaker-discovery-qtwgr                2/2     Running   0          119s    10.130.4.10   storage-03   <none>           <none>
diskmaker-discovery-v9n9j                2/2     Running   0          110s    10.131.0.21   worker-02    <none>           <none>
diskmaker-manager-5snlc                  2/2     Running   0          116s    10.128.2.26   infra-02     <none>           <none>
diskmaker-manager-8r2s4                  2/2     Running   0          2m8s    10.130.2.21   infra-01     <none>           <none>
diskmaker-manager-bnf59                  2/2     Running   0          2m16s   10.128.4.22   storage-01   <none>           <none>
diskmaker-manager-k9xn5                  2/2     Running   0          2m      10.129.4.17   storage-02   <none>           <none>
diskmaker-manager-kbxs9                  2/2     Running   0          103s    10.130.4.11   storage-03   <none>           <none>
diskmaker-manager-tjths                  2/2     Running   0          112s    10.129.2.23   infra-03     <none>           <none>
local-storage-operator-585f8d5b5-wqqld   1/1     Running   0          4m47s   10.130.2.20   infra-01     <none>           <none>
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get localvolume -n openshift-local-storage
NAME                           AGE
localvolume-alertmanagermain   220d
localvolume-prometheusk8s      220d
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get localvolumesets -n openshift-local-storage
NAME         STORAGECLASS   PROVISIONED   AGE
localblock   localblock     3             44d
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                                                           STORAGECLASS                  REASON   AGE
image-registry-storage                     100Gi      RWX            Retain           Bound       openshift-image-registry/image-registry-storage                 image-registry                         221d
local-pv-13e978f0                          40Gi       RWO            Delete           Available                                                                   local-prometheusk8s                    220d
local-pv-6a3a9d54                          40Gi       RWO            Delete           Bound       openshift-monitoring/prometheus-k8s-db-prometheus-k8s-1         local-prometheusk8s                    220d
local-pv-6b3c4558                          1Ti        RWO            Delete           Bound       openshift-storage/ocs-deviceset-localblock-0-data-022zww        localblock                             44d
local-pv-6cb91dfa                          10Gi       RWO            Delete           Bound       openshift-monitoring/alertmanager-main-db-alertmanager-main-1   local-alertmanagermain                 220d
local-pv-d94c27a1                          1Ti        RWO            Delete           Bound       openshift-storage/ocs-deviceset-localblock-0-data-1mpknn        localblock                             44d
local-pv-e646c476                          40Gi       RWO            Delete           Bound       openshift-monitoring/prometheus-k8s-db-prometheus-k8s-0         local-prometheusk8s                    220d
local-pv-faa39169                          1Ti        RWO            Delete           Bound       openshift-storage/ocs-deviceset-localblock-0-data-2mz7zn        localblock                             44d
local-pv-fc84cac                           10Gi       RWO            Delete           Bound       openshift-monitoring/alertmanager-main-db-alertmanager-main-0   local-alertmanagermain                 220d
pvc-1efa22ea-6ceb-4ca1-96dc-28538c711e6d   150Gi      RWO            Delete           Bound       openshift-logging/wal-logging-lokistack-ingester-1              ocs-storagecluster-ceph-rbd            44d
pvc-3e3abe0f-90fb-4116-b643-f7dcada73612   50Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-index-gateway-1     ocs-storagecluster-ceph-rbd            44d
pvc-43fca63a-21cf-4b88-936b-bec1fa58a027   100Gi      RWO            Delete           Bound       openshift-storage/loki-backingstore-noobaa-pvc-40a78edf         ocs-storagecluster-ceph-rbd            44d
pvc-5517c083-4115-438d-850e-69e8748f0fb0   10Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-ingester-1          ocs-storagecluster-ceph-rbd            44d
pvc-63859b3f-ad89-4470-a481-e9bfaf5aaa03   100Gi      RWO            Delete           Bound       openshift-storage/loki-backingstore-noobaa-pvc-933a9ff4         ocs-storagecluster-ceph-rbd            44d
pvc-a1274593-7864-4ce4-826f-6a1c809dbc76   10Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-compactor-0         ocs-storagecluster-ceph-rbd            44d
pvc-a5937d8a-6bbb-4914-b8c9-cccf3048f87e   100Gi      RWO            Delete           Bound       openshift-storage/loki-backingstore-noobaa-pvc-3fea5969         ocs-storagecluster-ceph-rbd            44d
pvc-b96220ee-4671-4b6e-bde2-2449c9a5016d   150Gi      RWO            Delete           Bound       openshift-logging/wal-logging-lokistack-ingester-0              ocs-storagecluster-ceph-rbd            44d
pvc-c437bda3-1431-4124-82ae-662ee2a54a33   50Gi       RWO            Delete           Bound       openshift-storage/db-noobaa-db-pg-0                             ocs-storagecluster-ceph-rbd            44d
pvc-d3d6b2b2-e14d-4a5c-9a46-d1b668ce8bd5   50Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-index-gateway-0     ocs-storagecluster-ceph-rbd            44d
pvc-f97a47b6-b76c-41be-b8d5-0f4273dc2111   10Gi       RWO            Delete           Bound       openshift-logging/storage-logging-lokistack-ingester-0          ocs-storagecluster-ceph-rbd            44d
[root@bastion-01 ~]#
```


#### OpenShift Data Foundationのアップデート

ODFも同様な手順でアップデートします。
手順は以下の通りに実施します。
[ODF 4.12 Docs / OpenShift Data Foundation の更新 / 3. Red Hat OpenShift Data Foundation 4.11 から 4.12 への更新](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_data_foundation/4.12/html-single/updating_openshift_data_foundation/index#updating-ocs-to-odf_rhodf)

**アップデート前の確認**

[ODF 4.12 Docs / OpenShift Data Foundation の更新 / 3. Red Hat OpenShift Data Foundation 4.11 から 4.12 への更新](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_data_foundation/4.12/html-single/updating_openshift_data_foundation/index#updating-ocs-to-odf_rhodf)に記載のあるように、ステータスが正常なことを確認してからアップデートをします。

(この検証環境はアップデート前から5.5のLokiの使用するMSGのオブジェクトストレージが容量不足でエラーになっている状況なので、一旦ステータスやアップデート後の状況は無視して、Operatorのアップデートができることのみ確認します。)
![2023-02-18-22-01-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/b7c60195-8a6a-a4d6-004d-0a7cdd611e83.png)

OpenShift Data Foundation Operator自体は、`OCP 4.12`の削除されたAPIの確認でも確認していたように、rook関連のcronjobのAPIが削除されて新しいAPIに置き換える必要がありました。

OpenShift Data Foundation OperatorのSubscription画面では、それに関連すると思われるメッセージが表示されていました。またInstallPlanも1件が失敗となっていました。
![2023-02-18-22-04-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/c3a0848a-ff19-4e88-6aca-684cfab29bf0.png)
![2023-02-18-22-10-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/97ae3dc9-837a-6a4e-6f47-43caa437bac9.png)

ここは一旦無視してアップデートします。

**アップデート**

サブスクリプション更新チャネルの`stable-4.11`のリンクをクリックします。
![2023-02-18-22-15-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/100e93ea-0146-9e8c-1f23-c8329c5c972c.png)

サブスクリプション更新チャネルの変更で`stable-4.12`を選択し保存をクリックします。
また最新のバージョンとして`odf-operator.v4.12.0`が表示されていました。
![2023-02-18-22-15-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/daecec36-434f-2491-ae28-f74806fa4917.png)

今回は「更新の承認」を`Manual`にしているので、そのままではアップデートされません。アップグレードのステータスの横にある「1件が失敗」のリンクをクリックします。  
![2023-02-18-22-16-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/49b92a00-4695-7068-0f64-92b14a5f2b1e.png)

該当InstallPlanの画面が表示されます。ただ、このInstallPlanのバージョンが、先ほど表示された最新のバージョンより小さい、かつ、失敗しているのでこのInstallPlanを削除して、あたらしInstallPlanを作成します。
左上の`InstallPlan`のリンクをクリックします。
![2023-02-18-22-17-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/f79fafdd-2c2c-979d-ea4d-e1d0a98ad83b.png)

InstallPlanの一覧が表示されます。
ステータスが`Failed`のInstallPlanを削除します。
右側の3点のリンクをクリックし「InstallPlanの削除」をクリックします。
![2023-02-18-22-17-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/7db69d5a-ce8e-8fb1-754c-70cf11b68122.png)

確認のメッセージが出たら「削除」をクリックします。
![2023-02-18-22-17-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/09f4b585-c0f1-dfbd-80ed-ad91d245ed6d.png)

先ほど`stable-4.12`のChannelで表示されていた、作業時の最新のCSVバージョンの`odf-operator.v4.12.0`のInstallPlanが表示されます。

このInstallPlanのリンクをクリックします。
![2023-02-18-22-18-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/0c3ba7ac-5579-30c4-ef5a-4f4be202a907.png)

該当InstallPlanの画面の「手動のInstallPlanの確認」欄の「InstallPlanのプレビュー」をクリックします。
![2023-02-18-22-19-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/56eac6b6-62ff-1794-a08f-e560912b40de.png)

アップデート対象のものを画面下部で確認し、「承認」をクリックします。
![2023-02-18-22-19-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/558206c8-c4ad-4d62-3a6c-bf2bd157b83d.png)

InstallPlanが適用され、アップデートが始まります。
![2023-02-18-22-19-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/aa0a98be-f349-9d5f-fd51-fd369109d705.png)

しばらくするとOpenShift Data Foundation Operatorのアップデートが完了しインストール済みのバージョンが先ほど承認したInstallPlanに表示されていたバージョンに変わっています。

また、先ほど表示されていたOCP 4.12の削除されたcronjobのAPIに関連するエラーメッセージも消えていました。
![2023-02-18-22-20-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/745d8c80-211e-ee42-57af-af64543d2f58.png)

**アップデート後の確認**

先ほどインストールされたInstallPlanを見ると、関連した幾つかのCSVがあり、今回はodf-operatorだけ4.12.0になり、ocs-operator、mcg-operator、odf-csi-addons-operatorは、4.11.5のままで、全てが正常にアップデートされいないようでした。
![2023-02-18-22-25-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/2eefa26b-987d-4d70-2362-8c807365bd52.png)

```bash
[root@bastion-01 ~]# oc get sub -n openshift-storage
NAME                                                                         PACKAGE                   SOURCE             CHANNEL
mcg-operator-stable-4.11-redhat-operators-openshift-marketplace              mcg-operator              redhat-operators   stable-4.12
ocs-operator-stable-4.11-redhat-operators-openshift-marketplace              ocs-operator              redhat-operators   stable-4.12
odf-csi-addons-operator-stable-4.11-redhat-operators-openshift-marketplace   odf-csi-addons-operator   redhat-operators   stable-4.12
odf-operator                                                                 odf-operator              redhat-operators   stable-4.12
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get csv -n openshift-storage
NAME                              DISPLAY                            VERSION   REPLACES                          PHASE
elasticsearch-operator.5.5.5      OpenShift Elasticsearch Operator   5.5.5     elasticsearch-operator.5.4.9      Succeeded
loki-operator.5.5.5               Loki Operator                      5.5.5                                       Succeeded
mcg-operator.v4.11.5              NooBaa Operator                    4.11.5    mcg-operator.v4.11.4              Succeeded
ocs-operator.v4.11.4              OpenShift Container Storage        4.11.4    ocs-operator.v4.11.3              Replacing
ocs-operator.v4.11.5              OpenShift Container Storage        4.11.5    ocs-operator.v4.11.4              Pending
odf-csi-addons-operator.v4.11.5   CSI Addons                         4.11.5    odf-csi-addons-operator.v4.11.4   Succeeded
odf-operator.v4.12.0              OpenShift Data Foundation          4.12.0    odf-operator.v4.11.4              Succeeded
[root@bastion-01 ~]#
```

ずっとocs-operator.v4.11.4がずっと`Replacing`で、v4.11.5が`Pending`になっていたので、v4.11.4を手動で削除しました。
```bash
[root@bastion-01 ~]# oc delete csv -n openshift-storage ocs-operator.v4.11.4
clusterserviceversion.operators.coreos.com "ocs-operator.v4.11.4" deleted
[root@bastion-01 ~]#
```

しばらくすると、odf-operatorだけではなく、ocs-operator、mcg-operator、odf-csi-addons-operatorのCSVも`4.12.0`になりました。
```bash
[root@bastion-01 ~]# oc get sub -n openshift-storage
NAME                                                                         PACKAGE                   SOURCE             CHANNEL
mcg-operator-stable-4.11-redhat-operators-openshift-marketplace              mcg-operator              redhat-operators   stable-4.12
ocs-operator-stable-4.11-redhat-operators-openshift-marketplace              ocs-operator              redhat-operators   stable-4.12
odf-csi-addons-operator-stable-4.11-redhat-operators-openshift-marketplace   odf-csi-addons-operator   redhat-operators   stable-4.12
odf-operator                                                                 odf-operator              redhat-operators   stable-4.12
[root@bastion-01 ~]#
```
```bash
[root@bastion-01 ~]# oc get csv -n openshift-storage
NAME                              DISPLAY                            VERSION   REPLACES                          PHASE
elasticsearch-operator.5.5.5      OpenShift Elasticsearch Operator   5.5.5     elasticsearch-operator.5.4.9      Succeeded
loki-operator.5.5.5               Loki Operator                      5.5.5                                       Succeeded
mcg-operator.v4.12.0              NooBaa Operator                    4.12.0    mcg-operator.v4.11.5              Succeeded
ocs-operator.v4.12.0              OpenShift Container Storage        4.12.0    ocs-operator.v4.11.5              Succeeded
odf-csi-addons-operator.v4.12.0   CSI Addons                         4.12.0    odf-csi-addons-operator.v4.11.5   Succeeded
odf-operator.v4.12.0              OpenShift Data Foundation          4.12.0    odf-operator.v4.11.4              Succeeded
[root@bastion-01 ~]#
```


#### Loki Operator、Red Hat OpenShift Loggingをアップデート

Loki OperatorとRed Hat OpenShift Loggingをアップデートします。

Elasticsearch OperatorとRed Hat OpenShift Loggingの時も、Elasticsearch Operator -> Red Hat OpenShift Loggingの順番でアップデートする必要があったので、今回もLoki Operator -> Red Hat OpenShift Loggingの順番でアップデートしました。

(Loki Operatorのアップデート手順はドキュメントには載っていませんでしたが、普通に他と同じやり方でやっています。)

(あとはもっと早くやっておけばよかったですが、Lokiにしてもう不要だったElasticsearch Operatorもこのタイミングでちゃんと消しておきました。(手順は割愛))
[OCP 4.12 Docs / ロギング / 14. OpenShift Logging のアンインストール / 14.1. Red Hat のロギングサブシステムのアンインストール](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.12/html-single/logging/index#cluster-logging-uninstall_cluster-logging-uninstall)
![2023-02-20-20-31-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/26113c24-af4a-3f2a-a340-80da3a375789.png)

**アップデート前の確認**

(こちらもこの検証環境の問題でアップデート前のLokiのステータスが正常ではないので、ただ単にOperatorのアップデートの手順のみ記載します。)

**アップデート (Loki Operator)**

OCPのGUIのメニューからOperator->インストール済みのOperatorを選択し、画面でopenshift-operators-redhatプロジェクトを選択し、表示されるLoki Operatorのエントリーをクリックします。

サブスクリプションタブを選択します。

サブスクリプション画面で、更新チャネルの`stable-5.5`のリンクをクリックします。
![2023-02-20-20-58-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/35fed968-6254-939e-245c-66de023177b6.png)

サブスクリプション更新チャネルの変更で`stable-5.6`を選択し保存をクリックします。
![2023-02-20-21-00-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/601f6211-57a5-0ec8-ae43-f2ba6bdb3546.png)

更新チャネルが`stable-5.6`になりました。  

今回は「更新の承認」を`Manual`にしているので、そのままではアップデートされません。`stable-5.5`の際のまだ承認されていなかったInstallPlanがあるので削除します。`1件の承認が必要`のリンクをクリックします。
![2023-02-20-21-03-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/0dde97c0-d6b7-fae5-3a5f-1b00a97daee5.png)

該当InstallPlanの画面が表示されます。このInstallPlanは`stable-5.5`の時のものなのでこのInstallPlanを削除して、`stable-5.6`の最新のInstallPlanを作成します。
左上の`InstallPlan`のリンクをクリックします。
![2023-02-20-21-04-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/fb83807b-6c31-2015-1b6b-11f6f02e20a9.png)

InstallPlanの一覧が表示されます。
ステータスが`RequiresApproval`のInstallPlanを削除します。
右側の3点のリンクをクリックし「InstallPlanの削除」をクリックします。
![2023-02-20-21-05-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/4b94addd-82ca-9574-b13b-5af120a4e2ac.png)

確認のメッセージが出たら「削除」をクリックします。
![2023-02-20-21-06-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/9b287b24-1ea1-e168-a172-eb25571997d8.png)

先ほど`stable-5.6`のChannelで表示されていた、作業時の最新のCSVバージョンの`loki-operator.v5.6.2`のInstallPlanが表示されます。
![2023-02-20-21-06-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/09f620ae-1dee-cdef-e9fd-33d033677be1.png)

該当InstallPlanの画面の「手動のInstallPlanの確認」欄の「InstallPlanのプレビュー」をクリックします。
![2023-02-20-21-06-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/a1a62af3-0934-3274-a825-e42d2ac5a22e.png)

アップデート対象のものを画面下部で確認し、承認をクリックします。
![2023-02-20-21-07-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/0604ebd9-3319-53ee-c29a-318f159d4ed8.png)

InstallPlanが適用され、アップデートが始まります。
![2023-02-20-21-07-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/4db28799-8b92-714d-6a1a-49156b256cc2.png)

しばらくするとLoki Operatorのアップデートが完了しインストール済みのバージョンが先ほど承認したInstallPlanに表示されていたバージョンに変わっています。
![2023-02-20-21-08-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/df82d399-6bd9-15b2-715e-a7b55017dd54.png)


**アップデート後の確認 (Loki Operator)**

Loki OperatorののChannelは`stable-5.6`になっています。  
csvのVERSIONは、`loki-operator.v5.6.2`というバージョンになっています。
```bash
[root@bastion-01 ~]# oc get sub -n openshift-operators-redhat
NAME            PACKAGE         SOURCE             CHANNEL
loki-operator   loki-operator   redhat-operators   stable-5.6
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get csv -n openshift-operators-redhat
NAME                   DISPLAY         VERSION   REPLACES              PHASE
loki-operator.v5.6.2   Loki Operator   5.6.2     loki-operator.5.5.5   Succeeded
[root@bastion-01 ~]#
```

5.6のInstallPlanのAPPROVED欄が`true`になっています。
アップデート直後なので`stable-5.6` Channelのより新しいInstallPlanはまだない状態です。
```bash
[root@bastion-01 ~]# oc get installplan -n openshift-operators-redhat
NAME            CSV                    APPROVAL   APPROVED
install-l5xp2   loki-operator.v5.6.2   Manual     true
install-xj6j8   loki-operator.5.5.5    Manual     true
[root@bastion-01 ~]#
```

OperatorのPodは作り直されています。
```bash
[root@bastion-01 ~]# oc get pod -n openshift-operators-redhat
NAME                                                READY   STATUS    RESTARTS   AGE
loki-operator-controller-manager-6877778965-4k2s4   2/2     Running   0          2m40s
[root@bastion-01 ~]#
```


**アップデート (Red Hat OpenShift Logging)**

OCPのGUIのメニューからOperator->インストール済みのOperatorを選択し、画面でopenshift-logingプロジェクトを選択し、表示されるRed Hat OpenShift Logging Operatorのエントリーをクリックします。
サブスクリプションタブを選択します。

サブスクリプション画面で、更新チャネルの`stable-5.5`のリンクをクリックします。
![2023-02-20-21-12-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/e3a07049-9999-566a-879a-6fcf57eb4db2.png)



サブスクリプション更新チャネルの変更で`stable-5.6`を選択し保存をクリックします。
![2023-02-20-21-12-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/75120df0-974e-d73e-d18e-eb93d75c8452.png)

更新チャネルが`stable-5.6`になりました。  

今回は「更新の承認」を`Manual`にしているので、そのままではアップデートされません。`stable-5.5`の際のまだ承認されていなかったInstallPlanがあるので削除します。`1件の承認が必要`のリンクをクリックします。
![2023-02-20-21-13-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/eaf324bb-095c-154d-a5f7-1f0ee82f1cd0.png)

該当InstallPlanの画面が表示されます。このInstallPlanは`stable-5.5`の時のものなのでこのInstallPlanを削除して、`stable-5.6`の最新のInstallPlanを作成します。
左上の`InstallPlan`のリンクをクリックします。
![2023-02-20-21-14-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/1d817be7-e7e2-f232-5fc0-700d3465b813.png)

InstallPlanの一覧が表示されます。

ステータスが`RequiresApproval`のInstallPlanを削除します。
右側の3点のリンクをクリックし「InstallPlanの削除」をクリックします。
![2023-02-20-21-14-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/0f7dc284-9289-ae10-0fd5-700806fd54ee.png)

確認のメッセージが出たら「削除」をクリックします。
![2023-02-20-21-15-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/c74f1235-7647-197d-7584-b7ceb883213e.png)

先ほど`stable-5.6`のChannelで表示されていた、作業時の最新のCSVバージョンの`cluster-logging.v5.6.2`のInstallPlanが表示されます。
![2023-02-20-21-15-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/ff6957f1-898c-0007-1be4-e585cb4ee536.png)

該当InstallPlanの画面の「手動のInstallPlanの確認」欄の「InstallPlanのプレビュー」をクリックします。
![2023-02-20-21-16-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/f9d58b43-e4e8-5c46-2df3-6fef7a84648e.png)

アップデート対象のものを画面下部で確認し、承認をクリックします。
![2023-02-20-21-16-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/4be8885f-a83e-f581-a3db-6fb53a19273e.png)

InstallPlanが適用され、アップデートが始まります。
![2023-02-20-21-16-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/3d27407f-46fb-d656-9f40-8977c4a4c004.png)

しばらくするとRed Hat OpenShift Logging Operatorのアップデートが完了しインストール済みのバージョンが先ほど承認したInstallPlanに表示されていたバージョンに変わっています。
![2023-02-20-21-17-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/89198526-cabe-e6d9-e7c3-91fcdd1d31df.png)

**アップデート後の確認 (Red Hat OpenShift Logging)**

Red Hat OpenShift Loging OperatorののChannelは`stable-5.6`になっています。  
csvのVERSIONは、`5.6.2`というバージョンになっています。
```bash
[root@bastion-01 ~]# oc get sub -n openshift-logging
NAME              PACKAGE           SOURCE             CHANNEL
cluster-logging   cluster-logging   redhat-operators   stable-5.6
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get csv -n openshift-logging
NAME                     DISPLAY                     VERSION   REPLACES                PHASE
cluster-logging.v5.6.2   Red Hat OpenShift Logging   5.6.2     cluster-logging.5.5.5   Succeeded
loki-operator.v5.6.2     Loki Operator               5.6.2     loki-operator.5.5.5     Succeeded
[root@bastion-01 ~]#
```

5.6のInstallPlanのAPPROVED欄が`true`になっています。
アップデート直後なので`stable-5.6` Channelのより新しいInstallPlanはまだない状態です。

```bash
[root@bastion-01 ~]# oc get installplan -n openshift-logging
NAME            CSV                      APPROVAL    APPROVED
install-4pnl7   cluster-logging.v5.6.2   Manual      true
install-lr49f   cluster-logging.5.4.2    Automatic   true
install-v2gq7   cluster-logging.5.5.5    Manual      true
[root@bastion-01 ~]#
```

Cluster Loggingインスタンスの状態を確認します。

(こちらはバージョンアップ前も正常ではなかったので、ここでは割愛します。。あとでCluster Loggingのインスタンスは一旦削除して、Loki用のオブジェクトストレージを再作成して、再度Lokiを使用したCluster Loggingインスタンスを作成します。。Cluster Loggingの5.6からはLokiのデータ保存期間を設定できるので、ディスクが溢れないようにできます。)

```bash
[root@bastion-01 ~]# oc get clusterlogging -n openshift-logging
NAME       MANAGEMENT STATE
instance   Managed
[root@bastion-01 ~]#
[root@bastion-01 ~]# oc get pod -n openshift-logging
NAME                                                READY   STATUS             RESTARTS        AGE
cluster-logging-operator-75f4d8848d-gl6w7           1/1     Running            0               106s
#(以下略、この環境では幾つか正常でないPodがあるけど環境依存なので省略)
```
![2023-02-20-21-25-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/332622/9d76a803-19c6-e5fd-369e-a49741cb3b25.png)