ブジェクトストレージといえば、Amazon S3とかAzureのストレージアカウントとかあるが、手元にブジェクトストレージを入れてみたいということであれば、Minioが便利
Minioは以下で入手できる。
https://min.io/download
起動も簡単で、フォルダを作って、そこでminioを実行すればいい。
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data
そうするとhttps://IPアドレス:9000でオブジェクトストレージが起動する。
以上。。。となるとつまらないし、他のページにもこれくらいの記述はたくさんあるので、もう少し詳しく書くと。
Minioのアプリ
アプリは3種類ある
- minio: オブジェクトストレージのサーバアプリ(世間でいうminioはこれ)
- mc: オブジェクトストレージにアクセスするコマンドラインアプリ (世間はawsコマンドで代用)
- console: オブジェクトストレージのWeb UIを拡張したもの
全てシングルバイナリという良心的な設計なので、テストで使うだけならminioだけあるいはconsoleとともに立ち上げればいいのだが、実は少し複雑というか、設定変えようとしてもシングルバイナリなので、設定がよくわからない。常用しようとするとシステム起動させる必要があるけどなしのツブテとなる。
Minio本体はこんな感じ(これをMinio Browserというらしい。実際にデータをやりとりするendpointと兼用である。)
まぁ、単純にテストするだけならこれで十分。mcコマンドと併用してあげると結構な情報も取れるのだが。。。
Consoleを入れるとこんな感じ
mcコマンドのGUI版にちかい部分もある。バケットを作る際、バージョン設定やロック設定がGUIからできる。ポリシーの設定も可能
しかし、githubのminio consoleページにあるスクリーンショットを見るとなんかたくさん情報が出ているぞ。自分のは出ていない。
composeのファイルをみると、Prometheus連携している。
Prometheus連携をするとこんな感じ。
見栄えが全然違う。
セットアップ方法は以下なんだが、お時間の都合上スクリプトで記載しておく。Ubuntu 20.04上で引数つけずに実行すれば起動する。外部ディスクを使いたい場合は、とりあえず/minioにxfsでマウントしておけばOK。(ほんとはその下のdata1〜4にそれぞれディスクをマウントしておくべきだが。)
Linux版
https://github.com/masezou/k8s-study/blob/v0.3.1/0-minio-lnx.sh
難航した点は、minioがhttpsなのでPrometheusでのSSL経由での取得とconsoleとprometheusのポートが同じ9090をデフォルトで使う点。
手順はざっくり書くと
- minioの起動パラーメータでPrometheusを有効にして再起動
- minioのページにあったprometheus.ymlをもとに書き換える。(http->httpsとtls_configの追加)
- consoleにPrometheusのURLを追加
スクリプトは、consoleもprometheusもsystemctl起動にしておいた。
個人的には、QNAP版とかdocker版もつくっておいた。これこそdocker composeでというやつである。あれ、そういえばcomposeのファイルがconsole のページにあったな。。。何してたんだが。ただhttpsが有効になっていなかったし、ログサーバでPostgresqlを使うというゴージャスな設定だったんで。。。まぁいいか。
あーつかれたけど、いい勉強になったわ。
minioのクライアントコマンドであるmcコマンドもAWSCLIよりもかなり機能豊富なんだけど、それは次回以降。
ちなみにWindows版はこれ。Windows Server 2019で.Net Framework 4.6.1以降を入れておく。またスクリプトの中のAdministratorのパスワードを書き換えてから実行する。
https://github.com/masezou/k8s-study/blob/v0.3.1/0-minio-win.ps1
最後にconsoleのログインクレデンシャルは、console/miniosecretkey これもスクリプトで決め打ちにしているので適宜書き換えること。
ちなみにGrafanaにPrometheusを登録してダッシュボードをいれたら、あっさり表示できた。
便利な世の中になったものである。。。