Helm Charts仓库:Kubernetes部署的工业化革命!!!

【Helm 及 Chart 快速入门】01、Helm 基本概念及仓库管理 Helm 基本概念及仓库管理 阅读详情

(拍桌)朋友们!还记得当年手动部署Kubernetes应用有多酸爽吗?YAML文件堆成山,变量满天飞,版本管理靠玄学… 直到我遇见了Helm和它的超级武器库——Helm Charts仓库(特别是经典的helm/charts)。今天咱们就深扒这个让K8s部署效率飙升的"弹药库",保证不说废话!!!

关键认知提前看:Helm Charts仓库不是魔法,但它是把K8s部署从手工作坊推进到工业化流水线的关键跳板!(相信我,用过就回不去了)

一、Helm Charts仓库:到底是什么神仙东西?

简单粗暴版定义(划重点!):

Helm Charts仓库 = 一个存放打包好的K8s应用模板(Charts) 的集中式仓库。你可以把它想象成Kubernetes生态的**“应用商店”** 或**“超级配方库”**!

  • Helm:K8s的包管理工具(类比apt之于Ubuntu、npm之于Node.js)。
  • Chart:一个预配置的K8s应用包(包含Deployment、Service、ConfigMap等所有资源的模板和默认配置)。
  • 仓库(Repository):存放并共享这些Chart的地方。helm/charts就是曾经最官方、最庞大的公共仓库(虽然后来官方策略变了,但江湖地位仍在!)。

(敲黑板)为什么这玩意儿能救命?

  1. 告别复制粘贴地狱! Nginx、MySQL、Redis… 常用中间件?直接helm install搞定,不用再找零散的YAML!
  2. 参数化配置(爽!) 想改端口?调副本数?换存储?一个values.yaml文件全搞定,不用动原始模板!
  3. 依赖管理(救星!) Chart里可以声明需要其他Chart(比如WordPress需要MySQL),Helm自动帮你解决依赖安装!
  4. 版本控制与回滚(稳了) 每次安装或升级都是一个明确的Release,回滚到上一版本?一行命令的事!

二、helm/charts:曾经的王者与它的遗产

(感慨一下)曾经的helm/charts(托管在GitHub上)绝对是Helm生态的心脏!它有多牛?

  • 海量应用:从数据库(MySQL, PostgreSQL, MongoDB)、消息队列(Kafka, RabbitMQ)、监控(Prometheus, Grafana)到复杂的应用栈(Jenkins, GitLab),应有尽有!
  • 社区驱动:全球开发者共同维护、更新、优化Chart质量(社区力量YYDS!)。
  • 官方背书:由Helm项目团队直接管理,权威性拉满。

BUT!(重要转折) 随着Helm生态爆炸式增长,这个单一巨型仓库也遇到了挑战:

  • 维护压力山大:Chart数量太多,审核、更新、测试跟不上。
  • 版本发布僵化:所有Chart绑定在一个仓库版本里,更新慢。
  • 安全分发隐患:大型二进制文件放GitHub不合适。

于是,Helm官方祭出了大杀器——Chart Museum、Harbor等OCI兼容仓库以及超级聚合平台Artifact Hub!helm/charts在2020年11月正式归档(Archived) 并停止更新。

(敲重点!别慌!)这不等于它没用了:

  1. 历史价值巨大:它是无数现存Chart的源头和设计范本。
  2. 学习宝藏库:里面的Chart结构清晰,是学习如何编写高质量Chart的最佳教科书!(墙裂建议去GitHub翻翻源码)
  3. 过渡期参考:很多老项目文档还在引用它,知道渊源才能不迷糊。

三、动手!用Charts仓库部署应用(实操王者)

(坐直了!干活了!)理论吹完,不上手等于耍流氓!假设我们要部署一个Redis:

步骤1:添加仓库(现在去哪找Chart?)

虽然helm/charts归档了,但大量Chart迁移到了新的官方仓库bitnami(超级活跃!)和其他供应商仓库。

# 添加Bitnami仓库(超常用!)
helm repo add bitnami https://charts.bitnami.com/bitnami
# 更新本地仓库索引(必须做!获取最新Chart信息)
helm repo update

步骤2:搜索!Find Your Chart!

# 搜索Redis相关的Chart
helm search repo bitnami/redis
# 输出示例:
# NAME            	CHART VERSION	APP VERSION	DESCRIPTION
# bitnami/redis   	17.11.0      	7.0.11     	Open source, advanced key-value stor...
# bitnami/redis-cluster 8.2.0        	7.0.11     	Open source, advanced key-value stor...

步骤3:安装!一键起飞!

# 安装一个标准Redis,命名为my-redis
helm install my-redis bitnami/redis

(瞪大眼睛看输出!)Helm会输出安装状态、如何获取密码(重要!)、如何连接等信息。部署就这么完成了?!爽!!

步骤4:自定义配置(告别千篇一律)

默认配置不符合需求?祭出values.yaml!

  1. 获取默认values (了解有哪些可调参数):
    helm show values bitnami/redis > my-redis-values.yaml
    
  2. 修改my-redis-values.yaml (比如改密码、开持久化、调资源):
    ## 全局配置
    global:
      ## 设置自定义密码 (重要!别用默认的!)
      redis:
        password: "MySuperStrongPassword123!" # (安全第一条!!!)
    
    ## 主节点配置
    master:
      ## 开启持久化存储 (防止重启数据丢!)
      persistence:
        enabled: true
        storageClass: "standard" # 按你的集群存储类修改
        size: 8Gi
    
      ## 调整资源请求/限制 (根据实际负载调!)
      resources:
        requests:
          cpu: 100m
          memory: 256Mi
        limits:
          memory: 512Mi
    
    ## 副本节点配置 (如果需要高可用)
    replica:
      replicaCount: 2 # 搞两个副本
      persistence:
        enabled: true
    
  3. 带着配置安装/升级:
    # 安装时指定自定义values文件
    helm install -f my-redis-values.yaml my-custom-redis bitnami/redis
    
    # 或者升级已存在的Release
    helm upgrade -f my-redis-values.yaml my-redis bitnami/redis
    

步骤5:管理你的部署(生命周期)

  • 查看已安装的Release:helm list
  • 查看Release状态:helm status my-redis
  • 卸载Release:helm uninstall my-redis (干净利落!)
  • 回滚到上一版本:helm rollback my-redis 1 (版本号看helm history my-redis)

(喘口气)看到了吗?从搜索、安装、定制到管理,一套组合拳下来,部署复杂应用变得多么丝滑!这就是Charts仓库+Helm的力量!

四、Chart仓库的核心秘密:目录结构与模板引擎

(好奇宝宝看这里)一个Chart仓库背后,Chart本身是怎么构造的?为什么能这么灵活?

Chart的标准目录结构(解压一个看看)

my-chart/
├── Chart.yaml          # 元数据:Chart名、版本、描述、依赖等 (核心身份证!)
├── values.yaml         # **默认配置参数** (用户主要修改的就是覆盖它)
├── charts/             # (可选) 存放本Chart依赖的**其他子Chart** (tgz包或目录)
├── templates/          # **核心!** 存放K8s资源模板文件 (YAML + Go模板语法)
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── configmap.yaml
│   └── ...             # 其他需要的资源
├── templates/NOTES.txt # (可选) 安装后显示给用户的提示信息 (超有用!)
└── ...                 # 其他文件如LICENSE, README.md

灵魂:Go Template + Helm扩展

templates/下的YAML文件不是死的!它们嵌入了强大的Go模板语法和Helm特有的对象(Objects) 与函数(Functions)。

  • 注入动态值:{{ .Values.redis.password }} → 从用户的values.yaml或命令行参数获取密码。
  • 条件判断:{{ if .Values.persistence.enabled }} ... volumeMounts ... {{ end }} → 根据用户配置决定是否挂载存储卷。
  • 循环迭代:{{ range .Values.extraEnvVars }} → 生成多个环境变量。
  • 访问内置对象:{{ .Release.Name }} → 获取用户安装时指定的Release名字。
  • 使用函数:{{ .Chart.Name | trunc 20 }} → 对Chart名做截断处理。

(恍然大悟)原来如此!Chart模板就像预制好的房子框架,values.yaml就是业主的装修需求清单。Helm引擎负责把这两者结合,渲染出最终部署到K8s上的定制化YAML!这种解耦设计是灵活性的基石。

五、Chart仓库的江湖新格局:Artifact Hub & OCI

(前方趋势预警!)后helm/charts时代,Chart仓库生态更繁荣但也更分散:

  1. Artifact Hub (https://artifacthub.io/):新一代聚合中心!

    • 一站式搜索:聚合了数百个公有/私有仓库中的Helm Chart、OPA策略、Terraform模块等。
    • 丰富元数据:清晰展示Chart的安全扫描报告、维护状态、文档链接。
    • 找Chart?先去Artifact Hub搜一波准没错!
  2. OCI (Open Container Initiative) 仓库:未来已来!

    • Helm v3+ 直接支持将Chart推送到OCI兼容的仓库(如Docker Hub, Harbor, AWS ECR, GCR等)。
    • 命令和操作容器镜像几乎一样:
      # 将Chart打包推送到OCI仓库
      helm package mychart/ # 生成 mychart-0.1.0.tgz
      helm push mychart-0.1.0.tgz oci://registry.example.com/myrepo
      # 从OCI仓库拉取安装
      helm install myapp oci://registry.example.com/myrepo/mychart --version 0.1.0
      
    • 好处:复用成熟的容器镜像基础设施(权限、存储、分发效率),统一技术栈。(大势所趋啊朋友们!)
  3. 私有仓库仍是刚需:企业核心应用Chart不可能放公有仓库!自建Chart Museum或Harbor是标配。

六、写在最后:拥抱工业化部署思维

(掏心窝子时间)接触helm/charts和整个Helm生态这么多年,最大的感悟是:

Kubernetes运维的成熟度标志之一,就是看是否把应用部署彻底Chart化、仓库化、流水线化。

别再手动拼凑YAML了!(苦口婆心)哪怕是一个简单的内部应用,也值得:

  1. 把它做成Chart:结构清晰,参数可控。
  2. 扔进私有仓库:版本可控,易于共享。
  3. 集成到CI/CD流水线:helm upgrade --install 一步到位。

公共Chart仓库(如Bitnami)解决了基础设施层的标准化问题。而业务应用的Chart化,则是提升团队交付效率与稳定性的关键内功。虽然helm/charts这个传奇仓库归档了,但它代表的**“打包、复用、参数化、集中管理”** 的思想,已经深深刻在云原生部署的DNA里。

(起立鼓掌)所以,赶紧去搜个Chart试试手!感受下工业化部署的威力吧!遇到坑?别怕,社区的力量永远在!冲!!!



分享一个国内的helm chart仓库 找到了国内的一个非常好用的helm chart仓库,应用齐全,介绍详细。(附带非常好用的一个开源的CI/CD工具(免费且方便)) 阅读详情

相关推荐

第 4 篇 Chart 仓库详解

Helm 仓库详解,包括chart仓库特征、社区仓库、国内仓库,如何自建仓库。

甘蓝的专栏 1797

Charts仓库

chart仓库由chart包和包含了仓库中所有chart索引的特殊文件index.yaml。通常描述chart的index.yaml也托管在同一个服务器上作为 来源文件。比如,https://example.com/charts仓库布局可能看起来像这样:charts/在这个案例中,index文件包含了Alpine这一个chart的信息,并提供了下载地址:https://example.com/charts/alpine-0.1.2.tgz。

m0_61608641的博客 714

kubernetes-helm

kubernetes-helm

Drw_Dcm的博客 2137

【笔记】Helm-3 主题-6 Chart仓库指南

一个合法的chart仓库必须有一个index文件,包含了chart仓库中每一个chart的信息。由于chart仓库可以是任何服务于YAML和tar文件并响应GET请求的HTTP服务器,托管您自己的chart仓库时就有很多选择。chart仓库由chart包和包含了仓库中所有chart索引的特殊文件index.yaml。当您准备好分享chart时,最好的方法是将chart上传到chart仓库。不过Helm也可以创建并运行您自己的chart仓库。在高层级中,chart仓库是打包的chart存储和分享的位置。

m0_46141283的博客 1400

Jeff Dean 新创 Discovery Loop:AI 研发自动化平台的技术前瞻与影响

自动化机器学习(AutoML)通过算法自动完成模型选择、超参数优化等任务,其核心原理在于利用贝叶斯优化、进化算法等技术,高效探索庞大的参数空间。这项技术的价值在于显著降低机器学习应用的门槛,提升研发效率与模型性能,广泛应用于计算机视觉、自然语言处理等领域的模型开发与优化。随着 AI 工程化进程加速,对大规模实验管理、智能工作流编排的需求日益增长,这自然引向了旨在系统化提升 AI 研发“发现”循环效率的新兴平台。例如,由 Google AI 传奇人物 Jeff Dean 创立的 Discovery Loop,

weixin_34342992的博客 348

机器学习模型服务化与可观测性实战:从Notebook到高可用生产环境

机器学习模型服务化(Model Serving)是将训练完成的模型封装为可稳定调用API的关键工程环节,其核心在于解决模型加载、请求路由、资源隔离与热更新等系统性问题;而可观测性(Observability)则通过指标、日志与链路追踪三位一体,实现对特征输入、推理过程与业务输出的全栈监控。二者协同构成ML Productionization(机器学习工业化)的基石能力,直接决定模型在真实流量下的稳定性、可解释性与可维护性。典型应用场景包括金融风控实时决策、电商推荐在线打分、IoT边缘异常检测等对延迟、准确率

weixin_33806914的博客 435

从零搭建AI工厂:基于Kubernetes与Kubeflow的MLOps实战指南

机器学习模型从开发到规模化部署,面临着环境不一致、流程手工化、资源管理复杂等工程挑战。MLOps(机器学习运维)通过将软件工程的最佳实践引入机器学习生命周期,旨在实现模型研发的标准化、自动化和可复现性。其核心价值在于提升团队协作效率、加速模型迭代速度,并保障生产环境服务的稳定性与可扩展性。在技术实现上,容器化与编排平台是基础,工作流引擎负责串联数据处理、训练、评估等环节,模型仓库与服务网格则分别管理模型资产和推理API。本文聚焦于如何利用Kubernetes容器编排与Kubeflow机器学习平台栈,构建一个

weixin_34007886的博客 352

从Test Harness到CI/CD:软件工程中的“驾驭”框架设计原理与实践

在软件工程领域,Harness(驾驭框架)是一种核心的工程实践模式,它通过抽象和自动化来管理复杂的技术流程与资源。其基本原理是提供标准化的控制层,将分散、易变的操作封装为可重复、可靠的执行单元。这一设计在技术上极大提升了软件交付的确定性,降低了环境差异与手动操作带来的风险。从测试阶段的Test Harness确保用例的隔离与执行,到持续交付环节的CI/CD Harness编排构建、测试与部署流水线,该模式广泛应用于提升研发效能的关键场景。本文聚焦于Harness如何作为统一框架,解决现代软件开发中工具链集成

weixin_30240349的博客 386

多环境设计实战:从配置分离到自动化部署的完整指南

在软件工程实践中,环境管理是保障应用从开发到上线过程一致性与可靠性的核心。其基本原理在于通过隔离与标准化,为软件生命周期的不同阶段提供独立的运行沙盒,从而在可控条件下进行充分验证。这一实践的技术价值在于显著提升交付质量、降低部署风险,并支撑高效的团队协作。典型的应用场景覆盖了从本地开发、持续集成、各类测试到最终生产上线的完整流水线。实现多环境的关键在于贯彻配置与代码分离的原则,并借助基础设施即代码(IaC)和容器化技术确保环境的一致性与可重复性。本文深入探讨了如何构建包含本地开发、CI、测试及生产环境在内的

weixin_30455023的博客 402

大模型任务匹配指南:GPT-5.5、Claude、Gemini场景化选型

大语言模型并非越‘大’越好,其核心价值在于与具体任务的精准匹配。理解模型底层能力原理——如GPT-5.5的因果链锚定机制、Claude的跨文档语义缝合架构、Gemini的跨模态token统一编码器——是避免报错与提升效能的前提。这些技术特性直接决定其在代码调试、长文档审阅、多模态分析等工程场景中的不可替代性。实践中,‘rate limit reached for gpt-5.5’或‘your current account is not eligible for gemini’等高频报错,90%源于任务与模

weixin_33957648的博客 420

使用harbor作为chart仓库实现内网部署

chart仓库是打包的chart存储和分享的位置。chart仓库由chart包和包含了仓库中所有chart索引的特殊文件index.yaml。通常描述chart的index.yaml也托管在同一个服务器上作为来源文件。

lldhsds的专栏 2044

端到端机器学习落地流水线:从数据到部署的工业级MLOps实践

端到端机器学习并非仅指模型训练,而是涵盖数据接入、特征工程、模型训练、服务部署与持续监控的全生命周期工程体系。其核心原理在于通过分层解耦(数据层→特征层→模型层→服务层)建立可追溯、可复现、可灰度的标准化契约,以应对生产环境中的数据漂移、特征不一致、环境差异和监控缺失等典型挑战。该架构显著提升模型迭代效率与线上稳定性,技术价值体现在缩短交付周期、降低故障定位时间、支撑AB测试与自动重训练。广泛应用于智能质检、金融风控、医疗影像辅助诊断等高可靠性要求场景。本文聚焦真实产线验证的MLOps实践,深入拆解Delt

congsong2560的博客 766

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计1001 模型驱动架构设计 第一章 1.1

一次模型转换可表示为映射:Msrc​ :源模型(如 PIM)R :转换规则集Mtgt​ :目标模型(如 PSM)PIM→PSM 的本质是"加平台信息":P 表示目标平台剖面(Profile),如 JPA、EJB、Spring、.NET。未来十年,MDA 将不再是单纯的“模型到代码”转换工具,而将演变为软件工程智能体(Software Engineering Agent)的核心引擎。

weixin_49199313的博客 1200

AI算力新趋势:训练与推理分离的技术逻辑与实战指南

在人工智能工程实践中,模型训练与推理部署是两大核心环节,它们对计算资源的需求存在本质差异。训练过程侧重于利用海量数据进行参数学习,追求高吞吐量和计算精度,通常依赖大规模GPU集群进行分布式计算。而推理过程则面向实时预测,对低延迟和高可用性有严格要求,常部署在靠近用户或数据源的边缘侧。这种算力需求的分化,催生了“训推分离”的技术架构,旨在实现资源的最优配置与成本效益。从技术价值看,分离架构能更好地匹配不同阶段对硬件(如训练卡与推理卡)、软件框架(如PyTorch与TensorRT)及部署环境(云端与边缘)的特

weixin_34175509的博客 359

声音事件检测metric:PSDS

这项工作为多声道声音事件检测(SED)系统的性能评估定义了一个新的框架,它克服了传统的collar-based事件决定、事件F-cores和事件错误率的限制。拟议的框架引入了对事件检测的定义,该定义对标签的主观性更为稳健。它还采用了多声道接收器操作特性(ROC)曲线,以提供比F1分数更全面的系统性能洞察力,并建议将这些曲线简化为单一的多声道声音检测分数(PSDS),这允许系统独立于操作点(OPs)进行比较。所提出的方法还能更好地了解不同声音类别的数据偏差和分类稳定性。

Maestro_T的博客 2728

RK3588 MPP视频编码实战:从环境搭建到高效封装

本文详细介绍了在RK3588平台上利用MPP(Media Process Platform)进行硬件视频编码的完整实战流程。从MPP库的环境搭建、编译安装,到核心编码参数(如码率控制、GOP、图像对齐)的深入解析,并提供了一个可复用的C++编码器类封装方案,帮助开发者快速实现高效的H.264/H.265视频编码,显著降低CPU占用。

weixin_29192211的博客 345

【Kubernetes】k8s的helm包管理与应用详细说明与操作【helm安装、heml仓库管理和搭建私有仓库】

文章目录helm 的架构环境准备 helm 的架构 前面我们在使用wordpress+MySQL 部署博客应用的时候,需要做许多的工作,需要每个pod创建pv 和pvc,然后分别创建每个应用的pod 及svc,整个过程非常的麻烦。 如果搭建博客所有步骤作为一个整体,放在一个文件夹里(叫做chart),以后我们直接使用这个chart 就可以把所有的操作一次性做完,这样很容易实现了一个博客应用(chart 的一个实例,叫做release),就非常的方便了。这个就类似于我们用虚拟机模板去克隆出来一台台的虚拟机,

崔崇鑫的博客,你linux/云运维工作中的百科全书。 1万+

【simulink模型】独立悬架振动模型,七自由度整车simulink模型

车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。

2401_84610415的博客 1581

Helm Charts 仓库

Helm仓库可以选择Harbor、ChartMuseum。Harbor正是一个用于存储Docker镜像的企业级Registry服务。

IoTHub - 物联网开源技术社区 1954

【DaVinci Configurator专题】-2-将CAN 2.0或CANFD Matrix的Arxml/DBC文件导入到CFG

共9页 目录 1 打开DaVinci Configurator,导入Arxml文件 2 解决导入Arxml文件后可能会出现的一些错误 3 验证CFG的配置 4 根据CFG的配置生成代码 5 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键词: Open the Input Files Assistant Complete update process Update ECU configurati

「汽车电子助手」的博客 6122

实操微信支付,适合第一次接通微信支付的同学

我的实际操作命令如下:就会生成图3中多出来的file文件夹,/Users/camel/cert/xxxxxx_cert/file/wechatpay_5A4xxxxxxxxxx9.pem,wechatpay_xxxxx5A4849E9.pem就是微信支付平台证书,也是程序真正需要的。•注意:我的操作说明,我是把下载好的 CertificateDownloader.jar 文件,放在了解压证书的目录里(图3)。//下面的静态参数要仔细看下面的解释,否则只会调用别人写好的方法,压根学不会0-1接入微信支付。

wjianwei666的专栏 524

helm几个常用仓库

helm几个常用仓库: helm官方:https://hub.helm.sh/ 开源社是由中国支持开源的企业,社区及个人所组织的一个开源联盟,旨在推广开源。 开源社镜像:http://mirror.kaiyuanshe.cn/kubernetes/charts/ ​ http://mirror.azure.cn/kubernetes/charts/ kubernetes app商店:https://hub.kubeapps.com/ ...

u010948569的博客 1万+

《派出你的AI同事:WorkBuddy案例实战》067:按行业分类的案例索引

按行业分类的案例索引 —— 《派出你的AI同事:WorkBuddy案例实战》系列文章,配图已统一为规范示意图。

LuckyHanMo的博客 96

Helm安装部署/添加chart公共仓库/本地仓库搭建

Kubernetes Helm 项目自身的官方仓库。是 Helm 项目的官方chart仓库地址其中/stable表示稳定版本仓库还有一个/incubator表示实验版本仓库这两个仓库均由 Helm 社区维护,提供高质量的预配置应用 charts。Helm 的一些常见公共 Chart 仓库汇总如下:stable -(稳定版本仓库)(实验版本仓库)阿里云charts -七牛云charts -这些都是流行的公共 Helm Chart 仓库,可以根据需求添加使用。

feng271374203的博客 1496

查找【优快云】- 人工客服

【代码】查找【优快云】- 人工客服。

👨‍💻 前端开发者 | 技术分享者 1399

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: Flutter:一次编写,处处运行?不!是处处优雅运行!!!
下一篇: Vite:撕掉等待条!现代前端开发的「涡轮增压」体验 [特殊字符]
普通网友
博客等级 码龄1年 75粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值