1.创建Seaweedfs集群

1.1 seaweedfs-operator部署

首先使用如下的命令去添加seaweedfs-operator的Helm仓库:

helm repo add seaweedfs-operator https://seaweedfs.github.io/seaweedfs-operator/
helm template seaweedfs-operator seaweedfs-operator/seaweedfs-operator

接着我们使用如下的命令进行seaweedfs-operator的部署:

helm install seaweedfs-operator seaweedfs-operator/seaweedfs-operator -n seaweedfs --create-namespace

1.2 seaweedfs的S3访问配置Secret部署

注意!一定要走下面的流程创建Secret,不然后面怎么都无法访问成功,因为我们根本没有AK和SK,这个注意事项,在Github仓库当中并没有介绍到!

我们需要准备一个S3的权限相关信息的配置文件seaweedfs_s3_config.json(也可以叫别的名字,但是需要后续所有的名字都统一),配置的格式参考如下:

{
  "identities": [
    {
      "name": "user1",
      "actions": [
        "Admin"
      ],
      "credentials": [
        {
          "accessKey": "testkey",
          "secretKey": "testpass"
        },
        {
          "accessKey": "testkey2",
          "secretKey": "testpass2"
        }
      ]
    },
    {
      "name": "user2",
      "actions": [
        "Read",
        "List",
        "Write"
      ],
      "credentials": [
        {
          "accessKey": "testkey3",
          "secretKey": "testpass3"
        }
      ]
    }
  ]
}

其中的accessKey和secretKey字段,就是要配置的S3的AccessKey(AK)和SecretKey(SK),可以在这个配置文件当中去配置多个AK和SK。

准备好seaweedfs_s3_config.json文件之后,我们使用如下的命令去创建一个Secret,名称叫做seaweedfs-s3-config,并且文件内容都存放到seaweedfs_s3_config.json这个Key当中。

kubectl create ns seaweed
kubectl create secret generic seaweedfs-s3-config   --from-file=seaweedfs_s3_config.json=seaweedfs_s3_config.json   -n seaweed

1.3 部署Seaweed集群

接着我们需要准备Seaweed资源的yaml文件,注意需要通过configSecret去引用我们刚刚创建的S3配置的Secret:

apiVersion: seaweed.seaweedfs.com/v1
kind: Seaweed
metadata:
  name: seaweed
  namespace: seaweed
spec:
  image: chrislusf/seaweedfs:latest
  volumeServerDiskCount: 1
  master:
    replicas: 3
    volumeSizeLimitMB: 1024
  volume:
    replicas: 1
    requests:
      storage: 500Gi
  filer:
    replicas: 2
    s3:
      enabled: true   # Enable S3 API (IAM is enabled by default)
      configSecret:
        name: seaweedfs-s3-config
        key: seaweedfs_s3_config.json
    # iam: true       # Optional: IAM is enabled by default when S3 is enabled
    config: |
      [leveldb2]
      enabled = true
      dir = "/data/filerldb2"

使用如下的命令进行集群资源的部署:

kubectl create ns seaweed
kubectl apply -f seaweed.yaml

2.基于AWS客户端进行连接测试

我们需要先安装aws-cli客户端工具用于连接的测试:

sudo snap install aws-cli

接着我们通过kubectl get svc -n seaweed | grep seaweed-filer去找到seaweed-filer服务的IP地址。

wanna@k8s-master:~/k8s/k8s-resource-yaml/seaweedfs$ kubectl get svc -n seaweed | grep  seaweed-filer
seaweed-filer         ClusterIP   10.43.69.101    <none>        8888/TCP,18888/TCP,8333/TCP   5h3m
seaweed-filer-peer    ClusterIP   None            <none>        8888/TCP,18888/TCP,8333/TCP   5h3m

我们可以使用如下的命令查看Seaweed集群当中的所有的bucket,如果没有返回异常,说明没有问题(因为现在集群当中没有Bucket):

aws --endpoint-url http://{ip}:8333 s3 ls

接着,使用如下的命令去创建一个测试的Bucket:

aws --endpoint-url http://{ip}:8333 s3 mb s3://testbucket

重新查看Bucket,已经有testbucket这个Bucket,就可以验证我们的SeaweedFS集群已经配置成功。

aws --endpoint-url http://{ip}:8333 s3 ls
2026-02-20 15:13:38 testbucket