Kibana Docker CI/CD 项目文件与调用流程

[Jenkins] .pipeline.yml
│ (定义 pipeline 阶段和触发条件)

[Jenkins] Jenkinsfile
│ (执行 shell 命令和步骤)

[Jenkins] Makefile
│ (规范构建、推送命令,间接调用 Dockerfile 和 entrypoint.sh)
├─[Docker] Dockerfile
│ │ (定义基础镜像、COPY文件、ENTRYPOINT,打包所有 docker 运行所需内容)
│ ├─ 复制 dashboards/.ndjson # 仪表盘 json,Kibana 导入用
│ ├─ 复制 entrypoint.sh # 容器启动时调用的脚本
│ ├─ 复制 config/kibana.yml # Kibana 配置文件
│ └─ 设定 ENTRYPOINT 为 entrypoint.sh

├─[Kibana] scripts/export_dashboards.sh
│ (从正在运行的 Kibana 导出 dashboard 到 dashboards/
.ndjson)

├─[Kibana] scripts/kibana_v2_export_commit.sh
│ (自动将最新 .ndjson 文件提交到 git 以实现版本管理)


[版本] VERSION
(手动或自动更新,跟踪当前镜像/代码版本,CI 构建校验一致性)

镜像发布与运行时(用户视角)

开发/测试/部署端:

  1. git push(commit 或 tag)到主仓库

    ├─ Jenkins 触发 pipeline,进入构建流程

    ├─ Makefile 调用 docker build,基于 Dockerfile 构建镜像
    │ ├─ 镜像内包含 dashboards/ 及 entrypoint.sh
    │ └─ 镜像 tag: registry/xxx/kibana:xxx

    ├─ tag 提交:make prod-push,镜像推送到 registry
    └─ 普通提交:只保存镜像 .tar.gz 到 QA 目录

  2. 目标主机/测试机:
    ├─ docker pull registry/xxx/kibana:TAG
    ├─ docker run -d ... (镜像)

    └─ 镜像启动(执行 entrypoint.sh)流程:
    ├─ 动态设置 kibana.yml
    ├─ 后台启动 Kibana
    ├─ 循环等待 /api/status 可用
    ├─ curl POST 导入 dashboards/latest.ndjson
    └─ wait $KIBANA_PID,容器前台挂载 kibana 主进程

文件类别与作用分组
[Jenkins] CI/CD 配置相关

.pipeline.yml:CI 入口,定义所有构建和发布步骤

Jenkinsfile:具体命令和参数执行

Makefile:约定 prod/prod-push 逻辑,调用 docker 命令

[Docker] 镜像构建相关

Dockerfile:决定基础镜像、文件结构、最终 ENTRYPOINT

entrypoint.sh:容器内自启动脚本,串联 kibana、导入等步骤

[Kibana] 仪表盘导出与集成

scripts/export_dashboards.sh:Kibana 运行态下导出仪表盘

scripts/kibana_v2_export_commit.sh:自动 git add/commit/push 导出的 .ndjson

dashboards/*.ndjson:所有版本的导出仪表盘(重点是 latest.ndjson)

[Version] 版本号

VERSION:人类可读的版本标识,CI 校验和文档溯源用

总结
开发/导出:通过脚本自动导出仪表盘,commit 到 git。

构建:CI 调用 Makefile/Dockerfile/entrypoint.sh,把仪表盘和脚本都打包进镜像。

发布:打 tag 时 Jenkins 自动推送镜像到仓库。

运行:docker pull/run 时 entrypoint.sh 自动初始化、导入 dashboard,保持 Kibana 正常运行。

文件/目录 归属/类型 作用说明
.pipeline.yml Jenkins CI 流程定义入口,指定构建/发布的阶段和触发条件
Jenkinsfile Jenkins 具体 Jenkins 流水线执行脚本,调用 Makefile
Makefile Jenkins 统一构建/推送规则,便于本地和 CI 共用
Dockerfile Docker 镜像构建规范,定义基础镜像、COPY 文件、ENTRYPOINT
entrypoint.sh Docker 容器启动后自启动脚本,串联启动 Kibana+导入仪表盘
dashboards/*.ndjson Kibana 导出的仪表盘文件,供 Docker 镜像自动导入
config/kibana.yml Kibana Kibana 配置文件(如需自定义覆盖)
scripts/export_dashboards.sh Kibana 自动导出当前 Kibana 仪表盘为 ndjson 文件
scripts/kibana_v2_export_commit.sh Kibana 将最新 ndjson 提交到 git,便于版本管理
VERSION 通用 当前版本号,CI 校验用

工作流顺序(推荐流程)

  1. 开发与导出仪表盘
    使用 export_dashboards.sh 从 Kibana 导出 dashboard,生成/更新 dashboards/latest.ndjson

使用 kibana_v2_export_commit.sh 自动提交并 push 仪表盘 ndjson 文件到 Git

  1. 本地或 CI 构建镜像
    通过 Jenkins (.pipeline.yml + Jenkinsfile) 自动拉取最新代码并执行:

make prod:本地 build 镜像(用 Dockerfile)

将 dashboards/、entrypoint.sh、config/kibana.yml 都 COPY 进镜像

Tag 提交时执行 make prod-push,将镜像推送至远端 registry

  1. 镜像拉取与部署
    运维或开发通过 docker pull registry/xxx/kibana:TAG 拉取镜像

启动容器:

sh
Copy
Edit
docker run -d --name kibana-v2-test -p 5606:5601 registry/xxx/kibana:TAG
容器内启动自动执行 entrypoint.sh,实现:

动态替换 publicBaseUrl

后台启动 Kibana 服务

循环检测 /api/status,直到 Kibana ready

自动导入 dashboards/latest.ndjson

wait $KIBANA_PID,保持容器长期运行
分类汇总(建议保存/团队说明用)
Jenkins 相关文件:.pipeline.yml、Jenkinsfile、Makefile

Docker 相关文件:Dockerfile、entrypoint.sh

Kibana 相关文件:dashboards/*.ndjson、config/kibana.yml、scripts/export_dashboards.sh、scripts/kibana_v2_export_commit.sh

版本文件:VERSION

posted @ 2025-07-01 15:38  vivi~  阅读(12)  评论(0)    收藏  举报