132 lines
2.7 KiB
Markdown
132 lines
2.7 KiB
Markdown
# MinIO S3 对象存储部署
|
||
|
||
## 功能特性
|
||
|
||
- ✅ MinIO 对象存储服务
|
||
- ✅ 自动 SSL 证书(通过 Caddy)
|
||
- ✅ 自动设置新存储桶为公开只读权限
|
||
- ✅ Web 管理控制台
|
||
- ✅ S3 兼容 API
|
||
|
||
## 部署前准备
|
||
|
||
### 1. 修改配置
|
||
|
||
编辑 `minio.yaml`,替换以下内容:
|
||
|
||
**域名配置(3 处):**
|
||
- `s3.u6.net3w.com` → 你的 S3 API 域名
|
||
- `console.s3.u6.net3w.com` → 你的控制台域名
|
||
|
||
**凭证配置(4 处):**
|
||
- `MINIO_ROOT_USER: "admin"` → 你的管理员账号
|
||
- `MINIO_ROOT_PASSWORD: "adminks.."` → 你的管理员密码(建议至少 8 位)
|
||
|
||
**架构配置(1 处):**
|
||
- `linux-arm64` → 根据你的 CPU 架构选择:
|
||
- ARM64: `linux-arm64`
|
||
- x86_64: `linux-amd64`
|
||
|
||
### 2. 配置 DNS
|
||
|
||
将域名解析到你的服务器 IP:
|
||
```
|
||
s3.yourdomain.com A your-server-ip
|
||
console.s3.yourdomain.com A your-server-ip
|
||
```
|
||
|
||
### 3. 配置 Caddy
|
||
|
||
在 Caddy 配置中添加(如果使用 Caddy 做 SSL):
|
||
```
|
||
s3.yourdomain.com {
|
||
reverse_proxy traefik.kube-system.svc.cluster.local:80
|
||
}
|
||
|
||
console.s3.yourdomain.com {
|
||
reverse_proxy traefik.kube-system.svc.cluster.local:80
|
||
}
|
||
```
|
||
|
||
## 部署步骤
|
||
|
||
```bash
|
||
# 1. 部署 MinIO
|
||
kubectl apply -f minio.yaml
|
||
|
||
# 2. 检查部署状态
|
||
kubectl get pods -n minio
|
||
|
||
# 3. 查看日志
|
||
kubectl logs -n minio -l app=minio -c minio
|
||
kubectl logs -n minio -l app=minio -c policy-manager
|
||
```
|
||
|
||
## 访问服务
|
||
|
||
- **Web 控制台**: https://console.s3.yourdomain.com
|
||
- **S3 API 端点**: https://s3.yourdomain.com
|
||
- **登录凭证**: 使用你配置的 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD
|
||
|
||
## 自动权限策略
|
||
|
||
新创建的存储桶会在 30 秒内自动设置为 **公开只读(download)** 权限:
|
||
- ✅ 任何人可以下载文件(无需认证)
|
||
- ✅ 上传/删除需要认证
|
||
|
||
如需保持某个桶为私有,在控制台手动改回 PRIVATE 即可。
|
||
|
||
## 存储配置
|
||
|
||
默认使用 50Gi 存储空间,修改方法:
|
||
|
||
编辑 `minio.yaml` 中的 PersistentVolumeClaim:
|
||
```yaml
|
||
resources:
|
||
requests:
|
||
storage: 50Gi # 修改为你需要的大小
|
||
```
|
||
|
||
## 故障排查
|
||
|
||
### Pod 无法启动
|
||
```bash
|
||
kubectl describe pod -n minio <pod-name>
|
||
```
|
||
|
||
### 查看详细日志
|
||
```bash
|
||
# MinIO 主容器
|
||
kubectl logs -n minio <pod-name> -c minio
|
||
|
||
# 策略管理器
|
||
kubectl logs -n minio <pod-name> -c policy-manager
|
||
```
|
||
|
||
### 检查 Ingress
|
||
```bash
|
||
kubectl get ingress -n minio
|
||
```
|
||
|
||
## 架构说明
|
||
|
||
```
|
||
用户 HTTPS 请求
|
||
↓
|
||
Caddy (SSL 终止)
|
||
↓ HTTP
|
||
Traefik (路由)
|
||
↓
|
||
MinIO Service
|
||
├─ MinIO 容器 (9000: API, 9001: Console)
|
||
└─ Policy Manager 容器 (自动设置桶权限)
|
||
```
|
||
|
||
## 卸载
|
||
|
||
```bash
|
||
kubectl delete -f minio.yaml
|
||
```
|
||
|
||
注意:这会删除所有数据,请先备份重要文件。
|