kind: Deployment apiVersion: apps/v1 metadata: name: ghost namespace: ghost uid: d01c62ff-68a6-456a-a630-77c730bffc9b resourceVersion: "2772014" generation: 1 creationTimestamp: "2025-04-27T02:01:30Z" labels: app.kubernetes.io/component: ghost app.kubernetes.io/instance: ghost app.kubernetes.io/managed-by: Wild app.kubernetes.io/name: ghost app.kubernetes.io/version: 5.118.1 annotations: deployment.kubernetes.io/revision: "1" meta.helm.sh/release-name: ghost meta.helm.sh/release-namespace: ghost spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: ghost app.kubernetes.io/name: ghost template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: ghost app.kubernetes.io/instance: ghost app.kubernetes.io/managed-by: Wild app.kubernetes.io/name: ghost app.kubernetes.io/version: 5.118.1 annotations: checksum/secrets: b1cef92e7f73650dddfb455a7519d7b2bcf051c9cb9136b34f504ee120c63ae6 spec: volumes: - name: empty-dir emptyDir: {} - name: ghost-secrets projected: sources: - secret: name: ghost-mysql - secret: name: ghost defaultMode: 420 - name: ghost-data persistentVolumeClaim: claimName: ghost initContainers: - name: prepare-base-dir image: docker.io/bitnami/ghost:5.118.1-debian-12-r0 command: - /bin/bash args: - "-ec" - > #!/bin/bash . /opt/bitnami/scripts/liblog.sh info "Copying base dir to empty dir" # In order to not break the application functionality (such as upgrades or plugins) we need # to make the base directory writable, so we need to copy it to an empty dir volume cp -r --preserve=mode /opt/bitnami/ghost /emptydir/app-base-dir resources: limits: cpu: 375m ephemeral-storage: 2Gi memory: 384Mi requests: cpu: 250m ephemeral-storage: 50Mi memory: 256Mi volumeMounts: - name: empty-dir mountPath: /emptydir terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent securityContext: capabilities: drop: - ALL privileged: false seLinuxOptions: {} runAsUser: 1001 runAsGroup: 1001 runAsNonRoot: true readOnlyRootFilesystem: true allowPrivilegeEscalation: false seccompProfile: type: RuntimeDefault containers: - name: ghost image: docker.io/bitnami/ghost:5.118.1-debian-12-r0 ports: - name: https containerPort: 2368 protocol: TCP env: - name: BITNAMI_DEBUG value: "false" - name: ALLOW_EMPTY_PASSWORD value: "yes" - name: GHOST_DATABASE_HOST value: ghost-mysql - name: GHOST_DATABASE_PORT_NUMBER value: "3306" - name: GHOST_DATABASE_NAME value: ghost - name: GHOST_DATABASE_USER value: ghost - name: GHOST_DATABASE_PASSWORD_FILE value: /opt/bitnami/ghost/secrets/mysql-password - name: GHOST_HOST value: blog.cloud.payne.io/ - name: GHOST_PORT_NUMBER value: "2368" - name: GHOST_USERNAME value: admin - name: GHOST_PASSWORD_FILE value: /opt/bitnami/ghost/secrets/ghost-password - name: GHOST_EMAIL value: paul@payne.io - name: GHOST_BLOG_TITLE value: User's Blog - name: GHOST_ENABLE_HTTPS value: "yes" - name: GHOST_EXTERNAL_HTTP_PORT_NUMBER value: "80" - name: GHOST_EXTERNAL_HTTPS_PORT_NUMBER value: "443" - name: GHOST_SKIP_BOOTSTRAP value: "no" resources: limits: cpu: 375m ephemeral-storage: 2Gi memory: 384Mi requests: cpu: 250m ephemeral-storage: 50Mi memory: 256Mi volumeMounts: - name: empty-dir mountPath: /opt/bitnami/ghost subPath: app-base-dir - name: empty-dir mountPath: /.ghost subPath: app-tmp-dir - name: empty-dir mountPath: /tmp subPath: tmp-dir - name: ghost-data mountPath: /bitnami/ghost - name: ghost-secrets mountPath: /opt/bitnami/ghost/secrets livenessProbe: tcpSocket: port: 2368 initialDelaySeconds: 120 timeoutSeconds: 5 periodSeconds: 10 successThreshold: 1 failureThreshold: 6 readinessProbe: httpGet: path: / port: https scheme: HTTP httpHeaders: - name: x-forwarded-proto value: https initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 5 successThreshold: 1 failureThreshold: 6 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent securityContext: capabilities: drop: - ALL privileged: false seLinuxOptions: {} runAsUser: 1001 runAsGroup: 1001 runAsNonRoot: true readOnlyRootFilesystem: true allowPrivilegeEscalation: false seccompProfile: type: RuntimeDefault restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst serviceAccountName: ghost serviceAccount: ghost automountServiceAccountToken: false securityContext: fsGroup: 1001 fsGroupChangePolicy: Always affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/instance: ghost app.kubernetes.io/name: ghost topologyKey: kubernetes.io/hostname schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% revisionHistoryLimit: 10 progressDeadlineSeconds: 600 status: observedGeneration: 1 replicas: 1 updatedReplicas: 1 unavailableReplicas: 1 conditions: - type: Available status: "False" lastUpdateTime: "2025-04-27T02:01:30Z" lastTransitionTime: "2025-04-27T02:01:30Z" reason: MinimumReplicasUnavailable message: Deployment does not have minimum availability. - type: Progressing status: "False" lastUpdateTime: "2025-04-27T02:11:32Z" lastTransitionTime: "2025-04-27T02:11:32Z" reason: ProgressDeadlineExceeded message: ReplicaSet "ghost-586bbc6ddd" has timed out progressing.