Ghost
Changelog
⚠️ An upgrade to Ghost 4.46.x, Ghost 4.47.x or Ghost 4.48.x with MariaDB as database will fail - Upgrading to Ghost 5.0.0 with MariaDB as database backend works only with Ghost >=4.46.2 - Using MySQL as database backend is highly recommended and will support the full upgrade path
see RELEASENOTES.md
A Helm chart for Ghost blog on Kubernetes
TL;DR
helm repo add groundhog2k https://groundhog2k.github.io/helm-charts/
helm install my-release groundhog2k/ghost
Introduction
This chart uses the original Ghost image from Docker Hub to deploy a Ghost blog in Kubernetes.
It fully supports deployment of the multi-architecture docker image.
Prerequisites
- Kubernetes 1.12+
- Helm 3.x
- PV provisioner support in the underlying infrastructure
Installing the Chart
To install the chart with the release name my-release
:
helm install my-release groundhog2k/ghost
Uninstalling the Chart
To uninstall/delete the my-release
deployment:
helm uninstall my-release
Requirements
Repository | Name | Version |
---|---|---|
@groundhog2k | mariadb | 0.2.28 |
@groundhog2k | mysql | 0.2.0 |
Common parameters
Key | Type | Default | Description |
---|---|---|---|
fullnameOverride | string | "" |
Fully override the deployment name |
nameOverride | string | "" |
Partially override the deployment name |
Deployment parameters
Key | Type | Default | Description |
---|---|---|---|
image.pullPolicy | string | "IfNotPresent" |
Image pull policy |
image.registry | string | "docker.io" |
Image registry |
image.repository | string | "ghost" |
Image name |
image.tag | string | "" |
Image tag |
imagePullSecrets | list | [] |
Image pull secrets |
strategy | object | {} |
Pod deployment strategy |
startupProbe | object | see values.yaml |
Startup probe configuration |
livenessProbe | object | see values.yaml |
Liveness probe configuration |
readinessProbe | object | see values.yaml |
Readiness probe configuration |
customStartupProbe | object | {} |
Custom startup probe (overwrites default startup probe configuration) |
customLivenessProbe | object | {} |
Custom liveness probe (overwrites default liveness probe configuration) |
customReadinessProbe | object | {} |
Custom readiness probe (overwrites default readiness probe configuration) |
resources | object | {} |
Resource limits and requests |
nodeSelector | object | {} |
Deployment node selector |
customLabels | object | {} |
Additional labels for Deployment or StatefulSet |
customAnnotations | object | {} |
Additional annotations for Deployment or StatefulSet |
podAnnotations | object | {} |
Additional pod annotations |
podLabels | object | {} |
Additional pod labels |
podSecurityContext | object | see values.yaml |
Pod security context |
securityContext | object | see values.yaml |
Container security context |
env | list | [] |
Additional container environmment variables |
args | list | [] |
Arguments for the container entrypoint process |
rbac.create | bool | true |
Enable creation of RBAC |
serviceAccount.create | bool | false |
Enable service account creation |
serviceAccount.name | string | "" |
Optional name of the service account |
serviceAccount.annotations | object | {} |
Additional service account annotations |
affinity | object | {} |
Affinity for pod assignment |
tolerations | list | [] |
Tolerations for pod assignment |
topologySpreadConstraints | object | {} |
Topology spread constraints for pods |
revisionHistoryLimit | int | nil |
Maximum number of revisions maintained in revision history |
Service paramters
Key | Type | Default | Description |
---|---|---|---|
service.port | int | 80 |
Ghost HTTP service port |
service.type | string | "ClusterIP" |
Service type |
service.nodePort | int | nil |
The node port (only relevant for type LoadBalancer or NodePort) |
service.clusterIP | string | nil |
The cluster ip address (only relevant for type LoadBalancer or NodePort) |
service.loadBalancerIP | string | nil |
The load balancer ip address (only relevant for type LoadBalancer) |
service.annotations | object | {} |
Additional service annotations |
service.labels | object | {} |
Additional service labels |
Ingress parameters
Key | Type | Default | Description |
---|---|---|---|
ingress.enabled | bool | false |
Enable ingress for Ghost service |
ingress.className | object | {} |
Optional ingress class name |
ingress.annotations | object | {} |
Additional annotations for ingress |
ingress.labels | object | {} |
Additional ingress lables |
ingress.hosts[0].host | string | "" |
Hostname for the ingress endpoint |
ingress.hosts[0].host.paths[0].path | string | "/" |
Path of the Ghost UI |
ingress.hosts[0].host.paths[0].pathType | string | "ImplementationSpecific" |
Ingress path type (ImplementationSpecific, Prefix, Exact) |
ingress.tls | list | [] |
Ingress TLS parameters |
ingress.maxBodySize | string | "2m" |
Maximum body size for post requests |
Network policies
Allows to define optional network policies for ingress and egress The policyTypes will be automatically set
Key | Type | Default | Description |
---|---|---|---|
networkPolicy.ingress | object | {} |
Ingress network policies |
networkPolicy.egress | object | {} |
Egress network policies |
Storage parameters
Key | Type | Default | Description |
---|---|---|---|
storage.accessModes[0] | string | "ReadWriteOnce" |
Storage access mode |
storage.persistentVolumeClaimName | string | nil |
PVC name when existing storage volume should be used |
storage.requestedSize | string | nil |
Size for new PVC, when no existing PVC is used |
storage.className | string | nil |
Storage class name |
storage.keepPvc | bool | false |
Keep a created Persistent volume claim when uninstalling the helm chart |
storage.annotations | object | {} |
Additional storage annotations |
storage.labels | object | {} |
Additional storage labels |
Ghost parameters
Key | Type | Default | Description |
---|---|---|---|
mariadb.enabled | bool | false |
Enables MariaDB deployment (and switches off externalDatabase section) |
mariadb.settings.rootPassword | string | nil |
MariaDB root password |
mariadb.userDatabase.name | string | nil |
Name of the Ghost database |
mariadb.userDatabase.user | string | nil |
User name with full access to ghost database |
mariadb.userDatabase.password | string | nil |
Password of the ghost database user |
mysql.storage | string | nil |
MySQL storage parameter (see storage parameters) |
mysql.enabled | bool | false |
Enables MySQL deployment (and switches off externalDatabase section) |
mysql.settings.rootPassword | string | nil |
MySQL root password |
mysql.userDatabase.name | string | nil |
Name of the Ghost database |
mysql.userDatabase.user | string | nil |
User name with full access to ghost database |
mysql.userDatabase.password | string | nil |
Password of the ghost database user |
mysql.storage | string | nil |
MySQL storage parameter (see storage parameters) |
externalDatabase.type | string | "sqlite" |
External database type (mysql or mariadb - default: sqlite) |
externalDatabase.sqliteDatabaseFile | string | "content/data/ghost.db" |
Path to default SQLite database (only sqlite) |
externalDatabase.host | string | nil |
External database host (only mysql/mariadb) |
externalDatabase.name | string | "ghost" |
External database name (only mysql/mariadb) |
externalDatabase.user | string | nil |
External database user (only mysql/mariadb) |
externalDatabase.password | string | nil |
External database password (only mysql/mariadb) |
settings.mode | string | "production" |
Ghost mode (production or development) |
settings.url | string | nil |
URL of Ghost blog |
settings.logToStdout | bool | true |
Log to stdout by default (otherwise logging will go to stdout and file) |
settings.mail.from | string | nil |
Mail from address |
settings.mail.transport | string | SMTP |
Mail transport type (SMTP, Sendmail, Direct) |
settings.mail.host | string | nil |
Mail host for transport |
settings.mail.port | int | nil |
Mail port for transport |
settings.mail.service | string | nil |
Service for mail transport (Mailgun, Sendgrid, Gmail, SES) |
settings.mail.user | string | nil |
Mail auth user |
settings.mail.passwort | string | nil |
Mail auth password |