helm 安装 MinIO 集群

资源清单

本文安装 EFK 依赖 K8S集群helm,本文不提供 K8S集群helm 安装方式

使用此文档部署,需要自行解决 storageClass 问题 ( NFS, ceph, openebs等 )

软件 版本
chart 11.6.5
minio 2022.6.2-debian-10-r0
kubernetes v1.19.3
helm v3.8.1

helm 安装 minio 集群

1. 添加 minio 的仓库

$ helm repo add bitnami https://charts.bitnami.com/bitnami

2. 查询 minio 资源

$ helm repo update
$ helm search repo minio
NAME         	CHART VERSION	APP VERSION	DESCRIPTION                                       
bitnami/minio	11.6.6       	2022.6.2   	MinIO(R) is an object storage server, compatibl...

3. 拉取 minio chart 到本地

$ mkdir -p /root/minio/ && cd /root/minio/

# 拉取 chart 到本地 /root/minio/ 目录
$ helm pull bitnami/minio --version 11.6.5

$ tar -zxvf minio-11.6.5.tgz
$ cp minio/values.yaml ./values-test.yaml

# 查看当前目录层级
$ tree -L 2
.
├── minio
│   ├── Chart.lock
│   ├── charts
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates
│   └── values.yaml
├── minio-11.6.5.tgz
└── values-test.yaml

4. 对本地 values-test.yaml 修改

  • 查看集群 storageclasses
$ kubectl get storageclasses.storage.k8s.io 
NAME                   PROVISIONER           RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
openebs-jiva-default   jiva.csi.openebs.io   Delete          Immediate              true                   33d
  • 修改配置
$ cat values-test.yaml 

# 定义全局变量,定义全局 storageClass
global:
  storageClass: "openebs-jiva-default"


# 定义服务名称
fullnameOverride: "minio"


# 服务使用镜像
image:
  registry: docker.io
  repository: bitnami/minio
  tag: 2022.6.2-debian-10-r0
  pullPolicy: IfNotPresent


# minio 部署模式 (`standalone` or `distributed`)
mode: distributed


# minio 认证账户,web登陆账户
auth:
  rootUser: admin
  rootPassword: "minio"


# 创建的默认桶
defaultBuckets: "evescn"


# distributed 模式下,服务部署数量,必须大于4个
statefulset:
  ## @param statefulset.replicaCount Number of pods per zone (only for MinIO® distributed mode). Should be even and `>= 4`
  ##
  replicaCount: 4


# 容器端口 api 端口和 console 端口
containerPorts:
  api: 9000
  console: 9001


nodeSelector: {}


# svc 定义
service:
  type: ClusterIP
  ports:
    api: 9000
    console: 9001


# console 端口 ingress 定义,web访问 Minio
ingress:
  enabled: false
  ingressClassName: "nginx"
  hostname: minio.evescn.com
  path: /
  pathType: ImplementationSpecific
  servicePort: minio-console


# api 接口 ingress 定义,代码访问 MInio
apiIngress:
  enabled: true
  ingressClassName: "nginx"
  hostname: minio-api.evescn.com
  path: /
  pathType: ImplementationSpecific
  servicePort: minio-api


# pvc 定义
persistence:
  enabled: true
  mountPath: /data
  accessModes:
    - ReadWriteOnce
  size: 200Gi

5. 安装 minio 集群

# 创建 test-middleware 名称空间
$ kubectl create ns test-middleware

# 安装 minio 集群
$ helm -n test-middleware install minio minio -f values-test.yaml | tee test.log

## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE
-n 指定 kubernetes 集群名称空间
-f 指定使用的配置文件,文件中定义的配置可以覆盖 minio/values.yaml 文件中配置

NAME: minio
LAST DEPLOYED: Fri Jun  3 21:35:42 2022
NAMESPACE: test-middleware
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: minio
CHART VERSION: 11.6.5
APP VERSION: 2022.6.2

** Please be patient while the chart is being deployed **

MinIO® can be accessed via port  on the following DNS name from within your cluster:

   minio.test-middleware.svc.cluster.local

To get your credentials run:

   export ROOT_USER=$(kubectl get secret --namespace test-middleware minio -o jsonpath="{.data.root-user}" | base64 -d)
   export ROOT_PASSWORD=$(kubectl get secret --namespace test-middleware minio -o jsonpath="{.data.root-password}" | base64 -d)

To connect to your MinIO® server using a client:

- Run a MinIO® Client pod and append the desired command (e.g. 'admin info'):

   kubectl run --namespace test-middleware minio-client \
     --rm --tty -i --restart='Never' \
     --env MINIO_SERVER_ROOT_USER=$ROOT_USER \
     --env MINIO_SERVER_ROOT_PASSWORD=$ROOT_PASSWORD \
     --env MINIO_SERVER_HOST=minio \
     --image docker.io/bitnami/minio-client:2022.5.9-debian-10-r22 -- admin info minio

To access the MinIO® web UI:

- Get the MinIO® URL:

   echo "MinIO® web URL: http://127.0.0.1:9001/minio"
   kubectl port-forward --namespace test-middleware svc/minio 9001:9001

6. 查看部署的 minio 集群

$ helm -n test-middleware list
NAME         	NAMESPACE      	REVISION	UPDATED                                	STATUS  	CHART       	APP VERSION
minio        	test-middleware	1       	2022-06-03 21:54:05.727412063 -0400 EDT	deployed	minio-11.6.5	2022.6.2

$ kubectl get pods --namespace=test-middleware
NAME                           READY   STATUS    RESTARTS   AGE
minio-0                        1/1     Running   1          11m
minio-1                        1/1     Running   1          11m
minio-2                        1/1     Running   1          11m
minio-3                        1/1     Running   1          11m
  • 查看 pvc
$ kubectl -n test-middleware get pvc
NAME                                STATUS        VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS           AGE
data-minio-0                        Bound         pvc-377709c8-ccc8-44e4-85c2-800f181d864f   200Gi      RWO            openebs-jiva-default   11m
data-minio-1                        Bound         pvc-1dd24e36-3fc8-43d1-afab-83dadc05d0ad   200Gi      RWO            openebs-jiva-default   11m
data-minio-2                        Bound         pvc-8033b763-c9c1-416e-b0ff-0c01b8d426b3   200Gi      RWO            openebs-jiva-default   11m
data-minio-3                        Bound         pvc-16ec8622-876e-4aa3-8bcb-44543f8b1032   200Gi      RWO            openebs-jiva-default   11m
  • 查看ingress
$ kubectl -n test-middleware get ingress
NAME        CLASS   HOSTS                  ADDRESS   PORTS   AGE
minio       nginx   minio.evescn.com                 80      11m
minio-api   nginx   minio-api.evescn.com             80      11m

7. 登陆web界面

8. MinIO 客户端 MC 命令使用

MinIO 客户端 MC 命令

参考文档

https://artifacthub.io/packages/helm/bitnami/minio
posted @ 2022-06-04 10:17  evescn  阅读(3251)  评论(0编辑  收藏  举报