メインコンテンツへスキップ

minioでブログ用の画像を保存する

·1053 文字·3 分
Blog Minio
著者
supaman
目次

ブログに画像を貼らないのもどうかなと思うので、minioで画像を保存するスペースを別途確保しました。

minioについて
#


S3 bucketのようなオブジェクトストレージです。
正直画像を保存できてURLで配信できればなんでも良かったのですが、

  • S3のようにバケットポリシーが設定できる。
  • 画像以外にも何かしらのファイルを置いておく場所として使える。
  • キャッチアップの必要性が恐らくない(S3 compatibleとか言ってるので)

以上の理由からminioをデプロイすることに決めました。

環境
#


kubernetes v1.28.7
helm v3.15.2
helmfile 0.166.0

minioのデプロイ
#


helm manifest
#

minioはoperatorとtenantの2つをデプロイする必要があります。
今回はtenantを一つしか作ってないですが、複数作れば権限分離とかしやすくなるのかな〜なんて思っています。

# minio.yaml

repositories:
  - name: minio-operator
    url: https://operator.min.io

releases:
  - name: operator
    namespace: minio
    chart: minio-operator/operator
    version: 6.0.4
    values:
      - values/minio.yaml
  - name: tenant
    namespace: minio
    chart: minio-operator/tenant
    version: 6.0.4
    secrets:
      - secrets/minio.yaml
    values:
      - values/minio.yaml

values/minio.yamlは長くなり過ぎてしまうのでここでは載せませんが、 基本的にはminioの公式valuesを持ってきて適宜変更を加えればよいです。
secrets/minio.yamlにはadminの認証情報をsops暗号化したものを載せています。

operator
#

https://min.io/docs/minio/kubernetes/upstream/reference/operator-chart-values.html

tenant
#

https://min.io/docs/minio/kubernetes/upstream/reference/tenant-chart-values.html

command
#

資材の準備ができたらhelmfile syncでデプロイします!

helmfile -f minio.yaml sync

デプロイできたら、コンソール画面にアクセスしてみます。

login

できました!! ⭐
次に、secretで設定したadminの認証情報を使ってログインします。

バケットの作成
#


ログインできたら、ブログの画像用のバケットを作っていきます。 このバケットは外から見える必要があるため、そのようにBucketPolicyを設定しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::blog-images"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::blog-images/*"
            ]
        }
    ]
}

こうしてみると本当にS3みたいですね。
ちなみにわざわざBucketPolicyを設定せずとも、GUIからanonymousからの権限を絞ることができました。

bucketpolicy

これで、バケットの設定が完了し、画像を保存すれば外から見れるようになりました。
画像の見方ですが、https://<minioのcli用のURL>/<bucket名>/<ファイル名>にアクセスすると閲覧できます。
consoleではなく、CLIのエンドポイントにアクセスしなければいけないのがつまづきポイントですね!

これでなんとかブログの画像を外部で管理することができました。めでたしめでたし。

関連記事

Remark42でブログにコメント欄を追加する
·887 文字·2 分
Blog Remark42 Blowfish
Hugo+Blowfishで個人ブログを作成する
·818 文字·2 分
Blog Hugo Blowfish
コメント広場
·7 文字·1 分
その他