
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本文以 charts 仓库中incubator/distribution的 JFrog Distribution Helm Chart 为对象系统讲解其组件构成、安装升级、参数配置与访问方式并结合仓库内模板源码与默认值文件逐项剖析 MongoDB、Redis、Distribution、Distributor 四大组件的实际部署细节。读者阅读完本文后将能独立完成 JFrog Distribution 在 Kubernetes 集群中的一键部署、按需定制存储、探针、JVM 参数、连接串密钥以及常见故障排查。仓库说明本 Chart 已在仓库中标注为 Deprecated已迁移至 stable当前版本0.3.2appVersion1.0.0详见 Chart.yaml如需长期使用建议关注 stable/distribution 的对应演进版本。一、前置条件Prerequisites DetailsKubernetes 1.8一个可用的 Kubernetes 集群已启用动态存储供应Dynamic storage provisioning已设置默认 StorageClass使服务可以基于默认 StorageClass 申请持久化存储一套运行中的Artifactory Enterprise PlusDistribution 依赖其提供发布与分发能力已安装并配置好 [Kubectl] 客户端本文不涉及该工具的安装细节可参考官方 Kubernetes 文档已安装并配置好 Helm包含 helm init 初始化步骤。二、Chart 组件构成Chart Details该 Chart 部署完成后集群内将同时运行四个核心组件组件作用对应模板MongoDB保存 Distribution 的业务数据与审计数据依赖 subchartmongodbv2.0.5Redis作为消息队列/缓存层连接 Distribution 与 Distributor依赖 subchartredisv1.1.21Distributor负责将发行包分发到 Edge 节点distributor-deployment.yamlDistribution核心控制面服务对外提供 REST APIdistribution-deployment.yaml依赖关系在 requirements.yaml 与 requirements.lock 中声明MongoDB 与 Redis 均来自kubernetes-charts.storage.googleapis.com仓库且分别以mongodb.enabled、redis.enabled作为启用开关允许用户完全关闭内置依赖、改连外部实例。2.1 组件间的启动顺序与连接方式从模板源码看两个主服务的 Deployment 都使用了initContainer保证依赖就绪Distribution 的 init-data 容器使用alpine:3.6默认值见 values.yaml 中initContainerImage循环执行nc -z探测{{ release }}-mongodb:27017与{{ release }}-redis:{{ redis.master.port }}两者可达后才启动主容器Distributor 的 prepare-data 容器同样等待 Redis 就绪并额外完成 token 落盘与目录权限修正详见下文。连接信息通过 Kubernetes Secret 注入mongo-connection-secret.yaml 生成业务库与审计库两条连接串redis-connection-secret.yaml 生成 Redis 连接串连接串由 _helpers.tpl 中的mongodb.url、mongodb.audit.url、redis.url三个模板函数拼接并做 base64 编码后写入 Secret主容器通过secretKeyRef以环境变量形式消费。需要特别说明的是这三个模板函数均使用了required指令若mongodb.mongodbPassword为空模板渲染会直接失败并提示A valid .Values.mongodb.mongodbPassword entry required!若redis.redisPassword为空同理报错。因此即便默认mongodb.usePasswordfalse、redis.redisPassword默认值为空只要依赖开启生产部署时必须显式设置这两个密码否则helm install无法完成模板渲染。三、安装与升级3.1 安装 Chart以 release 名为distribution安装helm install --name distribution incubator/distribution安装命令输出NOTES中会给出访问地址指引安装过程涉及多个子组件拉起首次冷启动可能需要数分钟请耐心等待。3.2 访问 Distribution注意Distribution 的对外 IPLoadBalancer可能需要几分钟才能就绪节点也需要时间完成初始配置。请按照 install 命令输出的提示获取 Distribution IP 与访问 URL。NOTES.txt 根据distribution.service.type提供了三种访问方式的完整命令LoadBalancer默认先执行kubectl get svc -w fullname观察 Service 状态待loadBalancer.ingress[0].ip出现后export SERVICE_IP$(kubectl get svc --namespace ns fullname -o jsonpath{.status.loadBalancer.ingress[0].ip}) echo http://$SERVICE_IP:externalPort/NodePortexport NODE_PORT$(kubectl get --namespace ns -o jsonpath{.spec.ports[0].nodePort} services fullname) export NODE_IP$(kubectl get nodes --namespace ns -o jsonpath{.items[0].status.addresses[0].address}) echo http://$NODE_IP:$NODE_PORT/ClusterIP本地端口转发export POD_NAME$(kubectl get pods --namespace ns -l componentdistribution.name -o jsonpath{.items[0].metadata.name}) kubectl port-forward --namespace ns $POD_NAME externalPort:internalPort浏览器打开后使用默认凭据登录user: adminpassword: password。Service 的定义见 distribution-svc.yaml外部端口distribution.externalPort默认 80转发至容器端口distribution.internalPort默认 8080并通过app/component/release三组标签完成 Pod 选择同时支持通过distribution.service.annotations注入云厂商注解如 AWS ELB 配置。3.3 升级 Chart新版本 Chart 发布后使用 helm upgrade 完成滚动更新helm upgrade distribution incubator/distribution四、配置参数详解以下参数表完整继承自 README.md并结合 values.yaml 默认值与模板源码进行了补充说明。所有参数均可在helm install/helm upgrade时通过--set keyvalue[,keyvalue]方式覆盖。4.1 通用参数参数说明默认值imagePullSecrets私有镜像仓库拉取凭据Secret 名称空initContainerImageinitContainer 使用的镜像如 alpinealpine:3.6imagePullSecrets生效于 distribution-deployment.yaml 与 distributor-deployment.yaml 的imagePullSecrets字段initContainerImage同时被两个 initContainer 使用。4.2 MongoDB 子 Chartmongodb.*参数说明默认值mongodb.enabled是否启用内置 MongoDBtruemongodb.image.tagMongoDB 镜像标签3.6.3mongodb.image.pullPolicyMongoDB 容器拉取策略IfNotPresentmongodb.persistence.enabled是否启用持久化卷truemongodb.persistence.existingClaim复用已有 PVC 持久化数据nilmongodb.persistence.storageClass后端 PVC 的 StorageClassgenericmongodb.persistence.size持久化卷大小10Gimongodb.livenessProbe.initialDelaySeconds存活探针延迟启动秒数40mongodb.readinessProbe.initialDelaySeconds就绪探针延迟启动秒数30mongodb.mongodbExtraFlagsMongoDB 额外命令行参数[--wiredTigerCacheSizeGB1]mongodb.usePassword是否启用密码认证falsemongodb.mongodbDatabaseDistribution 使用的业务数据库名bintraymongodb.mongodbRootPasswordroot 用户密码空mongodb.mongodbUsernameDistribution 业务用户distributionmongodb.mongodbPassword业务用户密码空源码级提示见 values.yaml 注释务必确保--wiredTigerCacheSizeGB不超过容器内存 limit 的一半否则极易触发 Kubernetes 的 OOMKill。模板中mongodb.url与mongodb.audit.url会拼出如下形态的连接串并写入 Secretmongodb://distribution:passwordrelease-mongodb:27017/bintray mongodb://distribution:passwordrelease-mongodb:27017/audit?maxpoolsize500即审计连接额外携带maxpoolsize500连接池参数业务库与审计库共享同一 MongoDB 实例、使用不同数据库名数据在 mongo-connection-secret.yaml 中一次生成。4.3 Redis 子 Chartredis.*参数说明默认值redis.enabled是否启用内置 Redistrueredis.redisPasswordRedis 密码空redis.master.portRedis 端口6379redis.persistence.enabled使用 PVC 持久化数据trueredis.persistence.existingClaim复用已有 PVCnilredis.persistence.storageClass后端 PVC 的 StorageClassgenericredis.persistence.size数据卷大小10Giredis.url模板函数生成redis://:passwordrelease-redis:6379形态的连接串经 base64 后写入 redis-connection-secret.yamlDistribution 与 Distributor 两个 Deployment 都通过redis_connectionString环境变量消费它可见 Redis 是二者通信的关键中间层。4.4 Distribution 主服务distribution.*参数说明默认值distribution.nameDistribution 组件名distributiondistribution.image.pullPolicy容器拉取策略IfNotPresentdistribution.image.repository容器镜像docker.jfrog.io/jf-distributiondistribution.image.version镜像标签1.0.0distribution.service.typeService 类型LoadBalancerdistribution.externalPortService 对外端口80distribution.internalPort容器内部端口8080distribution.env.artifactoryUrl上游 Artifactory URL环境变量BT_ARTIFACTORY_URL空distribution.persistence.mountPath持久化卷挂载路径/jf-distributiondistribution.persistence.enabled是否启用持久化truedistribution.persistence.storageClassPVC 的 StorageClassnildistribution.persistence.existingClaim复用已有 PVCnildistribution.persistence.accessModePVC 访问模式ReadWriteOncedistribution.persistence.size持久化卷大小50Gi补充说明以 values.yaml 为准实际镜像仓库默认值为docker.bintray.io/jfrog/distribution-distributionREADME 表格中的docker.jfrog.io/jf-distribution为文档口径两者指向同一产品镜像部署以 values.yaml 为准distribution.env还支持更多环境变量btServerUrlBT_SERVER_URL、artifactoryCi1Urlartifactory_ci_1_url、artifactoryEdge1Url~artifactoryEdge3Urlartifactory_edge_1_url~artifactory_edge_3_url对应 distribution-deployment.yaml 中的环境变量注入且 Edge/CI URL 仅在配置后才注入JVM 参数通过distribution.javaOpts.xms/distribution.javaOpts.xmx控制最终拼入DEFAULT_JAVA_OPTS模板注释明确要求xmx 不得超过resources.limits.memory持久化 PVC 由 distribution-pvc.yaml 生成其 StorageClass 语义遵循标准约定定义storageClass时使用该值设置为-时storageClassName: 即禁用动态供应不设置或为null时不写入storageClassName交由默认 provisionerAWS 为 gp2GKE/AWS/OpenStack 为 standard决定就绪探针与存活探针均请求/api/v1/system/ping:8080就绪探针延迟 60s、存活探针延迟 180s、周期 10s存活探针失败阈值 10见 distribution-deployment.yaml。4.5 Distributor 组件distributor.*参数说明默认值distributor.nameDistributor 组件名distributiondistributor.image.pullPolicy容器拉取策略IfNotPresentdistributor.image.repository容器镜像docker.jfrog.io/jf-distributiondistributor.image.version镜像标签1.0.0distributor.tokenDistributor 鉴权 token空distributor.persistence.mountPath持久化卷挂载路径/bt-distributordistributor.persistence.existingClaim复用已有 PVCnildistributor.persistence.storageClassPVC 的 StorageClassnil使用 alpha 存储注解distributor.persistence.enabled是否启用持久化truedistributor.persistence.accessModePVC 访问模式ReadWriteOncedistributor.persistence.size持久化卷大小50Gi源码级提示values.yaml 中实际镜像为docker.bintray.io/jfrog/distribution-distributor挂载路径为/var/opt/jfrog/distributordistributor.token一旦配置会触发 distributor-token.yaml 生成同名 ConfigMap同时initContainerprepare-data将 token 从 ConfigMap/tmp/security/tokensubPath: token复制到${mountPath}/etc/security/token并执行chmod 400与chown -R 1020:1020见 distributor-deployment.yaml主容器通过BT_SERVER_URLhttp://distribution-fullname:8080指回 Distribution 服务见同文件第 72-73 行distributor.javaOpts.xms/distributor.javaOpts.xmx同样控制 JVM 内存且额外固定-Dfile.encodingUTF8与 Distribution 不同Distributor 的 Deployment未定义 readiness/liveness 探针其健康状态主要通过 Redis 连接与依赖服务探活来保证。4.6 资源与存储规划建议values.yaml 中三个组件的resources默认均为{}即不设置 requests/limits。仓库注释给出了参考基准生产环境建议按需设置MongoDBrequests 2Gi 内存 / 100m CPUlimits 2Gi 内存 / 250m CPURedisrequests 1Gi 内存 / 100m CPUlimits 2Gi 内存 / 250m CPUDistribution / Distributorrequests 2Gi 内存 / 500m CPUlimits 4Gi 内存 / 2 CPU。同时务必遵守两条内存红线MongoDB 的--wiredTigerCacheSizeGB不超过其内存 limit 的一半Java 服务的-Xmx不超过其内存 limit。五、部署形态与运维要点5.1 对象清单一览一次完整部署会在集群中产生以下对象命名基于 release 名类型名称模式来源模板Secretrelease-distribution-mongo-connectionmongo-connection-secret.yamlSecretrelease-distribution-redis-connectionredis-connection-secret.yamlConfigMap可选release-distribution-distributor-tokendistributor-token.yamlPVCrelease-distributiondistribution-pvc.yamlServicerelease-distributiondistribution-svc.yamlDeploymentrelease-distributiondistribution-deployment.yamlDeploymentrelease-distributordistributor-deployment.yaml子 Chart 对象release-mongodb、release-redis相关mongodb / redis subchart命名规则由 _helpers.tpl 中的distribution.fullname/distributor.fullname生成release 名已包含组件名时直接复用否则拼接为release-name并统一截断至 DNS 规范的 63 字符。5.2 常见配置场景示例场景一对接外部 MongoDB 与 Redis仅部署主服务helm install --name distribution incubator/distribution \ --set mongodb.enabledfalse \ --set redis.enabledfalse \ --set mongodb.mongodbPasswordmongo-pass \ --set redis.redisPasswordredis-pass注意关闭子 Chart 后连接串模板函数仍会被渲染密码类参数依然为必填项required校验。场景二配置 Distributor token 并指定私有仓库凭据helm install --name distribution incubator/distribution \ --set imagePullSecretsmy-registry-secret \ --set distributor.token$(cat token.txt) \ --set distribution.env.artifactoryUrlhttp://artifactory.example.com:8081场景三本地联调ClusterIP port-forwardhelm install --name distribution incubator/distribution \ --set distribution.service.typeClusterIP \ --set mongodb.mongodbPasswordmongo-pass \ --set redis.redisPasswordredis-pass随后按 3.2 节 ClusterIP 分支的命令执行kubectl port-forward即可在http://127.0.0.1:80访问。5.3 升级与排障建议升级操作保持 release 名不变helm upgrade distribution incubator/distribution若模板渲染报required错误优先检查mongodb.mongodbPassword、redis.redisPassword是否缺失若 Pod 长时间处于 Init 阶段使用kubectl logs pod -c init-data或prepare-data确认 MongoDB / Redis 的nc探测是否通过若 Distribution 反复重启结合kubectl logs pod观察探针/api/v1/system/ping返回并核对DEFAULT_JAVA_OPTS中-Xmx与内存 limit 的关系LoadBalancer IP 长时间未分配时使用kubectl get svc -w release-distribution观察事件并确认云平台配额。六、相关资源本仓库中的升级版稳定版 stable/distribution含 requirements.lock编排结构更完整Chart 依赖声明requirements.yaml、requirements.lock完整默认配置values.yaml模板入口_helpers.tpl 与 templates 目录官方文档入口请参阅原 README 的 Useful links 小节涉及 Getting Started 与 Distribution 安装指南为外部站点本文不再展开。适用前提与限制本文描述基于仓库内incubator/distributionversion 0.3.2appVersion 1.0.0的代码与默认值适用于 Kubernetes 1.8、Helm v2含 helm init环境该 Chart 已标记 deprecated 并迁移至 stable新部署建议优先评估 stable/distribution。镜像仓库与版本号请以实际部署时的 values.yaml 为准。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐Activepieces Helm Chart生产环境部署指南Activepieces Helm Chart生产环境部署指南 概述 Activepieces 是一款开源的自动化工作流工具支持 100 集成是企业级自工作流自动化低代码AI 应用人工智能AI AgentMCP 服务后端前端PgCat生产环境部署Docker、Kubernetes和Helm Chart完整方案PgCat生产环境部署Docker、Kubernetes和Helm Chart完整方案 PgCat是一款功能强大的PostgreSQL连接池工具支持分片、负基于 Helm 在生产环境部署 Jaeger 分布式追踪系统incubator/jaeger Chart 全指南基于 Helm 在生产环境部署 Jaeger 分布式追踪系统incubator/jaeger Chart 全指南 Jaeger 是一款用于微服务架构的分布式追上一篇OOTDiffusion虚拟试穿技术实现方案与集成部署指南下一篇Awesome Hermes Agent目录初探Hermes Agent开源AI智能体生态的完整资源地图创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考