6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RookだらけのAdvent Calendar 2019

Day 15

Minio(2) Kubernetes上でのMinIO利用

Last updated at Posted at 2019-12-15

この記事は「RookだらけのAdvent Calender」15日目の記事です。

昨日は、オブジェクトストレージの概要とRookからMinIOを構成する方法について解説しました。
本日は実際にMinIOを利用し、ファイルのアップロードと確認をKubernetesから行ってみます。

MinIO with Rookの最大の問題

昨日の投稿で書いても良かったのですが、当ブログの企画後に以下の知らせが入ってきました。

MinIOはRookにマージされたものの、独自のOperator開発に注力しているようで、Rookへのコントリビューションがありません。その結果、サポートを切られるということになりそうです。
つまり、今回のRookによるMinIO構築はあと半年ほどで不可能になると予想されます。

とは言っても、今回はこのまま行きますが。

MinIOの利用

気を取り直して、今回構築したMinIOの利用方法を確認していきましょう。

昨日、接続確認に利用したUIからバケットの作成やファイルのPUTも出来ます。
ですが、それでは今回Kubernetes上に構築した意味が薄いものとなってしまいますので、今回はmcといわれるクライアントツールをPodとしてデプロイし、そこからMinIOの操作を行ってみます。

MCのPod起動と設定

昨日、MinIOのオブジェクトストアを作成したのと同じNamespace(rook-minio)に下記のStatefulSetをデプロイします。ここではMinIOが公式に提供しているmcのイメージを使っています。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mc-test
  namespace: rook-minio
  labels:
    app: mc-test
spec:
  serviceName: mc-test
  replicas: 1
  selector:
    matchLabels:
      app: mc-test
  template:
    metadata:
      labels:
        app: mc-test
    spec:
      containers:
      - image: minio/mc
        imagePullPolicy: Always
        name: mc
        command: ["/bin/sh"]
        stdin: true
        tty: true

Podが一つ起動しますので、そこに接続して設定作業を行います。

# mcのコンテナへ接続
kubectl exec -it -n rook-minio mc-test-0 /bin/sh

# 以降、mcのCLIを利用
# 利用前に(エンドポイントやアクセスキー、シークレットは環境に合わせること
/ mc config host add minio http://x.x.x.x ACCESS SECRET --api S3v4

# configに成功したら、server情報を確認
/ mc admin info server minio
●  my-store-0.my-store.rook-minio.svc.cluster.local:9000
   Uptime: 22 hours
  Version: 2019-04-23T23:50:36Z
  Storage: Used 60 MiB, Free 19 GiB
   Drives: 2/2 OK

   CPU        min        avg      max
   current    0.08%      0.08%    0.09%
   historic   0.03%      0.11%    9.88%

   MEM        usage
   current    68 MiB
   historic   68 MiB


●  my-store-1.my-store.rook-minio.svc.cluster.local:9000
   Uptime: 22 hours
  Version: 2019-04-23T23:50:36Z
  Storage: Used 60 MiB, Free 19 GiB
   Drives: 2/2 OK

   CPU        min        avg      max
   current    0.08%      0.08%    0.09%
   historic   0.03%      0.11%    10.42%

   MEM        usage
   current    68 MiB
   historic   68 MiB


●  my-store-2.my-store.rook-minio.svc.cluster.local:9000
   Uptime: 22 hours
  Version: 2019-04-23T23:50:36Z
  Storage: Used 60 MiB, Free 19 GiB
   Drives: 2/2 OK

   CPU        min        avg      max
   current    0.11%      0.12%    0.12%
   historic   0.03%      0.12%    9.98%

   MEM        usage
   current    68 MiB
   historic   68 MiB


●  my-store-3.my-store.rook-minio.svc.cluster.local:9000
   Uptime: 13 hours
  Version: 2019-04-23T23:50:36Z
  Storage: Used 60 MiB, Free 19 GiB
   Drives: 2/2 OK

   CPU        min        avg      max
   current    0.09%      0.10%    0.12%
   historic   0.03%      0.11%    9.48%

   MEM        usage
   current    68 MiB
   historic   68 MiB

昨日のKubernetesのPodと同様に4つのMinioサーバが起動していることが確認できます。
なお、mc configコマンドの詳細はこちらで確認下さい。

MCからバケット作成とファイル操作

mcコマンドにより、MinIOをUNIXライクなコマンドから利用することができます。

では、実際にバケットの作成と確認をしてみましょう。

# バケットtestbをmbコマンドで作成
/ mc mb minio/testb
Bucket created successfully `minio/testb`.

# lsコマンドでバケットを確認
/ mc ls minio
[2019-12-15 13:16:26 UTC]      0B testb/

# 作成したtestbバケットへ/etc/os-releaseをcpコマンドでコピー
/ mc cp etc/os-release minio/testb
etc/os-release:           164 B / 164 B xaaaaaaaaaaaaax 100.00% 4.19 KiB/s 0s

# testbバケットの内容を確認
/ mc ls minio/testb
[2019-12-15 13:24:48 UTC]    164B os-release

# catコマンドでtestbにコピーしたファイルの内容を確認
/ mc cat minio/testb/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.10.2
PRETTY_NAME="Alpine Linux v3.10"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"

実際の運用では

mcコマンドをアプリケーションコンテナに同梱する、またはサイドカーとして起動することでここまで書いたようにmc cpなどのシンプルなコマンドでバックアップをMinIOに取ることができます。

また、mc mirrorコマンドを使うことでrsyncのようにオブジェクトストレージへ定期的な退避を行うことも出来ます。

こうしたシンプルなバックアップ運用が出来ることがMinIOの魅力と言えるでしょう。

まとめ

2回にわたり、RookによるMinIOの構築および利用について解説をしてきました。

残念ながら、MinIOはRookプロジェクトから外れる可能性が高いのですが、シンプルなオブジェクトストレージの学習・検証などには現時点で有用というのが私個人の感想です。

よろしくお願いします。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?