Migrating Confluence to Kubernetes
This document explains the process of migrating an existing Confluence installation to Kubernetes.
💡
Confluence 8.5.17 to 9.2.5
Pre-configured resources
- Rook ceph(Block, Filesystem)
- cert-manager
- Nginx ingress controller
- DB(PostgreSQL)
Helm Chart
Version: v3.17.3(GoVersion: go1.23.7)
Add the Helm chart repository
helm repo add atlassian-data-center \
https://atlassian.github.io/data-center-helm-charts
Check Atlassian product version with chart version
helm search repo atlassian-data-center/confluence
Get values.yaml
command
helm show values altassian-data-center/confluence --version 1.22.0 > values.yaml
Editing values.yaml
Modify according to your configuration.
Create namespace
kubectl create ns atlassian
Deploy helm chart
Confluence version: 8.5.17
helm install confluence \
atlassian-data-center/confluence \
-f values.yaml \
-n atlassian \
--version 1.22.0
Check deployment

💡
The purpose of this initial startup is to intentionally enter an invalid database URL in order to create an empty Persistent Volume (PV) for Confluence data(application-data, shared-home) migration.
Data Migration
Process for importing existing application data and using it in the existing environment
Migration strategy
- Confluence deploy(replicas=1) with empty data(application-data, shared-home)
- Get application-data directory from as-is confluence instance(Rsync in to-be confluence pod)
- Get shared-home directory from as-is confluence instance(Rsync in to-be confluence pod)
- Confluence pod delete for restart
- Check confluence data
- Scale the Confluence pod from 1 to 2

Upgrade
Upgrade strategy
- replicas 0(shutdown all Confluence pod)
- Helm chart upgrade
Shutdown all Confluence pod
kubectl scale statefulset --replicas 0 -n atlassian confluence
For a Rolling upgrade, adjusting the replicas is not necessary.
Helm chart
Confluence version: 8.5.17 → 9.2.5
helm upgrade confluence \
atlassian-data-center/confluence \
--version 2.0.2 \
-f values.yaml \
-n atlassian
🗒️
During
The previous
helm upgrade
, pods are created based on the replicaCount
in values.yaml
, and the first pod performs the upgrade task.The previous
--replicas 0
setting is ignored.

Reference
Products upgrade - Atlassian DC Helm Charts
