Oracle Verrazzanoをインストールしてみる

## はじめに
[Verrazzano](https://www.oracle.com/jp/linux/verrazzano/)はOracleが提供する、コンテナ・ワークロードをデプロイ/運用/管理できるコンテナ・プラットフォームです。Kubernetes上で動作し、コンポーネントはデファクト・スタンダードなオープンソースで構成されていて、オンプレミスとクラウドの両方で動作します。  
この記事ではまずVerrazzanoをインストールしてみようと思います。

## 前提
- Verrazzano v1.5
- OKE v1.24.1
※Verrazzanoは[対応しているKubernetesのバージョン](https://verrazzano.io/latest/docs/setup/install/prepare/prereqs/#kubernetes)があるので注意してください。例えばv1.5であれば1.21, 1.22, 1.23, 1.24となります。

## 準備
Verrazzanoのインストールには、
- CLIのインストール
- k8sクラスタのセットアップ

が必要です。k8sクラスタのスペックは、Verrazzanoには`profile`という概念があり、そのprofileをどれにするかで変わります。profileは3つありそれぞれ、
- `dev` : 開発のための環境などに利用するprofile
- `prod` : 本番利用を想定したprofile
- `managed-cluster` : マルチ・クラスタ構成時に管理の対象となるクラスタで利用するprofile

今回は`dev profile`を利用するので[Prerequisites](https://verrazzano.io/latest/docs/setup/install/prepare/prereqs/)を参照すると、
> dev profile - Each node in the cluster should contain at least two CPUs, 16 GB RAM, and 100 GB of disk storage. The entire cluster requires at least six CPUs, 48 GB RAM, and 100 GB of disk storage. In addition, about 52 GB of storage is required for the persistent volumes.

とあるので、これに合わせたk8sクラスタを準備します。

#### CLIのセットアップ
[ドキュメント](https://verrazzano.io/latest/docs/setup/install/prepare/cli-setup/)に合わせてセットアップします。
まずはダウンロードします。
```
$ curl -LO https://github.com/verrazzano/verrazzano/releases/download/v1.5.3/verrazzano-1.5.3-linux-amd64.tar.gz
```
バイナリを展開してコピーします。
```
$ tar xvf verrazzano-1.5.3-linux-amd64.tar.gz
```
```
$ sudo cp verrazzano-1.5.3/bin/vz /usr/local/bin
```
以下のコマンドで結果が返ってくればインストールは完了です。
```
$ vz version

Version: v1.5.3
BuildDate: 2023-05-05T19:16:13Z
GitCommit: ceff3b8e0d0f6fa9f5abd7c02f148fda8070a5f3
```

#### k8sクラスタのセットアップ
OCIコンソールを利用してOKEをプロビジョニングしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482527/815655ff-369c-c492-8a38-eae4ef5442cd.png)

シェイプはVerrazzanoの最小要件にしています。(2 OCPU/16GB × 3台)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482527/a8ddd818-c01d-98e8-400c-9d4fe80e374a.png)

他にも`kubectl`など実行用のインスタンスを立てましたがそれはここでは割愛します。

## インストール
[ドキュメント](https://verrazzano.io/latest/docs/setup/install/perform/cli-installation/)に従ってインストールを進めます。ただ、このCLIを利用するパターンでは、コマンドを1つ実行するだけのようです。
```
$ vz install -f - <<EOF
    apiVersion: install.verrazzano.io/v1beta1
    kind: Verrazzano
    metadata:
      name: example-verrazzano
    spec:
      profile: dev
      defaultVolumeSource:
        persistentVolumeClaim:
          claimName: verrazzano-storage
      volumeClaimSpecTemplates:
        - metadata:
            name: verrazzano-storage
          spec:
            resources:
              requests:
                storage: 2Gi
EOF
```
あとは待ちます。10分強かかります。  

以下のようなログが出ればインストールは成功です
```
2023-05-31T05:18:18.124Z info Successfully installed Verrazzano
```

## 確認
CLIを使うと簡単にVerrazzanoのステータスを確認できます。
```
$ vz status

Verrazzano Status
  Name: example-verrazzano
  Namespace: default
  Profile: dev
  Version: 1.5.3
  State: Ready
  Available Components: 23/23
  Access Endpoints:
    consoleUrl: https://verrazzano.default.***.***.***.***.nip.io
    grafanaUrl: https://grafana.vmi.system.default.***.***.***.***.nip.io
    keyCloakUrl: https://keycloak.default.***.***.***.***.nip.io
    kialiUrl: https://kiali.vmi.system.default.***.***.***.***.nip.io
    openSearchDashboardsUrl: https://osd.vmi.system.default.***.***.***.***.nip.io
    openSearchUrl: https://opensearch.vmi.system.default.***.***.***.***.nip.io
    prometheusUrl: https://prometheus.vmi.system.default.***.***.***.***.nip.io
    rancherUrl: https://rancher.default.***.***.***.***.nip.io
```

kubectlでデフォルトのパスワードを取得できます。
```
$ kubectl get secret \
    --namespace verrazzano-system verrazzano \
    -o jsonpath={.data.password} | base64 \
    --decode; echo
```

`https://verrazzano.default.***.***.***.***.nip.io`にアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482527/bac86931-75f6-c97e-37ab-3a5c15620804.png)

以下のように入力するとログイン可能です。
- Username: `verrazzano`
- Password: `先ほど取得したデフォルトパスワード`

 Verrazzanoコンソールにアクセスができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482527/80f6b470-d0d2-b5e5-5928-a898cf431809.png)

## まとめ
今回はVerrazzanoのインストールをVerrazzano CLIを用いて行ってみました。以前はもう少し複雑な手順が必要だったのですが、バージョンアップによってCLIが追加され、非常に簡単に構築することができるようになりました。次回はアプリケーションを実際にデプロイしてみようと思います。

## 参考資料
https://verrazzano.io/latest/