暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MinIO部署全攻略:打造企业级对象存储

Linux运维智行录 2024-12-18
210

在当今的云计算时代,对象存储成为了企业数据管理的关键组件。MinIO作为一个高性能、高可用的对象存储服务,以其与Amazon S3的兼容性和开源特性,迅速成为企业存储解决方案的热门选择。本文将带你深入了解如何在生产环境中部署MinIO,确保数据的安全性、可用性和可扩展性。

minio加密图示


01
Minio简介

MinIO 是一个高性能的对象存储系统,特别适合处理大规模非结构化数据,如照片、视频、日志文件、备份和容器/虚拟机镜像等。它设计之初就考虑到了云原生环境的需求,并且完全兼容Amazon S3 API,这意味着任何支持S3的应用程序或工具都可以无缝地与MinIO协同工作。

主要特点:

  • 开源:MinIO是完全开源的软件,采用Apache License v2.0发布,允许用户自由使用、修改和分发。

  • 高可用性:通过内置的Erasure Code(纠删码)技术,MinIO能够在硬件故障时提供数据冗余,确保数据的持久性和可用性。此外,MinIO还支持多站点复制,以实现跨地域的数据同步和灾难恢复。

  • 性能卓越:MinIO被优化用于快速读写操作,在SSD和HDD上都能表现出色。它能够充分利用现代硬件的能力,包括多核CPU、大容量内存以及高速网络接口。

  • 于部署:MinIO可以轻松部署在各种环境中,无论是物理服务器、虚拟机还是容器平台(如Kubernetes)。同时,它也提供了简单易用的命令行工具和图形界面来管理存储桶和对象。

  • 安全性强:MinIO支持传输层安全协议(TLS),保证了客户端与服务器之间通信的安全性。它还实现了细粒度的身份验证和授权机制,允许管理员精确控制谁可以访问哪些资源。

  • 丰富的API支持:除了标准的S3 API外,MinIO还提供了一套RESTful API,方便开发者构建自定义应用程序。此外,MinIO Server自带了一个浏览器可访问的Web界面,简化了管理和监控流程。

  • 扩展性强:MinIO可以通过增加节点的方式来线性扩展其存储容量和性能,满足不断增长的数据存储需求。

Tip:Minio对象存储系统适用于大文件场景,但不适用于海量小文件的场景。


02

先决条件

  1. 已有的Kubernetes部署(1.19+版本

  2. Helm工具已安装(3.2.0+版本

  3. 有可用的Ingress暴露Minio web页面

  4. 有可用的storageClass提供存储


03
部署Minio

1、添加Minio的helm仓库

$ helm repo add bitnami https://charts.bitnami.com/bitnami --force-update
"bitnami" has been added to your repositories

Tip:如果多次下载Minio chart都失败的话,可以尝试使用国内helm源(https://helm-charts.itboon.top/bitnami)

2、下载Minio chart包

$ helm pull bitnami/minio --untar --untardir etc/kubernetes/addons/

3、部署Minio配置文件

$ cat <<'EOF' | sudo tee etc/kubernetes/addons/minio-values.yaml > dev/null
fullnameOverride: minio

# 指定镜像下载地址
image:
  registry: core.jiaxzeng.com
  repository: library/minio/minio
  tag: 2024.11.7-debian-12-r0

# Minio模式为分布式
mode: distributed

# Minio登录帐密
auth:
  existingSecret: minio-password-secret 

# Minio web外部方式
ingress:
  enabled: true
  ingressClassName: nginx
  hostname: minio.jiaxzeng.com
  annotations:
    cert-manager.io/cluster-issuer: ca-cluster-issuer
  tls: true

# Minio api外部方式
apiIngress:
  enabled: true
  ingressClassName: nginx
  hostname: s3.jiaxzeng.com
  annotations:
    cert-manager.io/cluster-issuer: ca-cluster-issuer
  tls: true

# 持久化配置
persistence:
  enabled: true
  storageClass: ceph-rbd-storage
  accessModes:
  - ReadWriteOnce
  size: 32Gi
EOF


4、创建Minio web帐密

$ kubectl -n kube-system create secret generic minio-password-secret --from-literal=root-user=admin  --from-literal=root-password=xxxx
secret/minio-password-secret created


5、部署Minio

$ helm -n kube-system install minio -f etc/kubernetes/addons/minio-values.yaml etc/kubernetes/addons/minio
NAME: minio
LAST DEPLOYED: Mon Dec 16 22:20:09 2024
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: minio
CHART VERSION: 14.8.5
APP VERSION: 2024.11.7

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

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

   minio.kube-system.svc.cluster.local

To get your credentials run:

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

To connect to your MinIO&reg; server using a client:

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

   kubectl run --namespace kube-system 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:2024.10.29-debian-12-r1 -- admin info minio

To access the MinIO&reg; web UI:

- Get the MinIO&reg; URL:

   You should be able to access your new MinIO&reg; web UI through

   https://minio.jiaxzeng.com/minio/

WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
  - resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

⚠ SECURITY WARNING: Original containers have been substituted. This Helm chart was designed, tested, and validated on multiple platforms using a specific set of Bitnami and Tanzu Application Catalog containers. Substituting other containers is likely to cause degraded security and performance, broken chart features, and missing environment variables.

Substituted images detected:
  - core.jiaxzeng.com/library/minio/minio:2024.11.7-debian-12-r0




验证


1、验证pod是否Running

$ kubectl -n kube-system get pod -l app.kubernetes.io/instance=minio
NAME      READY   STATUS    RESTARTS   AGE
minio-0   1/1     Running   0          14m
minio-1   1/1     Running   0          14m
minio-2   1/1     Running   0          14m
minio-3   1/1     Running   0          14m

2、浏览器访问Minio


04
结语

按照上述步骤,您可以轻松地在生产环境中部署一个稳定可靠的MinIO对象存储系统。这不仅能够有效支持您的业务需求,还能为未来的扩展和发展提供坚实的技术基础。希望这篇指南能帮助您顺利完成MinIO的部署,让您的数据管理和应用开发更加得心应手。


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论