
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载导读本文以 helm/charts 仓库中的stable/cerebro图表Chart为核心系统讲解如何在 Kubernetes 集群上通过 Helm 部署Cerebro——一款基于 Scala、Play Framework、AngularJS 与 Bootstrap 构建的开源MIT LicenseElasticsearch Web 管理工具通常被用作 Kopf 插件的替代品。读完本文你将掌握 Cerebro 的安装、卸载、全量配置参数含义、基于 ConfigMap 的底层配置生成原理以及如何通过 Ingress、探针、认证环境变量与 TLS 校验等机制把 Cerebro 完整接入自己的 Kubernetes 环境。一、仓库归档状态与阅读前提本仓库helm/charts已于 2020 年 11 月 13 日起进入归档状态此后其中所有 Charts 不再更新。stable/cerebro的 Chart.yaml 中同样标记了deprecated: trueREADME 也明确提示 This chart is deprecated and no longer supported。这并不影响本文的技术参考价值图表仍保留了完整的模板实现与默认配置你可以将其作为自建 Cerebro Helm Chart 的蓝本或直接基于现有版本离线使用。在动手前需注意该图表要求Kubernetes 1.9图表版本为1.9.5对应应用版本appVersion0.9.2默认镜像为lmenezes/cerebro:0.9.2模板采用 Helm 2 时代的语法helm install --name在 Helm 3 下请相应改用helm install my-release chart-path的形式。二、图表整体结构stable/cerebro目录下共 6 个模板与资源文件构成一个完整的可部署图表文件作用Chart.yaml图表元数据名称、版本、appVersion、deprecated 标记values.yaml全部可配置参数的默认值templates/deployment.yamlDeployment 工作负载定义含探针、卷、安全上下文templates/configmap.yaml动态生成 Cerebro 的application.conf配置文件templates/service.yaml集群内 Service 暴露定义templates/ingress.yaml可选的 Ingress 规则templates/_helpers.tpl名称与标签生成辅助模板templates/NOTES.txt安装完成后输出的访问指引整个部署形态非常简单一个 Deployment 一个 Service可选开启 Ingress同时通过 ConfigMap 挂载配置支持注入环境变量可配合 Secret 使用以启用 Cerebro 自带的认证Basic / LDAP。三、安装与卸载3.1 安装以 release 名称my-release安装Helm 2 语法README 原始写法$ helm install --name my-release stable/cerebro安装过程会创建以下 Kubernetes 组件一个 Deployment默认副本数1一个 Service默认类型ClusterIP端口80一个 ConfigMap挂载为/etc/cerebro/application.conf可选一个 Ingress默认关闭。提示使用helm list可以查看所有已安装的 release。3.2 卸载$ helm delete my-release该命令会移除与图表关联的所有 Kubernetes 组件并删除 release。注意Deployment 中用于存放 Cerebro 数据库/var/db/cerebro的卷是emptyDir卸载即丢失需要持久化的场景应自行挂载 PVC。四、完整配置参数一览下表完整列出stable/cerebro图表的可配置参数及其默认值来自 values.yaml 与 README 参数表参数描述默认值replicaCount副本数1image.repository运行镜像lmenezes/cerebroimage.tag镜像标签0.9.2image.pullPolicy镜像拉取策略IfNotPresentimage.pullSecrets指定镜像拉取 Secretnil不为 Pod 添加 pullSecretsinit.image.repositoryinit 容器镜像预留docker.io/busyboxinit.image.taginit 容器镜像标签muslinit.image.pullPolicyinit 容器拉取策略IfNotPresentdeployment.annotationsDeployment 注解{}deployment.podAnnotationsPod 额外注解{}deployment.labelsDeployment 额外标签{}deployment.podLabelsPod 额外标签{}deployment.livenessProbe.enabled启用存活探针truedeployment.readinessProbe.enabled启用就绪探针trueservice.typeService 类型ClusterIPservice.portService 端口80service.annotationsService 注解{}service.labelsService 标签{}resources.requests.cpuCPU 请求空resources.limits.cpuCPU 上限空resources.requests.memory内存请求空resources.limits.memory内存上限空ingressIngress 设置{}enabled: falseingress.labelsIngress 额外标签{}priorityClassNamePod 优先级类名nilnodeSelector节点选择器{}tolerations容忍度[]affinity亲和性{}env环境变量 Mapkey/value{}envFromSecretRef引用包含环境变量的 Secret空config.basePath应用基础路径/config.restHistorySize每用户 REST 请求历史大小50config.hosts已知 Elasticsearch 主机列表[]config.secret用于签名会话 Cookie 的密钥随机 64 位字母数字串config.tlsVerify校验 Elasticsearch 证书trueconfig.tlsCaCert用于证书校验的 CA 证书见 values.yaml 注释securityContextPod 安全上下文runAsNonRoot: true、runAsUser: 1000、runAsGroup: 1000volumes额外卷定义空见 values.yaml 注释示例volumeMounts额外卷挂载定义空见 values.yaml 注释示例五、配置方式--set 与 values 文件指定每个参数有两种标准方式。方式一--set keyvalue[,keyvalue]命令行参数$ helm install --name my-release \ stable/cerebro方式二YAML 文件覆盖默认值$ helm install --name my-release -f values.yaml stable/cerebro提示默认 values.yaml 即可作为编写自定义 values 文件的起点。六、核心配置项深度解析6.1 镜像与容器运行参数Deployment 模板deployment.yaml中容器启动参数为args: [-Dconfig.file/etc/cerebro/application.conf] ports: - name: http containerPort: 9000 protocol: TCP也就是说Cerebro 进程通过 JVM 系统属性显式指定配置文件路径/etc/cerebro/application.conf由 ConfigMap 挂载应用监听容器端口9000由 Service 将外部端口默认80转发到名为http的 targetPort。6.2 探针Probe默认开启存活与就绪探针deployment.yamllivenessProbe: httpGet: path: {{ .Values.config.basePath }} # 默认 / port: http initialDelaySeconds: 120 readinessProbe: httpGet: path: {{ .Values.config.basePath }} port: http initialDelaySeconds: 5两者均对http端口发起 HTTP GET 请求探针路径跟随config.basePath。存活探针initialDelaySeconds: 120给了应用较长的启动缓冲如无需探针可分别将deployment.livenessProbe.enabled/deployment.readinessProbe.enabled设为false。6.3 配置生成ConfigMap 与 application.conf这是本图表最值得关注的部分。configmap.yaml 会根据 values 动态渲染出 Cerebro 的application.conf挂载点位于/etc/cerebro。逐段解读其生成逻辑会话密钥secret未配置config.secret时模板自动生成 64 位随机字母数字串{{- if .Values.config.secret }} secret {{ .Values.config.secret | quote }} {{- else }} secret {{ randAlphaNum 64 | quote }} {{- end }}该密钥用于签名会话 Cookie随机生成意味着每次重新部署都会变化所有用户的既有会话将失效。Elasticsearch TLS 校验{{- if .Values.config.tlsVerify }} play.ws.ssl.loose.acceptAnyCertificate false {{- else }} play.ws.ssl.loose.acceptAnyCertificate true {{- end }}config.tlsVerify: true时严格校验证书置为false则放松为接受任意证书仅建议在无 TLS 的测试环境使用。自定义 CA 证书配置config.tlsCaCert如/opt/cerebro/conf/certs/ca.crt时追加 Play WS 的信任库配置play.ws.ssl { trustManager { stores [ { type PEM, path /opt/cerebro/conf/certs/ca.crt } ] } }配合 values.yaml 中注释的卷示例使用——将包含 CA 证书的 Secret如cerebro_ca_cert_secret以只读方式挂载到/opt/cerebro/conf/certs/volumeMounts: - mountPath: /opt/cerebro/conf/certs/ name: ca_cert_volume readOnly: true volumes: - name: ca_cert_volume secret: defaultMode: 420 optional: false secretName: cerebro_ca_cert_secret基础路径与历史记录basePath {{ .Values.config.basePath | quote }} # 默认 / rest.history.size {{ .Values.config.restHistorySize }} # 默认 50basePath影响探针路径、访问 URL 与反向代理路由rest.history.size控制每个用户保留的 REST 请求历史条数。数据与日志路径pidfile.path /dev/null data.path /var/db/cerebro/cerebro.db数据文件落在/var/db/cerebroDeployment 中以emptyDir挂载日志目录为/opt/cerebro/logs/另有/tmp空卷。6.4 认证环境变量驱动的 Basic / LDAPConfigMap 中的auth段完全由环境变量驱动${?VAR}语法表示“存在则取值”auth { type: ${?AUTH_TYPE} # either basic or ldap settings { # LDAP url ${?LDAP_URL} base-dn ${?LDAP_BASE_DN} method ${?LDAP_METHOD} user-template ${?LDAP_USER_TEMPLATE} bind-dn ${?LDAP_BIND_DN} bind-pw ${?LDAP_BIND_PWD} group-search { base-dn ${?LDAP_GROUP_BASE_DN} user-attr ${?LDAP_USER_ATTR} user-attr-template ${?LDAP_USER_ATTR_TEMPLATE} group ${?LDAP_GROUP} } # Basic auth username ${?BASIC_AUTH_USER} password ${?BASIC_AUTH_PWD} } }即设置AUTH_TYPEbasic并配合BASIC_AUTH_USER/BASIC_AUTH_PWD可启用 Basic 认证设置AUTH_TYPEldap并填充LDAP_*系列变量可启用 LDAP 认证。这些环境变量通过两种方式注入deployment.yamlenv直接以 key/value Map 形式定义例如 values.yaml 中注释的示例env: AUTH_TYPE: basic BASIC_AUTH_USER: adminenvFromSecretRef引用一个已存在的 Secret 对象将其全部 key 作为环境变量注入envFromSecretRef: my-secret-refREADME 也特别提示使用 Cerebro 自带认证时需通过上传包含所需环境变量的 Secret 来提供凭据同时不要忘记设置AUTH_TYPE。注意 Secret 中的变量名需与上面application.conf模板中的${?VAR}一一对应。6.5 已知 Elasticsearch 主机列表config.hosts用于预填充 Cerebro 界面中的 ES 连接列表configmap.yamlhosts [ { host elasticsearch-master:9200 name production-cluster } ]values.yaml 中对应结构为config: hosts: - host: elasticsearch-master:9200 name: production-cluster每个条目由hostES 地址与name显示名称组成生成时由模板拼接为 HOCON 数组。另外模板中固定启用了es.gzip true即 Cerebro 到 Elasticsearch 的请求开启 gzip 压缩。七、网络暴露Service 与 Ingress7.1 Serviceservice.yaml 默认生成ClusterIP类型 Service端口80targetPort: http即容器 9000 端口选择器为appchart名, releaserelease名可自由扩展 annotations 与 labels。7.2 Ingressingress.enabled: true时才会渲染 ingress.yaml。values.yaml 中相关默认值ingress: enabled: false annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: true labels: {} path: / hosts: - chart-example.local tls: [] # - secretName: chart-example-tls # hosts: # - chart-example.local模板会按集群能力自动选择 API 版本优先networking.k8s.io/v1beta1否则回退extensions/v1beta1并将流量路由到 Service 的http端口。启用 TLS 时需在ingress.tls中提供secretName与hosts。7.3 安装后如何访问NOTES.txt 会根据暴露方式输出对应访问命令核心逻辑如下Ingress 启用直接访问http(s)://hostpathService 为 NodePort通过kubectl get svc -o jsonpath{.spec.ports[0].nodePort}取节点端口访问http://$NODE_IP:$NODE_PORTService 为 LoadBalancer通过kubectl get svc取负载均衡 IP访问http://$SERVICE_IP:80默认 ClusterIP使用kubectl port-forward将本机8080端口转发到 Pod 的 80 端口export POD_NAME$(kubectl get pods --namespace namespace -l appcerebro,releasemy-release -o jsonpath{.items[0].metadata.name}) kubectl port-forward $POD_NAME 8080:80然后在浏览器打开http://127.0.0.1:8080即可使用 Cerebro 界面。八、调度与安全上下文Deployment 模板对nodeSelector、affinity、tolerations、priorityClassName均做了透传支持可直接在 values 中声明。默认 values.yaml 的 Pod 安全上下文为securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000即以 UID/GID 1000 的非 root 身份运行容器符合最小权限原则如需调整可整体覆盖securityContext。九、完整自定义 values 示例综合以上内容一份面向生产环境启用 Basic 认证 已知 ES 主机 资源限制 Ingress的自定义 values 可参考如下replicaCount: 1 image: repository: lmenezes/cerebro tag: 0.9.2 pullPolicy: IfNotPresent env: AUTH_TYPE: basic BASIC_AUTH_USER: admin service: type: ClusterIP port: 80 ingress: enabled: true annotations: kubernetes.io/ingress.class: nginx path: / hosts: - cerebro.example.com config: basePath: / restHistorySize: 50 hosts: - host: elasticsearch-master:9200 name: production-cluster secret: replace-with-a-long-random-string tlsVerify: true tlsCaCert: /opt/cerebro/conf/certs/ca.crt resources: requests: cpu: 200m memory: 256Mi limits: cpu: 500m memory: 512Mi nodeSelector: {} tolerations: [] affinity: {}安装时执行$ helm install my-release -f my-values.yaml stable/cerebro十、总结stable/cerebro是一个结构清晰、配置收敛的小型 Helm 图表Deployment 负责运行、ConfigMap 动态渲染application.conf、环境变量驱动认证与 TLS 行为、Ingress/Service 负责暴露。其核心设计经验——用 ConfigMap 承载应用配置、用 Secret 注入敏感环境变量、用探针保证可观测性——在今天编写任何 Java/Scala 系中间件管理工具的自定义 Chart 时依然值得直接借鉴。尽管该 Chart 已随仓库归档不再更新但其模板逻辑与 values.yaml 中完整的默认参数仍可作为部署 Cerebro 0.9.2 的可靠参考。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐Teleport Helm Chart 部署指南用 teleport-cluster 在 Kubernetes 上搭建高可用集群Teleport Helm Chart 部署指南用 teleport cluster 在 Kubernetes 上搭建高可用集群 本指南以仓库中 telepo网络安全认证鉴权运维后端在 Kubernetes 上部署 Grafana TempoBitnami Helm Chart 实战指南在 Kubernetes 上部署 Grafana TempoBitnami Helm Chart 实战指南 Grafana Tempo 是一个与 Grafan云原生容器编排Trivy Helm Chart 部署指南在 Kubernetes 上以 Server 模式搭建漏洞扫描器Trivy Helm Chart 部署指南在 Kubernetes 上以 Server 模式搭建漏洞扫描器 Trivy 官方 Helm Chart本仓库 h应用安全漏洞扫描SBOM供应链安全云原生上一篇oebuild高级特性使用指南多平台支持与特性组合构建下一篇openEuler/gateway架构详解ZMQ事件订阅与Token前缀Trie索引的实现原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考