
minio/m3-nginxMinIO Kubernetes Cloud
m3(mkube)是MinIO推出的基于Kubernetes的云存储解决方案,旨在简化MinIO存储集群的部署、管理和运维。该镜像提供自定义nginx工具,支持本地Kubernetes集群搭建、存储集群创建、多租户管理、节点配置、权限控制等核心功能,适用于开发测试环境和企业级云存储场景。
bashcurl -LO [***]`curl -s [***]`/bin/linux/amd64/kubectl
bashgo get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger go get github.com/golang/protobuf/protoc-gen-go
bashgo get sigs.k8s.io/kind@v0.7.0
用于测试/开发的本地Kubernetes集群搭建:
在/k8s目录下执行:
bashcd k8s/; ./create-kind.sh
bashkubectl proxy
访问地址:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login
bashkubectl get secret $(kubectl get serviceaccount dashboard -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
(以下步骤假设您位于仓库的顶层目录)
bashmake m3
bashmake k8sdev TAG=minio/m3:dev
./k8s/deployments/m3-deployment.yaml.example 到 ./k8s/deployments/m3-deployment.yamlm3-deployment.yaml,将所有 <TOKENS> 替换为实际值(例如 <DEV_EMAIL> 替换为个人***)bashkubectl apply -f k8s/deployments/m3-deployment.yaml
portal,并运行在80端口bashcd portal-ui make k8sdev cd .. kubectl apply -f k8s/deployments/m3-portal-frontend-deployment.yaml
bash./m3 dev
bash./m3 set-password <YOUR_TOKEN>
bash./m3 login
m3支持为KMS配置自定义CA证书,步骤如下:
bashkubectl create configmap kms-ca-cert --from-file=customCA.crt
编辑 m3-deployment.yaml,取消以下环境变量的注释并设置值:
yamlKMS_CA_CERT_CONFIG_MAP: "kms-ca-cert" # ConfigMap名称 KMS_CA_CERT_FILE_NAME: "customCA.crt" # 证书文件名
bashkubectl apply -f k8s/deployment/m3-deployment.yaml
bash./m3 cluster sc add --name my-dc-rack-1
bash./m3 cluster nodes add --name node-1 --k8s_label m3cluster-worker --volumes /mnt/disk{1...4}
bash./m3 cluster nodes add --name node-2 --k8s_label m3cluster-worker2 --volumes /mnt/disk{1...4} ./m3 cluster nodes add --name node-3 --k8s_label m3cluster-worker3 --volumes /mnt/disk{1...4} ./m3 cluster nodes add --name node-4 --k8s_label m3cluster-worker4 --volumes /mnt/disk{1...4}
bash./m3 cluster nodes assign --storage_cluster my-dc-rack-1 --node node-1
bash./m3 cluster nodes assign --storage_cluster my-dc-rack-1 --node node-2 ./m3 cluster nodes assign --storage_cluster my-dc-rack-1 --node node-3 ./m3 cluster nodes assign --storage_cluster my-dc-rack-1 --node node-4
bash./m3 cluster sc sg add --storage_cluster my-dc-rack-1 --name group-1
bash./m3 tenant add company-name --admin_name="John Doe" --admin_email="***"
bash./m3 tenant add "Commpany® Inc." --short_name company-inc --admin_name="John Doe" --admin_email="***"
bash./m3 admin add "Admin Name" ***
bash# 简化格式 ./m3 tenant bucket add tenant-short-name bucket-name # 完整参数格式 ./m3 tenant bucket add --tenant_name tenant-short-name --bucket_name bucket-name
bash# 完整参数格式 ./m3 tenant user add --tenant company-inc --name somename --email *** --password user1234 # 位置参数格式 ./m3 tenant user add somename company-inc *** user1234
bash# 简化格式 ./m3 tenant service-account add tenant-short-name service-account-name # 完整参数格式 ./m3 tenant service-account add --tenant_name tenant-short-name --name service-account-name --description "可选描述"
授予用户对指定桶的写权限:
bash./m3 tenant permission add acme SAMPLE allow write "bucketA,bucketB"
./m3 dev 后,nginx路由会暴露在本地9000端口/etc/hosts 添加记录:
127.0.0.1 s3.localhost
http://company-short-name.s3.localhost:9000/(替换company-short-name为租户短名称)bash# 转发nginx-resolver服务(路由到MinIO租户) kubectl port-forward svc/nginx-resolver 9000:80 # 转发portal-proxy服务(路由到Portal UI) kubectl port-forward svc/portal-proxy 9080:80
http://localhost:9080

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务