使用Helm安装MinIO并配置APISIX流量转发:打造高可用对象存储方案

张开发
2026/5/31 11:22:28 15 分钟阅读
使用Helm安装MinIO并配置APISIX流量转发:打造高可用对象存储方案
使用Helm安装MinIO并配置APISIX流量转发打造高可用对象存储方案背景介绍随着云原生技术的发展对象存储已成为现代应用架构的重要组成部分。MinIO作为高性能的对象存储系统兼容Amazon S3 API广泛应用于各种场景。本文将详细介绍我如何使用Helm在Kubernetes环境中部署MinIO并通过APISIX实现对s3.howlaisi.com和minio.howlaisi.com两个域名的请求转发同时使用NodePort实现端口转发并配置必要的环境变量构建高可用的对象存储服务。技术架构概述本文档涵盖的技术栈包括MinIO高性能对象存储服务HelmKubernetes包管理工具APISIXAPI网关虚拟机部署Kubernetes容器编排平台准备工作环境要求Kubernetes集群已安装kubectlHelm 3.x已部署APISIX作为入口控制器添加Helm仓库helm repoaddbitnami https://charts.bitnami.com/bitnami helm repo update安装MinIO1. 创建命名空间kubectl create namespace minio2. 下载并解压Chart包下载MinIO的Helm Chart包并解压进行自定义配置# 拉取并解压chart包helm pull bitnami/minio--version12.6.4--untar# 进入解压后的目录cdminio3. 直接编辑values.yaml在解压后的目录中直接编辑values.yaml文件进行自定义配置。我在实际操作中进行了以下更改# 备份原始配置cpvalues.yaml values.yaml.bak执行以下更改diffvalues.yaml values.yaml.bak 100c100rootPassword:Huawei123---rootPassword:143,147c143extraEnvVars:- name: MINIO_SERVER_URLvalue:https://s3.howlaisi.com- name: MINIO_BROWSER_REDIRECT_URLvalue:https://minio.howlaisi.com---extraEnvVars:[]最终的values.yaml配置如下## MinIO服务配置auth:rootUser:adminrootPassword:Huawei123# 修改了默认密码persistence:enabled:truesize:20GistorageClass:# 根据您的存储类进行调整service:type:NodePort# 改为NodePort以便从集群外部访问ports:api:9000console:9001nodePorts:api:30900# 指定固定NodePortconsole:30901resources:limits:cpu:500mmemory:1Girequests:cpu:250mmemory:512Mimetrics:enabled:trueconsoleService:type:NodePortport:9001nodePort:30901apiService:port:9000nodePort:30900## 环境变量配置extraEnvVars:-name:MINIO_SERVER_URLvalue:https://s3.howlaisi.com# 使用HTTPS协议-name:MINIO_BROWSER_REDIRECT_URLvalue:https://minio.howlaisi.com# 使用HTTPS协议4. 使用Helm安装MinIOhelminstallminio.\--namespaceminio\--create-namespace5. 验证安装kubectl get pods-nminio kubectl get svc-nminio您应该能看到类似以下的输出NAME READY STATUS RESTARTS AGE minio-0 1/1 Running 0 5m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE minio-api NodePort 10.96.100.150 none 9000:30900/TCP 5m minio-console NodePort 10.96.120.200 none 9001:30901/TCP 5m配置APISIX路由由于我的APISIX是通过虚拟机安装的我使用APISIX Dashboard界面来配置路由规则。1. 配置APISIX路由规则通过APISIX Dashboard界面创建路由规则将s3.howlaisi.com映射到MinIO的API端口(9000)minio.howlaisi.com映射到控制台端口(9001)。s3.howlaisi.com - MinIO API (端口9000)我在APISIX Dashboard中创建了以下路由配置{uri:/*,name:s3.howlaisi.com,methods:[GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS,CONNECT,TRACE,PURGE],host:s3.howlaisi.com,plugins:{proxy-rewrite:{scheme:https},redirect:{http_to_https:true}},upstream:{nodes:[{host:10.147.18.203,port:9000,weight:1}],timeout:{connect:600,send:600,read:600},type:roundrobin,scheme:http,pass_host:pass,keepalive_pool:{idle_timeout:60,requests:1000,size:320}},enable_websocket:true,status:1}minio.howlaisi.com - MinIO Console (端口9001)我在APISIX Dashboard中创建了以下路由配置{uri:/*,name:minio.howlaisi.com,methods:[GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS,CONNECT,TRACE,PURGE],host:minio.howlaisi.com,plugins:{proxy-rewrite:{scheme:https},redirect:{http_to_https:true}},upstream:{nodes:[{host:10.147.18.203,port:9001,weight:1}],timeout:{connect:600,send:600,read:600},type:roundrobin,scheme:http,pass_host:pass,keepalive_pool:{idle_timeout:60,requests:1000,size:320}},enable_websocket:true,status:1}注意这里的配置展示了我实际使用的路由配置实际上我在APISIX Dashboard界面中创建这些路由而不是使用API。2. 配置TLS证书可选如果您需要HTTPS支持请在APISIX Dashboard中配置SSL证书。访问MinIO服务1. 控制台访问地址: https://minio.howlaisi.com默认用户名: admin默认密码: Huawei1232. S3 API访问地址: https://s3.howlaisi.com使用标准S3 SDK进行访问配置参数说明参数含义可选值默认值auth.rootUserMinIO管理员用户名字符串adminauth.rootPasswordMinIO管理员密码字符串空字符串persistence.enabled是否启用持久化存储true/falsetruepersistence.size存储卷大小如20Gi10Gipersistence.storageClass存储类名称存储类名“”service.type服务类型ClusterIP/NodePort/LoadBalancerClusterIPservice.ports.apiAPI服务端口端口号9000service.ports.console控制台端口端口号9001性能调优建议存储性能优化使用SSD存储以获得更好的I/O性能配置合适的存储类以满足性能需求资源分配优化根据预期负载合理分配CPU和内存资源启用水平Pod自动伸缩(HPA)以应对负载变化网络优化确保APISIX与MinIO之间的网络连接稳定配置适当的超时和重试策略故障排除常见问题服务无法访问检查APISIX路由规则是否正确配置确认域名DNS解析是否指向正确的入口IP控制台无法登录检查用户名密码是否正确确认浏览器是否允许第三方Cookie存储空间不足扩展PersistentVolume容量清理不必要的对象数据日志查看# 查看MinIO日志kubectl logs-nminio deployment/minio-f# 查看APISIX日志kubectl logs-ningress-apisix deployment/apisix-f安全注意事项生产环境安全配置更改默认的用户名和密码启用TLS加密通信配置访问控制策略备份策略定期备份MinIO配置实施数据备份和恢复计划扩展阅读如果需要更高级的MinIO集群配置可以考虑使用分布式模式部署这将提供更高的可用性和容错能力。参考资料MinIO官方文档Helm Chart for MinIOAPISIX Ingress ControllerKubernetes官方文档如需获取更多技术支持可通过张师傅博客 https://howlaisi.com 联系我们也可通过微信ggttxlss咨询具体的部署细节。温馨提示由于网络环境或文件存储等因素若相关文件或图片链接暂时无法访问您也可以通过访问张师傅的好来斯技术博客获取更多相关资源和最新信息。本篇文章原始链接https://www.howlaisi.com/categories/minio/shi-yong-helman-zhuang-miniobing-pei-zhi-apisixliu-liang-zhuan-fa-da-zao-gao-ke-yong-dui-xiang-cun-chu-fang-an

更多文章