一个计算机技术爱好者与学习者

0%

好好学Sealos:Sealos制作MinIO集群镜像

1. 前言

本文中,我们会基于sealos制作一个MinIO集群镜像。
使用这个集群镜像,我们能够在sealos拉起的K8S集群中,一键部署MinIO 2023.3.24。

参考文档:

2. 前置条件

安装sealos4.2.0,拉起K8S 1.24.8集群(同时安装helm),具体方法参考《sealos入门篇》

3. 制作MinIO集群镜像

1、添加chart仓库

1
2
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

2、下载chart

1
2
3
mkdir minio && cd minio
helm search repo bitnami/minio -l
helm fetch bitnami/minio --version 12.2.5

这里下载 chart12.2.5 版本,对应 minio2023.3.24 版本(minio以日期作为版本号,也是很有意思)。
下载的文件名为:minio-12.2.5.tgz

3、修改chart

1
2
3
4
tar -xzvf minio-12.2.5.tgz
vim minio/values.yaml
tar -czvf minio-12.2.5-custom.tgz minio
rm minio -rf

修改chart的values.yaml,给一些默认值,然后重新打包chart,后续Dockerfile中的CMD中可以少填一些参数。

如下修改:

  • global.storageClass 不变,使用默认的storageclass
  • mode 建议保持standalone,单机部署;可选改为 distributed,分布式部署
  • statefulset.replicaCount 分布式部署时,修改为 4(分布式部署要求>=4)
  • auth.rootUser 不变,默认 admin
  • auth.rootPassword 修改minio密码 minio123
  • resources.limits.cpu 修改为 1
  • resources.limits.memory 修改为 2Gi
  • tls.enabled 不变,默认 false
  • service.type 修改为NodePort
  • persistence.enabled 不变,默认 true
  • persistence.storageClass 不变,使用默认的storageclass
  • persistence.size 修改为 500Gi
  • metrics.serviceMonitor.enabled 修改为 true
  • metrics.serviceMonitor.namespace 修改为 Prometheus 所在的namespace

3、添加镜像列表

1
2
mkdir -p images/shim/
vim images/shim/minio-images.txt

内容为:

1
docker.io/bitnami/minio:2023.3.24-debian-11-r6

4、编写Dockerfile

1
2
3
4
FROM scratch
COPY ../minio .
CMD ["helm install minio minio-12.2.5-custom.tgz \
-n minio --create-namespace"]

5、构建集群镜像

1
2
sealos build -f Dockerfile -t docker.io/voidking/minio:2023.3.24 .
sealos inspect docker.io/voidking/minio:2023.3.24

4. 使用MinIO集群镜像

4.1. 自定义安装MinIO

1
2
3
4
5
6
7
8
sealos run docker.io/voidking/minio:2023.3.24 --cmd="helm install minio minio-12.2.5-custom.tgz \
-n minio --create-namespace \
--set auth.rootUser=admin \
--set auth.rootPassword=minio123 \
--set metrics.serviceMonitor.enabled=true \
--set metrics.serviceMonitor.namespace=prometheus"

kubectl get all -n minio

使用9001端口对应的NodePort,可以通过浏览器外部访问minio控制台。

4.2. 上传集群镜像

上传到公共镜像仓库

1
2
3
4
sealos push docker.io/voidking/minio:2023.3.24
sealos tag docker.io/voidking/minio:2023.3.24 hub.sealos.cn/voidking/minio:2023.3.24
sealos login -k config.yml hub.sealos.cn
sealos push hub.sealos.cn/voidking/minio:2023.3.24

上传到私有镜像仓库

1
2
3
sealos tag docker.io/voidking/minio:2023.3.24 harbor.voidking.com/sealos/minio:2023.3.24
sealos login harbor.voidking.com
sealos push harbor.voidking.com/sealos/minio:2023.3.24