官方atlassian/jira-software镜像无法直接用于Kubernetes部署,因其依赖外部数据库、需挂载持久化存储、必须设置JIRA_SETUP=false跳过初始化,并配置Ingress透传X-Forwarded-*头,升级时须停机备份jira-home与数据库。

直接用官方镜像部署会失败
Atlassian 官方的 atlassian/jira-software 镜像不支持开箱即用的 Kubernetes 部署,核心原因是它依赖外部数据库、持久化存储和初始化流程,而默认镜像启动后会进入交互式 setup 页面(HTTP 8080 返回 302 跳转到 /setup),导致 readiness probe 失败、Pod 反复重启。你看到的 CrashLoopBackOff 或 Readiness probe failed 基本都源于此。
必须显式跳过首次配置并挂载外部存储
Jira 在 Kubernetes 中不能“第一次启动就配库”,必须提前准备好数据库(PostgreSQL/MySQL)并禁用内置 setup 流程。关键点有三个:
-
JIRA_SETUP=false环境变量必须设置,否则容器启动后自动跳转 setup 页面,无法通过健康检查 -
JIRA_DB_URL必须指向已初始化的数据库(如jdbc:postgresql://postgres-svc:5432/jiradb),且该库需提前执行 Jira 的 schema 初始化(官方镜像不自带建库逻辑) -
/var/atlassian/application-data/jira目录必须挂载为PersistentVolume,否则重启后所有配置、插件、附件全丢——Jira 不是无状态应用
示例片段(Deployment 中 containers 部分):
env:
- name: JIRA_SETUP
value: "false"
- name: JIRA_DB_URL
value: "jdbc:postgresql://postgres-svc:5432/jiradb"
- name: JIRA_DB_USER
valueFrom:
secretKeyRef:
name: jira-db-secret
key: username
volumeMounts:
- name: jira-home
mountPath: /var/atlassian/application-data/jira
volumes:
- name: jira-home
persistentVolumeClaim:
claimName: jira-home-pvcIngress 配置必须带 X-Forwarded-* 头透传
Jira 对反向代理非常敏感。如果你用 Nginx Ingress 或 Traefik 暴露服务,但没透传 X-Forwarded-Proto 和 X-Forwarded-Host,Jira 生成的邮件链接、OAuth 回调地址、甚至登录后的重定向都会变成 http://jira.example.com(而非你期望的 https://jira.example.com),导致无限重定向或功能异常。
针对 Kubernetes 仪表板和 Web UI 的浏览器自动化。适用于与 Kubernetes Dashboard、Grafana、ArgoCD UI 或其他 Web 界面交互。需要设置 MCP_BROWSER_ENABLED=true。
以 Nginx Ingress 为例,必须在 Ingress resource 中加 annotation:
metadata:
annotations:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-set-headers: "nginx-configmap"
并在同 namespace 下创建名为 nginx-configmap 的 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configmap
data:
proxy-set-headers: |
X-Forwarded-Proto: $scheme
X-Forwarded-Host: $host
X-Forwarded-Port: $server_port真正麻烦的是升级与备份策略
很多人忽略一点:Jira 的 PersistentVolume 数据目录不是“只读备份”就能迁移的。每次升级版本(比如从 9.4.x → 9.5.x)前,必须停机、备份整个 jira-home 目录 + 数据库 dump,并在新版本 Pod 启动前手动验证兼容性——Atlassian 明确不保证跨大版本的 jira-home 直接复用。另外,attachment 子目录若未启用 S3 插件(如 aws-s3-plugin),就只能靠 PV 定期快照,恢复时还涉及文件权限修复(UID 2001 是 Jira 容器内固定用户 ID)。

















