部署 MinIO 以支持对象存储

MinIO 是一个兼容 s3 标准的对象存储。

前置条件

创建名称空间

kubectl create ns minio

添加仓库

helm repo add minio https://helm.min.io/
helm search repo minio/minio
# NAME            CHART VERSION   APP VERSION     DESCRIPTION
# minio/minio     8.0.10          master          High Performance, Kubernetes Native Object Storage

修改可配置项

生成 values.yaml 文件

helm show values minio/minio > values.yaml

修改 values.yaml 文件

accessKey: 'minio'
secretKey: 'minio123'
persistence:
  enabled: true
  storageCalss: 'nfs-client'
  VolumeName: ''
  accessMode: ReadWriteOnce
  size: 5Gi

service:
  type: ClusterIP
  clusterIP: ~
  port: 9000
  # nodePort: 32000

resources:
  requests:
    memory: 128Mi

如果你想知道最终生成的模版,可以使用 helm template 命令。

helm template -f values.yaml --namespace minio minio/minio > minio.yaml

部署 MinIO

helm install -f values.yaml minio  minio/minio -n minio

配置证书和域名

创建 Ingress,并配置自动生成 https 证书

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minio
  namespace: minio
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-dns01 # 配置自动生成 https 证书
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
    - hosts:
        - 'minio.todoit.tech'
      secretName: minio-letsencrypt-tls
  rules:
    - host: minio.todoit.tech
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: minio
                port:
                  number: 9000

应用该 ingress 清单

kubectl apply -f ingress.yaml

最后,别忘了域名映射哦

README-2022-06-28-14-54-23

登录 MinIO

用户名密码就是我们在清单文件中配置的 accessKey 和 secretKey

README-2022-06-28-14-55-07

上次更新: