Sådan forbinder du Ghost til en managed MySQL-database på DigitalOcean med Helm
Kubernetesk8shelmghostdigitaloceanmysqldatabaser
Så du har installeret Ghost på dit Kubernetes cluster med bitnami/ghost Helm-chartet.
Det er ret fedt, tillykke! 🥳
Men nu har du en MySQL pod for hver Ghost-instans i dit cluster, som du selv skal administrere.
Det er slet ikke dårligt, men nogle gange er det rart med enkelhed, og her kommer DigitalOcean's managed MySQL-service til sin ret!
Jeg har lavet en liste over fordele og ulemper ved managed vs. unmanaged MySQL-servere her.

Se deres managed MySQL-service her
Opsætning af en ekstern database
At bruge en ekstern database med Ghost installeret med Helm er ret enkelt, men kræver nogle ændringer i din Helm values.yaml-fil.
Sørg for, at Helm ikke starter en MySQL-instans
Når du installerer Ghost med Helm, provisionerer den som standard en MySQL pod.
I dette tilfælde vil vi bruge en ekstern database, så vi skal deaktivere MySQL pod'en i values.yaml.
mysql:
enabled: falseDeaktivér provisionering af MySQL pod'en
Konfigurér Ghost til at bruge den eksterne database
Gå til sektionen Databases i Control Panel, klik på den databaseserver, du oprettede, og klik derefter på VPC Network under sektionen Connection Details:

Når du bruger VPC Network, bør du kunne forbinde til den eksterne database, hvis dine Nodes er i samme region som databaseserveren.
Under Settings kan du også tilføje Trusted sources , som kan være tags, clusters osv.
Her er den vigtige del af din values.yaml-fil, som du skal udfylde med detaljerne fra sektionen Connection Details:
externalDatabase:
# Replace with actual hostname for your instance on DigitalOcean
host: private-db-mysql-region.db.ondigitalocean.com
port: 25060 # port used my DigitalOcean's managed MySQL
user: yourUsername # replace with your database username
password: yourPassword # replace with your database password
database: yourDatabase # replace with your database name
ssl: true # SSL is required
# We add this to a Kubernetes secret later
sslCaFile: "/etc/ssl/certs/ca-certificate.crt"Konfigurér indstillinger for ekstern database
Download CA-certifikatet fra DigitalOcean
Gå til sektionen Databases i Control Panel, klik på den databaseserver, du oprettede, og klik på Download CA certificate , som bør ligge lige under sektionen Connection Details:

Tilføj CA-certifikatet til dit Kubernetes cluster
Når du har sat din managed MySQL-database op på DigitalOcean, kan du downloade CA-certifikatet fra Control Panel.
Dette certifikat er nødvendigt for at kunne oprette en sikker SSL-forbindelse til den eksterne database.
For at gøre dette certifikat tilgængeligt i Ghost pod'en kan vi gemme CA-certifikatet i en secret på Kubernetes clusteret ved at køre følgende kommando i den mappe, hvor du har lagt det downloadede CA-certifikat fra Control Panel:
kubectl create secret generic mysql-ca-cert --from-file=ca-certificate.crtOpret en secret med navnet "mysql-ca-cert" fra den lokale fil "ca-certificate.crt".
Nu skal vi bare mounte den, så den er tilgængelig i pod og container, med følgende sektion i vores values.yaml-fil:
extraVolumes:
- name: "mysql-ca-cert"
secret:
secretName: "mysql-ca-cert"
extraVolumeMounts:
- name: "mysql-ca-cert"
mountPath: "/etc/ssl/certs"
readOnly: trueTilføj volumen til pod'en og mount certifikatet i containeren
Det var det hele, folkens! 🎉
Nu kan du fejre det med en kop kaffe. ☕
Installer eller opgradér derefter med Helm.
helm install your-ghost bitnami/ghost -f values.yamlInstallér med Helm
export GHOST_PASSWORD=$(kubectl get secret --namespace "default" your-ghost -o jsonpath="{.data.ghost-password}" | base64 -d)
helm upgrade your-ghost bitnami/ghost --reuse-values --set ghostPassword=$GHOST_PASSWORD -f values.yamlOpgradér eksisterende instans med Helm
