0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SeaweedFS S3互換オブジェクトストレージをK3S上にHelmでインストールしてみた

0
Last updated at Posted at 2026-02-08

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

これまでS3互換オブジェクトストレージとしてスタンダードに使われてきたMinIOですが、開発は継続されるもののコンテナイメージが提供されなくなりました。脆弱性の修正はソースコードだけで、コンテナイメージは提供されません。
これでは手軽にHelmとかでインストールできないので、SeaweedFSを試してみました。

1. 概要

1-1. 目的

K3S上にSeaweedFSをHelmでインストールし、GitLab Runnerキャッシュ用の S3 互換オブジェクトストレージを構築する。

1-2. 環境

項目
Kubernetes k3s
StorageClass local-path
Helmチャート seaweedfs/seaweedfs v4.0.409 (appVersion 4.09)
チャートリポジトリ https://seaweedfs.github.io/seaweedfs/helm

1-3. 構成のポイント

項目 設定
S3の動作方式 独立S3 Deployment(s3.enabled=true, filer.s3.enabled=false)
認証設定 Kubernetes Secret 経由(s3.existingConfigSecret)
ストレージ設定 volume.dataDirs[0].* で PVC を指定
レプリケーション global.replicationPlacement="000"(レプリカなし)

注意: filer.s3.enabled=true にするとFiler内蔵S3サーバーが起動し、v4.0.409 では s3.go:308 で nil pointer dereferenceが発生する。S3は独立 Deploymentで動作させること。


2. インストール手順

2-1. Helmリポジトリの追加

helm repo add seaweedfs https://seaweedfs.github.io/seaweedfs/helm

2-2. Namespaceの作成

kubectl create namespace seaweedfs

2-3. S3認証用Secretの作成

kubectl create secret generic seaweedfs-s3-secret \
  -n seaweedfs \
  --from-literal=seaweedfs_s3_config='{"identities":[{"name":"admin","credentials":[{"accessKey":"seaweedfs","secretKey":"ChangeMe!Pass0"}],"actions":["Admin","Read","Write"]}]}'

2-4. Helmでインストール

helm upgrade --install seaweedfs seaweedfs/seaweedfs \
  -n seaweedfs \
  --set master.replicas=1 \
  --set volume.replicas=1 \
  --set filer.replicas=1 \
  --set filer.s3.enabled=false \
  --set s3.enabled=true \
  --set s3.enableAuth=true \
  --set s3.port=9000 \
  --set s3.existingConfigSecret=seaweedfs-s3-secret \
  --set global.replicationPlacement="000" \
  --set global.enableReplication=true \
  --set volume.dataDirs[0].name=data \
  --set volume.dataDirs[0].type=persistentVolumeClaim \
  --set volume.dataDirs[0].storageClass=local-path \
  --set volume.dataDirs[0].size=10Gi \
  --set volume.dataDirs[0].maxVolumes=0 \
  --set volume.resources.requests.memory=1Gi

volume.dataDirs[0].sizeはお好みで修正してください。

2-5. デプロイ確認

kubectl get pods -n seaweedfs

全Podが1/1 Runningであることを確認する。


3. 疎通確認

3-1. S3エンドポイントの確認

kubectl get svc -n seaweedfs | grep s3

3-2. AWS CLI による接続テスト

kubectl run s3-test --rm -it --restart=Never --image=amazon/aws-cli -n seaweedfs \
  --env="AWS_ACCESS_KEY_ID=seaweedfs" \
  --env="AWS_SECRET_ACCESS_KEY=ChangeMe!Pass0" \
  -- --endpoint-url http://seaweedfs-s3.seaweedfs:8333 s3 ls --region us-east-1

エラーなく空の結果が返れば正常。


4. 接続情報

4-1. S3 接続パラメータ

項目
S3 エンドポイント http://seaweedfs-s3.seaweedfs:8333
Access Key seaweedfs
Secret Key ChangeMe!Pass0
Region us-east-1
S3 ポート 9000

注意: SeaweedFSのデフォルトポートは、MinIOのデフォルトポート9000ではなく8333であるため、Helm起動時に--set s3.port=9000で変更しています。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?