tripox.dev
Indholdet er oversat til dansk med AI.

Sådan forbinder du Ghost til en managed MySQL-database på DigitalOcean med Helm

Kubernetesk8shelmghostdigitaloceanmysqldatabaser

Sådan forbinder du Ghost til en managed MySQL-database på DigitalOcean med Helm

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.

Bekymringsfri managed MySQL-hosting | DigitalOcean
Lad os tage os af kompleksiteten i MySQL-administration. Vi håndterer opsætning, backup og opdateringer — så du kan fokusere på at bygge gode apps.

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: false

Deaktivé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:

Panelet med forbindelsesdetaljer i control panel

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:

Panelet med forbindelsesdetaljer, hvor du kan downloade CA-certifikatet

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.crt

Opret 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: true

Tilfø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.yaml

Installé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.yaml

Opgradér eksisterende instans med Helm