本文作者:丁辉
Helm 部署 Minio
介绍
Minio 是一个高性能、开源的云存储和对象存储服务器,适用于任何规模的应用。
开始部署
添加仓库
1
2helm repo add minio https://charts.min.io/
helm repo update创建命名空间
1
kubectl create namespace minio
编写 Yaml 文件
1
vi minio-values.yaml
内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39# 开启 ingress 对外访问
consoleIngress:
enabled: true
ingressClassName: # 指定 ingress 控制器, 不指定则需要集群内存在默认的 ingress 控制器
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "1024m" # 调整文件上传允许传输大小
path: /
hosts:
- # 域名
tls:
- secretName: minio-tls
hosts:
- # 域名
# 配置镜像加速
image:
repository: quay.io/minio/minio
tag: latest
pullPolicy: IfNotPresent
# 配置 Minio 用户密码
rootUser: "填写账户"
rootPassword: "填写密码"
replicas: 1
# 开启持久化存储
persistence:
enabled: true
storageClass: "" # 指定存储卷, 不指定则需要集群内存在默认的存储卷
# 独立部署模式
mode: standalone
resources:
requests:
memory: 512Mi
# 指定分享访问地址
environment:
MINIO_SERVER_URL: "https://域名:9000"创建 Nginx 证书 secret
cert为.pem和.crt文件都可以
1
kubectl create secret tls minio-tls --key nginx.key --cert nginx.pem -n minio
安装
1
helm install --namespace minio minio minio/minio -f minio-values.yaml
部署 Nginx 代理
1
vi default.conf
内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16server {
listen 9000 ssl;
server_name localhost; # 这里替换自己的域名
client_max_body_size 1024m; # 限制上传文件大小
ssl_certificate /etc/nginx/conf.d/cert/tls.crt;
ssl_certificate_key /etc/nginx/conf.d/cert/tls.key;
location / {
proxy_set_header X-FORWARDED-FOR $remote_addr;
proxy_set_header X-FORWARDED-PROTO $scheme;
proxy_set_header Host $http_host;
proxy_pass http://minio:9000;
}
}编辑 Dockerfile
1
vi Dockerfile
内容如下
1
2
3
4
5FROM nginx:alpine-slim
COPY ./default.conf /etc/nginx/conf.d/default.conf
EXPOSE 9000构建镜像
1
docker build -t minio-gateway:v1.0 .
查看 Minio SVC IP
1
kubectl get svc -n minio | grep 9000 | awk '{print $3}'
编辑 Yaml
1
vi minio-gateway.yaml
内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46apiVersion: apps/v1
kind: Deployment
metadata:
namespace: minio
name: minio-gateway
labels:
app: minio-gateway
spec:
selector:
matchLabels:
app: minio-gateway
template:
metadata:
labels:
app: minio-gateway
spec:
hostNetwork: true
hostAliases:
- ip: "" #填入 Minio SVC IP
hostnames:
- "minio"
containers:
- name: minio-gateway
image: minio-gateway:v1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 3
successThreshold: 1
tcpSocket:
port: 9000
timeoutSeconds: 10
resources:
limits:
memory: 128Mi
volumeMounts:
- name: ssl
mountPath: "/etc/nginx/conf.d/cert/"
volumes:
- name: ssl
secret:
secretName: minio-ssl部署
1
kubectl apply -f minio-gateway.yaml
卸载
卸载网关
1
kubectl delete -f minio-gateway.yaml
卸载 minio
1
helm uninstall minio -n minio
删除 secret
1
kubectl delete secret minio-tls -n minio
删除命名空间
1
kubectl delete namespace minio
I'm so cute. Please give me money.
- 本文链接: https://blog.offends.cn/Kubernetes/Helm/Helm部署Minio.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。