Skip to main content

Helm chart values reference

This reference documents all available configuration values for the infrahub-backup Helm chart. The chart can be used as a subchart within the main Infrahub Helm chart (recommended) or installed standalone.

Chart information

PropertyValue
Chart nameinfrahub-backup
Repositoryopsmill/infrahub-helm
SourceGitHub

Global settings

When enabled as a subchart in the Infrahub Helm chart, prefix all values with infrahub-backup:

infrahub-backup:
enabled: true
# ... other values

When used standalone

When installed as a standalone chart, use values directly without prefix:

backup:
enabled: true
# ... other values

ServiceAccount and RBAC

The chart creates a ServiceAccount with the required permissions to perform backup and restore operations.

ValueTypeDefaultDescription
serviceAccount.createbooltrueCreate a new ServiceAccount
serviceAccount.namestring""ServiceAccount name (auto-generated if empty)
serviceAccount.annotationsobject{}Annotations to add to the ServiceAccount
rbac.createbooltrueCreate Role and RoleBinding

RBAC permissions

The created Role includes these permissions:

rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "get"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get"]
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "patch"]

Cloud provider integration examples

AWS IRSA (IAM Roles for Service Accounts):

serviceAccount:
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789012:role/infrahub-backup"

GCP Workload Identity:

serviceAccount:
annotations:
iam.gke.io/gcp-service-account: "infrahub-backup@project.iam.gserviceaccount.com"

Using existing ServiceAccount:

serviceAccount:
create: false
name: "my-existing-serviceaccount"
rbac:
create: false

Backup configuration

ValueTypeDefaultDescription
backup.enabledboolfalseEnable backup Job or CronJob
backup.modestring"job"Backup mode: job (one-shot) or cronjob (scheduled)
backup.schedulestring"0 2 * * *"Cron schedule (only for cronjob mode)

Backup storage

ValueTypeDefaultDescription
backup.storage.typestring"local"Storage type: s3 or local

S3 storage

ValueTypeDefaultDescription
backup.storage.s3.bucketstring""S3 bucket name
backup.storage.s3.endpointstring""S3 endpoint URL
backup.storage.s3.regionstring""S3 region
backup.storage.s3.secretNamestring""Kubernetes Secret containing S3 credentials

The referenced Secret must contain:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

Local storage

ValueTypeDefaultDescription
backup.storage.local.pathstring"/backups"Path inside the pod for backup storage

Backup options

ValueTypeDefaultDescription
backup.options.forceboolfalseProceed with backup even if tasks are running
backup.options.excludeTaskmanagerboolfalseSkip PostgreSQL (task manager) backup
backup.options.neo4jMetadatastring"all"Neo4j metadata to include: all, none, users, roles

Restore configuration

ValueTypeDefaultDescription
restore.enabledboolfalseEnable restore Job

Restore S3 source

ValueTypeDefaultDescription
restore.s3.bucketstring""S3 bucket containing the backup
restore.s3.keystring""Backup filename in the bucket
restore.s3.endpointstring""S3 endpoint URL
restore.s3.regionstring""S3 region
restore.s3.secretNamestring""Kubernetes Secret containing S3 credentials

Pod configuration

ValueTypeDefaultDescription
image.repositorystring"opsmill/infrahub-backup"Container image repository
image.tagstring""Image tag (defaults to chart appVersion)
image.pullPolicystring"IfNotPresent"Image pull policy
resources.requests.cpustring"100m"CPU request
resources.requests.memorystring"256Mi"Memory request
resources.limits.cpustring"500m"CPU limit
resources.limits.memorystring"512Mi"Memory limit
nodeSelectorobject{}Node selector for pod scheduling
tolerationslist[]tolerations for pod scheduling
affinityobject{}Affinity rules for pod scheduling

Examples

Minimal scheduled backup to S3

infrahub-backup:
enabled: true

backup:
enabled: true
mode: "cronjob"
schedule: "0 2 * * *"
storage:
type: "s3"
s3:
bucket: "my-backups"
endpoint: "https://s3.amazonaws.com"
region: "us-east-1"
secretName: "backup-s3-credentials"

One-shot backup with custom options

infrahub-backup:
enabled: true

backup:
enabled: true
mode: "job"
storage:
type: "s3"
s3:
bucket: "my-backups"
endpoint: "https://s3.amazonaws.com"
region: "us-east-1"
secretName: "backup-s3-credentials"
options:
force: true
neo4jMetadata: "users"

Restore from S3

infrahub-backup:
enabled: true

backup:
enabled: false

restore:
enabled: true
s3:
bucket: "my-backups"
key: "infrahub_backup_20250120_020000.tar.gz"
endpoint: "https://s3.amazonaws.com"
region: "us-east-1"
secretName: "backup-s3-credentials"

Custom ServiceAccount with AWS IRSA

infrahub-backup:
enabled: true

serviceAccount:
create: true
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789012:role/infrahub-backup"

backup:
enabled: true
mode: "cronjob"
schedule: "0 2 * * *"
storage:
type: "s3"
s3:
bucket: "my-backups"
endpoint: "https://s3.amazonaws.com"
region: "us-east-1"
# No secretName needed - using IRSA

Local storage for testing

infrahub-backup:
enabled: true

backup:
enabled: true
mode: "job"
storage:
type: "local"
local:
path: "/backups"

Full production configuration

infrahub-backup:
enabled: true

serviceAccount:
create: true
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::123456789012:role/infrahub-backup"

backup:
enabled: true
mode: "cronjob"
schedule: "0 2 * * *"
storage:
type: "s3"
s3:
bucket: "infrahub-production-backups"
endpoint: "https://s3.us-west-2.amazonaws.com"
region: "us-west-2"
options:
force: false
excludeTaskmanager: false
neo4jMetadata: "all"

restore:
enabled: false

resources:
requests:
cpu: "200m"
memory: "512Mi"
limits:
cpu: "1000m"
memory: "1Gi"

nodeSelector:
node-type: worker

tolerations:
- key: "workload"
operator: "Equal"
value: "backup"
effect: "NoSchedule"