
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载JasperReports Server 是一款可独立运行或嵌入式使用的开源报表与 BI商业智能服务器提供基于 Web 的报表、分析工具、可视化以及将多个自定义视图聚合到同一面板的 Dashboard 能力。本文以当前仓库stable/jasperreportsHelm Chart 为骨架完整讲解其安装、卸载、全量配置参数、持久化、Ingress/TLS、升级注意事项以及 Chart 弃用后的迁移路径并结合 deployment.yaml 等模板源码说明参数到容器环境变量的映射关系。读完本文你将能够独立在 Kubernetes 集群中部署 JasperReports、按需选择内置 MariaDB 或外部数据库、配置 SMTP 邮件与 Ingress并安全完成版本升级与仓库迁移。一、Chart 定位与组件组成该 Chart 通过 Helm 包管理器在 Kubernetes 集群上引导bootstrap一个 JasperReports 部署其核心组件包括JasperReports 应用容器默认使用 Bitnami 维护的bitnami/jasperreports镜像本仓库 Chart 固定版本为7.2.0-debian-10-r24见 values.yaml数据库依赖Chart 打包了 Bitnami MariaDB Chart依赖声明见 requirements.yaml条件mariadb.enabled默认随应用一起部署一套 MariaDB也可以关闭内置数据库改为连接外部数据库Kubernetes 资源Deployment、Service、Secret、PVC、Ingress 等模板位于 stable/jasperreports/templates 目录下。从 Chart.yaml 可以看到该 Chart 版本为7.0.11对应appVersion: 7.2.0并已标记deprecated: true——这一点会在本文末尾专门说明。该 Chart 同时可配合 Kubeapps 进行图表部署与管理并已在 BKPRBitnami Kubernetes Production Runtime之上与 NGINX Ingress、cert-manager、fluentd、Prometheus 一起验证过运行。二、部署前提条件Prerequisites在安装之前请确认集群与基础设施满足以下条件以当前 Chart 的实际声明为准Kubernetes 1.12Deployment 的apiVersion会根据集群版本自动选择低于 1.14 使用extensions/v1beta1否则使用apps/v1见 _helpers.tplHelm 2.11 或 Helm 3.0-beta3_helpers.tpl中的镜像与 pullSecrets 逻辑针对 Helm 2.11 的变量作用域行为编写旧版本可能无法正确渲染底层基础设施支持 PVPersistent Volume供应JasperReports 与 MariaDB 默认开启持久化需要集群具备动态或静态存储供应能力多副本场景需要 ReadWriteMany 卷如果对 Deployment 进行水平扩容JasperReports 的数据卷需要支持多节点同时读写。三、快速安装与卸载3.1 一条命令完成安装TL;DR$ helm install my-release stable/jasperreports该命令会以默认配置在集群中部署 JasperReports同时部署其依赖的内置 MariaDB。3.2 指定 release 名称安装$ helm install my-release stable/jasperreports部署完成后可用helm list查看所有 release。3.3 卸载$ helm delete my-release该命令会删除与该 Chart 关联的所有 Kubernetes 组件并清理 release。3.4 获取访问地址与登录凭据安装后 Chart 的 NOTES.txt 会根据service.type与ingress.enabled输出访问指引以下为不同场景下的核心命令按模板源码整理LoadBalancer 模式等待kubectl get svc --namespace ns -w release名中出现外部 IP 后执行export SERVICE_IP$(kubectl get svc --namespace default release名 --template {{{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}}}) echo JasperReports URL: http://$SERVICE_IP/jasperserver/NodePort 模式export NODE_PORT$(kubectl get --namespace default -o jsonpath{.spec.ports[0].nodePort} services release名) export NODE_IP$(kubectl get nodes --namespace default -o jsonpath{.items[0].status.addresses[0].address}) echo JasperReports URL: http://$NODE_IP:$NODE_PORT/ClusterIP 模式本地端口转发echo JasperReports URL: http://127.0.0.1:8080/jasperserver/ kubectl port-forward --namespace default svc/release名 8080:80登录凭据用户名为jasperreportsUsername默认user密码自动生成并存储在 Secret 中可用以下命令解码获取echo Username: user echo Password: $(kubectl get secret --namespace default release名 -o jsonpath{.data.jasperreports-password} | base64 --decode)若既未启用内置 MariaDB 又未提供外部数据库主机NOTES.txt 会输出 ERROR 提示并要求通过helm upgrade release名 --set service.type...,mariadb.enabledfalse,externalDatabase.hostYOUR_EXTERNAL_DATABASE_HOST stable/jasperreports补齐配置。四、全量配置参数参考Parameters以下是该 Chart 的全部可配置参数及默认值。为便于检索这里按模块分组整理内容完整继承自 README并依据 values.yaml 与各模板源码校正默认值。4.1 全局与镜像参数参数说明默认值global.imageRegistry全局 Docker 镜像仓库nilglobal.imagePullSecrets全局 Docker 仓库 Secret 名称数组[]不会给 Pod 添加拉取凭据global.storageClass全局动态供应存储类nilimage.registryJasperReports 镜像仓库docker.ioimage.repositoryJasperReports 镜像名bitnami/jasperreportsimage.tag镜像 Tag{TAG_NAME}Chart 内实际锁定7.2.0-debian-10-r24image.pullPolicy镜像拉取策略IfNotPresentimage.pullSecrets指定 docker-registry Secret 名称数组[]nameOverride部分覆盖jasperreports.fullname会保留 release 名作前缀nilfullnameOverride完全覆盖jasperreports.fullnamenil源码佐证image.registry、global.imageRegistry与image.tag的组合渲染逻辑见 _helpers.tplglobal.imagePullSecrets与image.pullSecrets的优先级合并逻辑见 _helpers.tpl。4.2 应用账号与 SMTP 参数参数说明默认值jasperreportsUsername应用管理员用户名userjasperreportsPassword应用密码随机 10 位字母数字字符串jasperreportsEmail管理员邮箱userexample.comsmtpHostSMTP 主机nilsmtpPortSMTP 端口nilsmtpEmailSMTP 发件邮箱nilsmtpUserSMTP 用户名nilsmtpPasswordSMTP 密码nilsmtpProtocolSMTP 协议可选ssl或nonenilallowEmptyPassword是否允许数据库空密码yes源码佐证未显式设置jasperreportsPassword时secrets.yaml 会通过randAlphaNum 10生成随机密码并写入 Secret 的jasperreports-password键smtpPassword同样被写入 Secret容器内通过secretKeyRef引用见 deployment.yaml。4.3 数据库参数内置 MariaDB / 外部数据库参数说明默认值mariadb.enabled是否使用内置 MariaDB Charttruemariadb.db.name要创建的数据库名bitnami_jasperreportsmariadb.db.user要创建的数据库用户bn_jasperreportsmariadb.db.password数据库用户密码nil随机生成mariadb.rootUser.passwordMariaDB 管理员root密码nilexternalDatabase.host外部数据库主机nilexternalDatabase.port外部数据库端口3306externalDatabase.user外部数据库已有用户名bn_jasperreportsexternalDatabase.password上述用户的密码nilexternalDatabase.database外部数据库名bitnami_jasperreports源码佐证当mariadb.enabledtrue时容器通过secretKeyRef从 MariaDB 的mariadb-password键读取数据库密码当关闭内置 MariaDB 时改为读取${release名}-externaldbSecret 中的db-password键该 Secret 由 externaldb-secrets.yaml 按externalDatabase.password渲染空值默认。完整分支逻辑见 deployment.yaml。4.4 Service 与 Ingress 参数参数说明默认值service.typeKubernetes Service 类型LoadBalancerservice.externalTrafficPolicy是否保留客户端源 IPClusterservice.portService HTTP 端口80service.nodePorts.httpKubernetes HTTP NodePortingress.enabled是否创建 Ingress 资源falseingress.annotationsIngress 注解key:value 对[]ingress.certManager是否添加 cert-manager 注解falseingress.hosts[0].name访问 JasperReports 的主机名jasperreports.localingress.hosts[0].pathURL 路径/ingress.hosts[0].tls是否启用 TLS 后端falseingress.hosts[0].tlsHostsIngress 记录的 TLS 主机数组为nil时默认取ingress.hosts[0].namenilingress.hosts[0].tlsSecretTLS Secret证书名称jasperreports.local-tls-secretingress.secrets[0].nameTLS Secret 名称nilingress.secrets[0].certificateTLS Secret 证书内容nilingress.secrets[0].keyTLS Secret 私钥内容nil源码佐证Service 的externalTrafficPolicy仅在类型为LoadBalancer或NodePort时注入nodePort仅在类型为NodePort且显式指定时写入见 svc.yamlIngress 的 TLS 配置由 ingress.yaml 遍历ingress.hosts渲染后端指向servicePort: http。4.5 持久化、资源与调度参数参数说明默认值persistence.enabled是否使用 PVC 持久化truepersistence.storageClassJasperReports 卷的 PVC StorageClassnil使用 alpha 存储注解persistence.accessModePVC 访问模式ReadWriteOncepersistence.sizePVC 存储请求大小8GiresourcesCPU/内存资源 requests/limits{Memory: 512Mi, CPU: 300m}affinity节点/Pod 亲和性映射{}源码佐证PVC 由 pvc.yaml 渲染storageClass的取值语义-表示禁用动态供应并写入空storageClassNamenil表示不写该字段从而使用默认供应器如 AWS 的 gp2、GKE 的 standard在 _helpers.tpl 中实现affinity与resources分别注入到 Deployment 的spec.affinity与容器resources字段。五、配置方式--set与values.yaml所有参数都可通过helm install的--set keyvalue[,keyvalue]参数指定。例如$ helm install my-release \ --set jasperreportsUsernameadmin,jasperreportsPasswordpassword,mariadb.rootUser.passwordsecretpassword \ stable/jasperreports该命令将 JasperReports 管理员账号的用户名与密码分别设置为admin和password同时将 MariaDBroot用户的密码设置为secretpassword。说明README 示例中的--set ...mariadb.mariadbRootPasswordsecretpassword在 values.yaml 中对应的实际键为mariadb.rootUser.password配置时以后者为准。此外也可以编写 YAML 文件并通过-f传入$ helm install my-release -f values.yaml stable/jasperreports默认的 values.yaml 即为完整的配置模板所有参数均带有注释说明可复制后按需修改。六、源码视角参数到容器环境变量的映射透过 deployment.yaml 可以清楚看到每个参数最终如何进入容器数据库连接MARIADB_HOST、MARIADB_PORT_NUMBER、JASPERREPORTS_DATABASE_NAME、JASPERREPORTS_DATABASE_USER直接取自对应 valuesJASPERREPORTS_DATABASE_PASSWORD一律通过secretKeyRef从 Secret 注入避免明文出现在 Pod Spec 中应用账号JASPERREPORTS_USERNAME直接取值JASPERREPORTS_PASSWORD从 release Secret 的jasperreports-password键读取邮件配置SMTP_HOST、SMTP_PORT、SMTP_EMAIL、SMTP_USER、SMTP_PROTOCOL仅在对应 values 非空时注入SMTP_PASSWORD则从 Secret 的smtp-password键读取健康检查容器监听8080端口containerPort: httpliveness 探针探测/jasperserver/login.htmlinitialDelaySeconds: 300、timeoutSeconds: 5、failureThreshold: 6readiness 探针同样探测登录页initialDelaySeconds: 30、timeoutSeconds: 3、periodSeconds: 5。这些阈值意味着应用启动较慢时探针不会误杀 Pod数据卷/bitnami/jasperreports目录挂载jasperreports-data卷persistence.enabledtrue时挂载 PVC否则退化为emptyDir数据不持久。这些环境变量名与 values.yaml 中注释指向的 Bitnami JasperReports 容器镜像文档保持对应。七、持久化存储详解Bitnami JasperReports 镜像将报表数据与配置保存在容器内的/bitnami/jasperreports路径下因此 Chart 使用 Persistent Volume Claims 保证数据在 Deployment 重建后不丢失。该方案已在GCE、AWS 与 minikube上验证可用默认 PVC 大小8Gi、访问模式ReadWriteOnce详见 values.yamlpersistence.storageClass的三种语义需特别注意设为具体类名则写入storageClassName设为-则写入空字符串从而禁用动态供应留空/null则不写该字段交由集群默认供应器AWS 的 gp2、GKE/AWS/OpenStack 的 standard处理内置 MariaDB 同样默认开启持久化mariadb.master.persistence.enabled: true、8Gi、ReadWriteOnce若彻底不需要持久化可将persistence.enabled与mariadb.master.persistence.enabled置为false。八、Ingress 与 TLS 集成将ingress.enabled设为true后Chart 会生成 Ingress 资源默认主机名为jasperreports.local路径/转发到 Service 的http端口多主机ingress.hosts为数组可同时覆盖多个主机名TLS将某个 host 的tls置为true并指定tlsSecret默认jasperreports.local-tls-secrettlsHosts可用于声明与主机名不同的 TLS 主机列表例如配合支持 www 跳转的 Ingress 控制器cert-manager将ingress.certManager置为true模板会自动注入kubernetes.io/tls-acme: true注解见 ingress.yaml由 cert-manager 自动签发并创建证书 Secret自带证书可在ingress.secrets数组中提供name、certificate、key内容需以-----BEGIN CERTIFICATE-----或-----BEGIN RSA PRIVATE KEY-----开头若使用 cert-manager则无需手动提供 Secret自定义注解通过ingress.annotations传入任意 key:value 注解例如kubernetes.io/ingress.class: nginx。九、镜像 Tag 策略Rolling 与 Immutable 的区别生产环境强烈建议使用不可变immutableTag避免同名的滚动 Tag 被上游更新后集群在拉取时静默切换到内容不同的镜像导致无法预期的行为变更。如果镜像 Tag 形如7.2.0-debian-10-r24带-r数字后缀即为不可变 Tag。NOTES.txt 还会自动检测当image.repository包含bitnami/且 Tag 不是-r\d$结尾或 sha256 摘要时会输出 Rolling tag detected 的警告。Bitnami 会在主容器发布新版本、出现重大变更或存在关键漏洞时发布新版 Chart 并更新容器。十、升级注意事项Upgrading10.1 升级到 7.0.0Deployment apiVersion 变更Helm 会依据资源的 GroupVersionKindGVK即 groupapps、versionv1、kindDeployment执行对象查找。7.0.0 版本将该 Chart 的 DeploymentapiVersion更新为apps/v1与旧 API 弃用节奏保持一致而 GVK 变更在 Kubernetes 视角下属于兼容性破坏无法原地升级旧对象。因此从更早版本升级到 7.0.0 时需要按 Helm 的处理方式重新创建相关 Deployment 资源。实现佐证当前 deployment.yaml 的 apiVersion 由_helpers.tpl中的jasperreports.deployment.apiVersion模板决定Kubernetes 1.14 及以上使用apps/v1。10.2 升级到 3.0.0Selector 标签变更3.0.0 之前版本的 Chart 在 Deployment 的spec.selector.matchLabels中带有chart标签新版本移除了该标签因此向后兼容性不再保证需要先手工调整旧资源后再升级。以下示例假设 release 名为jasperreports$ kubectl patch deployment jasperreports-jasperreports --typejson -p[{op: remove, path: /spec/selector/matchLabels/chart}] $ kubectl delete statefulset jasperreports-mariadb --cascadefalse执行后再使用新版本 Chart 重新升级 release即可让新 Deployment 的 selector 接管现有 Pod。十一、Chart 弃用声明与迁移到 Bitnami 仓库由于 Helmstable仓库进入弃用时间线本 Chart含 Chart.yaml 中的deprecated: true标记与 NOTES.txt 开头的弃用说明已停止维护JasperReports 的 Bitnami 维护版 Chart 迁移至bitnami/charts仓库Bitnami 仓库已纳入 Helm Hub后续更新、支持节奏保持不变。安装方式非常相似只需添加bitnami仓库并在安装时使用bitnami/chart替代stable/chart$ helm repo add bitnami https://charts.bitnami.com/bitnami $ helm install my-release bitnami/chart # Helm 3 $ helm install --name my-release bitnami/chart # Helm 2将已有的stable部署升级到 Bitnami 仓库中的 Chart$ helm repo add bitnami https://charts.bitnami.com/bitnami $ helm upgrade my-release bitnami/chart关于 Chart 本身的 Issue 与 PR 会被转交至bitnami/chartsGitHub 仓库与本次迁移过程相关的疑问集中在helm/charts仓库的迁移讨论 Issue 中统一答复。对于正在使用本仓库 Chart 的读者建议评估后尽快迁移以获得持续的漏洞修复与版本更新。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐终极指南如何在Kubernetes上使用Helm Chart部署Dendrite Matrix服务器终极指南如何在Kubernetes上使用Helm Chart部署Dendrite Matrix服务器 Dendrite是一个使用Go语言编写的第二代Matri后端即时通讯vLLM Helm Chart 深度解析用 chart-helm 在 Kubernetes 上部署 vLLM 推理服务vLLM Helm Chart 深度解析用 chart helm 在 Kubernetes 上部署 vLLM 推理服务 本篇基于仓库中的 Helm Chart人工智能大模型模型推理服务推理引擎本地部署OCLP手把手教程免费让老Mac升级最新macOSOCLP手把手教程免费让老Mac升级最新macOS 如果你有一台2008到2019年间的Intel MacApp Store早已对新版macOS关门Ope操作系统固件驱动开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考