WordPress i Kubernetes
Denne guiden viser deg hvordan du legger inn WordPress på egen hånd på administrert Kubernetes hos Deploi. Dette vil gi en WordPress med redundans. Det betyr at hvis en av Deplois servere faller ned, vil WordPress automatisk bli aktivert på en annen server.
Først må du ha en MySQL database. Legg følgende i «wp-mysql-disk.yaml»:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-mysql-disk labels: app: wordpress spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 1Gi storageClassName: deploi-block-storage
Kjør deretter «kubectl apply -f wp-mysql-disk.yaml».
Det neste vi trenger er innloggingsnøkler til databasen. Lag to nye passord og legg dem i filen «wp-mysql-secret.yaml» som vist under.
apiVersion: v1 kind: Secret metadata: name: wp-mysql-secret stringData: rootpassword: "54y3ie4dGGfjdewrg" password: "fg4h5h5Gfw3trFGER"
Kjør deretter «kubectl apply -f wp-mysql-secret.yaml».
Nå er vi klare til å sette opp MySQL for WordPressen vår. Legg følgende i «wp-mysql.yaml»:
apiVersion: v1 kind: Service metadata: name: wp-mysql labels: app: wp-mysql spec: ports: - port: 3306 selector: app: wp-mysql clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: wp-mysql labels: app: wp-mysql spec: selector: matchLabels: app: wp-mysql strategy: type: Recreate template: metadata: labels: app: wp-mysql spec: containers: - image: mysql:8 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: wp-mysql-secret key: rootpassword - name: MYSQL_DATABASE value: wordpress - name: MYSQL_USER value: wp-user - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: wp-mysql-secret key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql resources: limits: cpu: 250m memory: 1Gi volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: wp-mysql-disk
Kjør deretter «kubectl apply -f wp-mysql.yaml».
Neste steg er å opprette en disk for WordPress sine filer. Denne disken vil vare helt til du sletter den.
Legg følgende i filen «wp-disk.yaml»:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-disk labels: app: wordpress spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 1Gi storageClassName: deploi-block-storage
Kjør deretter «kubectl apply -f wp-disk.yaml».
Nå er vi klare til å legge inn WordPress. Legg følgende i «wp.yaml»:
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:6.1.0-php8.1-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wp-mysql - name: WORDPRESS_DB_USER value: wp-user - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: wp-mysql-secret key: password - name: WORDPRESS_DB_NAME value: wordpress ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html resources: limits: cpu: 1000m memory: 2Gi volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-disk
Kjør deretter «kubectl apply -f wp.yaml». Du kan finne flere konfig-alternativer til denne WordPress-versjonen på nettsiden til Docker-versjonen av WordPress.
Du kan nå kjøre følgende for å se at WordPress ble startet.
kubectl get deployments wordpress
Hvis alt er som det skal, vil du se noe som ligner dette:
NAME READY UP-TO-DATE AVAILABLE AGE wordpress 1/1 1 1 5m16s
WordPress er nå installert, men ikke tilgjengelig offentlig.
Du kan bruke WordPress uten å gjøre den tilgjengelig offentlig. Kjør følgende kommando. Dette vil gjøre WordPress tilgjengelig på http://localhost:8080 i nettleseren din.
kubectl port-forward deployments/wordpress 8080:80
For å gjøre WordPress tilgjengelig offentlig må du peke inn et domene til Kubernetes. Dette gjør du i administrasjonpanelet der du har kjøpt domenet. (Har du ikke et domene kan du kjøpe dette fra Deploi). Pek domenet inn til hver av disse IP-adressene: 193.69.47.150, 193.69.47.106 og 193.69.50.36. For dette eksempelet har vi pekt inn wptest.deploi.cloud til disse adressene.
Legg følgende i «ingress.yaml», bytt til ditt domene de to stedene det står «wptest.deploi.cloud» nå. Merk at hvis du ønsker å peke flere domener inn til WordPress, f.eks. et som begynner med www, må du legge inn det også i denne filen.
apiVersion: v1 kind: Service metadata: name: wordpress spec: ports: - port: 8080 targetPort: 80 protocol: TCP selector: app: wordpress --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: cert-manager.io/issuer: letsencrypt-prod name: wptest-ingress spec: ingressClassName: nginx rules: - host: wptest.deploi.cloud http: paths: - backend: service: name: wordpress port: number: 8080 path: / pathType: Prefix tls: - hosts: - wptest.deploi.cloud secretName: wptest-eingress-cert
Kjør deretter «kubectl apply -f ingress.yaml».
Vent et par minutter for at HTTPS skal bli aktivert. Når den er aktivert kan du gå inn på domenet i nettleseren din (for vårt eksempel er det https://wptest.deploi.cloud) og følge veilederen til WordPress.
Du har nå WordPress på Kubernetes!