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
评论