OpenShiftでProgressive Deliveryやってみた！（Argo Rollouts基本編-GUI）

# 背景
こちらの記事は以下の記事の続きとなりますので、背景や前提となる作業は以下の記事をご参照ください。

[OpenShiftでProgressive Deliveryやってみた！（Argo Rollouts基礎編-CLI）](https://qiita.com/strada/items/a498c7f4aea2c53016eb)

# 試行
マニュアルの以下のページに記載されている通り`Argo Rollouts Kubectl plugin`で`dashboard`コマンドを利用することで、コマンドを実行した端末の3100番ポートからダッシュボードにアクセスすることが出来ます。

[UI Dashboard](https://argoproj.github.io/argo-rollouts/dashboard/)

[前回の記事](https://qiita.com/strada/items/a498c7f4aea2c53016eb#argo-rollouts-kubectl-plugin)に記載している通り`Argo Rollouts Kubectl plugin`は公開されているコンテナ・イメージを使用して実行するため、`dashboard`コマンドを指定して`docker run`する際にコンテナの3100番ポートをホスト側(WIndows)の3100番ポートに公開することでダッシュボードにアクセスすることが出来ます。

- `dashboardコマンドを実行`

```
PS D:\git> docker run -p 3100:3100 -v C:\Users\YASUYUKIKUBOTA\.kube\config:/.kube/config quay.io/argoproj/kubectl-argo-rollouts:master dashboard --insecure-skip-tls-verify
time="2021-07-08T04:59:47Z" level=info msg="Argo Rollouts Dashboard is now available at localhost 3100"
```

- ダッシュボード(localhost:3100)にアクセス

以下のようにダッシュボードにアクセスすると指定された名前空間の`Rollout`リソースが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/45c0e1df-a348-07bb-ab1c-2ffaf0e40a2d.png)

- `Rollout`の詳細を表示

表示されたRolloutをクリックして詳細を表示することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/4e325d78-1fa1-36fe-cb5b-1f9ba523aace.png)

この情報は前回の記事内で`get rollout`コマンドを実行してCUIで表示していた以下の情報とほぼ同等ですが、ダッシュボードのほうが以下の情報が追加で表示されるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/b0eb3381-e2d9-c66a-f292-ad333487945f.png)

    - 最後に指定されたコンテナ・イメージのURI
    - 各Revisionが参照するコンテナ・イメージのURI
    - `Rollout`リソースで指定したStepsの詳細

さらに、前回の記事では`Argo Rollouts Kubectl plugin`のコマンドで実施していた`Promote`や`Abort`についてもGUIのボタンから実行できるので非常に便利です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/59e4f635-243e-8d9e-6d49-cf54eae47728.png)

試しに[前回の`Promote`の手順](https://qiita.com/strada/items/a498c7f4aea2c53016eb#%E8%A9%A6%E8%A1%8C)を実施してみました。

- `Rollout`が参照するコンテナ・イメージの変更

`Containers`セクションの鉛筆マークをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/1717e065-21e4-2257-9c5b-9c5f1d5cf24b.png)

参照しているコンテナ・イメージのタグを`red`から`blue`に変更して、`SAVE`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/89671fa3-70cd-bab0-7ff4-97008c2576e5.png)

`SAVE`ボタンが`SURE?`ボタンに変わるので再びクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/61f5a0af-5445-877c-18d4-28cc823bafe6.png)


- `Rollout`の状況を確認
新しい`Revision 4`が作成されて、重みが20%に設定されたところで`Pause`していることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/cafd4dcc-e411-0ff3-e26e-d9078f017a7b.png)

- `Promote`の実行

`Pause`の状態になると上部のツールバーボタンの`PROMOTE`が活性化されるのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/042a31dd-9315-2f3a-c415-08591397c974.png)

`PROMOTE`ボタンが`SURE?`ボタンに変わるので再びクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/59174901-ffe3-c5b1-0875-ba0507e16a36.png)


- `Rollout`の結果を確認
`Promote`が開始され後続のStepが実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/56bb9fbe-efe4-961f-2acd-393fc5828ed8.png)

しばらくして`Revision 4`の重みが100%になり`stable`になると`Rollout`は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5259/6d1f6fa6-175c-3785-cd52-6b812139a4fc.png)

# まとめ
前回の記事に記載した`Argo Rollouts Kubectl plugin`のコマンドで実施していた作業がすべてダッシュボードのGUIからも実行できることが確認できました。
コマンドを覚える必要がない上に表示される情報もCLIの情報よりも多く便利であることがわかりました。

次の投稿ではPrometheusと連携することでCanaryのメトリクスを分析し、分析結果を元にPromoteするかAbortするのかを自動的に判断させる方法を確認したいと思います。