WordPress on Kubernetes Cluster — Step-by-Step Guide

Introduction:

WordPress is a popular Content Management System (CMS) that allows you to create and manage websites easily. Kubernetes is a powerful container orchestration platform that can help you deploy and manage WordPress with high availability and scalability.

This guide will walk you through setting up WordPress on a Kubernetes cluster using a MySQL StatefulSet for database storage. We will provide you with the necessary deployment files, secret files, Persistent Volume (PV) and Persistent Volume Claim (PVC) files, and service files to get you started.

Prerequisites:

Before we dive into setting up WordPress on Kubernetes, you’ll need the following prerequisites:

  1. A running Kubernetes cluster.
  2. kubectl command-line tool configured to interact with your Kubernetes cluster.
  3. Helm, a package manager for Kubernetes. You can install Helm by following the official documentation: https://helm.sh/docs/intro/install/ — Optional (for this example not needed)

Step 1: Create MySQL StatefulSet

We will begin by creating a MySQL StatefulSet. Save the following content to a file named mysql-statefulset.yaml:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  serviceName: mysql
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: database
        image: mysql:5.7
        args:
          - "--ignore-db-dir=lost+found"
        envFrom:
          - secretRef:
              name: mysql-secret
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
      volumes:
          - name: mysql-data
            persistentVolumeClaim:
              claimName: mysql-pvc

This YAML file defines a MySQL StatefulSet with a single replica, using a Persistent Volume Claim (PVC) for data storage. The MySQL root password is fetched from a secret named mysql-secret.

Step2: Create Mysql Service

---
apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  ports:
  - port: 3306
    protocol: TCP
  selector:
    app: mysql

Mysql service file is the type of “ClusterIP” because this is for internal communication between MySQL and WordPress

Step 3: Create WordPress Deployment and Service

Now, create a WordPress Deployment YAML file. Save the following content to a file named wordpress-deployment.yaml: Here you have deployment and service files

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
spec:
  replicas: 2
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
        - name: wordpress
          image: wordpress:5.8.3-php7.4-apache
          ports:
            - containerPort: 80
              name: wordpress
          volumeMounts:
            - name: wordpress-data
              mountPath: /var/www/html
          env:
            - name: WORDPRESS_DB_HOST
              value: mysql-service.default.svc.cluster.local
            - name: WORDPRESS_DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-secret
                  key: MYSQL_ROOT_PASSWORD
            - name: WORDPRESS_DB_USER
              value: root
            - name: WORDPRESS_DB_NAME
              value: mysql
      volumes:
        - name: wordpress-data
          persistentVolumeClaim:
            claimName: wordpress-pvc
---
kind: Service
apiVersion: v1
metadata:
  name: wordpress-service
spec:
  type: NodePort
  selector:
    app: wordpress
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30007

In this YAML file, we define a WordPress Deployment with two replicas and a corresponding Service to expose WordPress to the outside world with NodePort. You can use the Service type as “LoadBalancer” as well. It uses the MySQL StatefulSet as the database host.

Step 4: Create a Secret for MySQL Password

Create a Secret to securely store the MySQL root password. Save the following content to a file named mysql-secret.yaml:

  • First, you have to encode your password with BASE64. Example command is
#echo "mypassword" | base64
  • To decode the password you can run the following command:
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  MYSQL_ROOT_PASSWORD: bXlwYXNzd29yZAo=

Step 5: Create Persistent Volume and Persistent Volume Claim for MySQL and WordPress

To ensure data persistence for both MySQL and WordPress, create Persistent Volumes and Persistent Volume Claims. Create a file named mysql-pv-pvc.yaml with the following content:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /mnt/data/mysql

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      app: mysql

This YAML file defines a Persistent Volume and a Persistent Volume Claim for MySQL. Ensure the hostPath in the Persistent Volume definition points to a suitable directory on your Kubernetes nodes.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: wordpress-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  hostPath:
    path: /home/ubuntu/project/wp-data 

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wordpress-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: manual

For this YAML file, we have defined the “/home/ubuntu/project/wp-data” directory to mount with volume

Step 6: Apply the Configurations

Apply the configurations to your Kubernetes cluster using the following commands:

kubectl apply -f mysql-secret.yaml
kubectl apply -f mysql-pv-pvc.yaml
kubectl apply -f mysql-statefulset.yaml
kubectl apply -f mysql-service.yaml
kubectl apply -f wordpress-pv-pvc.yaml
kubectl apply -f wordpress-deployment.yaml

If can apply your all configuration files at a time as well by calling your directory like:

# kubectl apply -f directory_name

Step 6: Access Your WordPress Site

To access your WordPress site, obtain the external IP address of the WordPress Service with the following command:

kubectl get svc wordpress-service

Once you have the external IP address, you can access your WordPress site by navigating to that IP address in your web browser.

As I have specified the NodePort 30007, the WordPress is reachable on your IP address and port
Add your WordPress Information

Slipstream Windows Server with NTlite

 

I NTLite gå til Unattended derefter gå øverst til venstre og Enable. Tryk på Add local account. Tilføj nu din sysadmin og dine clienter.

 

– 4 x ClientUser (1 til 4), med kodeord Pa$$W0rd og medlem af gruppen Users

 

 

– Windows Funktionerne Telnet, Hyper-V, SMB og Internet Information Service skal være slået til

 

– Windows Funktionerne XPS-fremviser og Media Features, skal være slået fra

 

I Features kan du fravælge og vælge dine Windows Features. XPS-fremviser kan findes under Features On Demand (capabilities) helt nede i bunden.

 

 

 

– ISO’en skal kun indeholde Windows 10 Pro 64bit

 

Mount Windows 10 Pro, da det er den vi skal arbejde med. I Apply i NTLite sørger for at man afkrydser Remove nonessential editions.

 

 

 

 

– Den maskine der bliver installeret skal have et clientnavn der er ”CL-LOK106-01”

 

 

– Der må kun kunne vælges Dansk og Engelsk som sprog og tastatur

 

Fjern de unødvendige keyboards layouts, derefter gå til Language og fjern alt andet udover Engelsk og Dansk.
OBS* (Fjern keyboards layout virker kun på NTlite licens versioner og ikke på Free/Gratis version)

 

 

 

 

– Der skal laves et fast baggrundsbillede

 

Navigere til C:/Windows/Web/4K/Wallpaper/Windows

Tag ejerskab af img0_1024x768.jpg og udskift med et nyt billede, men behold samme navn og fil type.

 

 

 

 

– Under system skal jeres firmalogo vises og der skal være link til hjemmeside, samt telefon nr. og

åbnings/luk tider.

 

I Registry Editor gå til :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation

Husk at logoet skal have fil formatet .bmp, størrelse 120 x 120, dermed skal .bmp være et Bit depth 24

 

 

Tilføjelse af Dark Mode:

 

 

 

 

– Samt så skal brugeren have en velkomst besked når denne starter maskinen, som kommer hver

gang der logges på.

 

 

– ISO billedet skal være fuldt opdateret med de nyeste Windows opdateringer

Ekstra ønsker, men ikke et krav (differentiering):

 

 

– De ønsker at bruge Google Chrome, WinRAR og Notepad++ som 3. parts programmer, kan det

lægges ind så det også bliver installeret ved installation af ISO og hvordan?

 

Vi besøger https://silent-install.net/ og finder de installationer som virker med NTLite sammen med de angive parameters. Dette kan ses i billedet, hvilket paramenter der er brugt.

 

– Mapperne SoftwareDistribution og Temp mappen, skal slettes/tømmes via powershell script

 

Kan gøres i Post-Setup. PowerShell scriptet kan laves om til en .bat fil og skal have Encoding til ANSI

Ellers kan man vælge og indsætte dem i :
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

 

PowerShell ser således ud.
Et PowerShell script som vil virke i Windows 10 20H1

 

Har fundet ud af scriptet ikke vil fungere med Windows 10 21H1 og PowerShell scriptet skal omskrives til nedenstående.

 

 

 

Føler man har styr på de indstillinger som det image man har arbejdet med. Kan man gå til Apply og begynde på at “Create ISO”, du kan nu afslutte ved at trykke “Process”.

 

 

 

 

Gå til VMWare Workstation Pro. Du kan nu tilføje en ny WM. Du bliver nu vidst 2 billeder neden under. Dette er et no-go. Da du overskriver de bruger som vi oprettede i Unattended, derfor skal jeg guide hvordan vi bypasser WM’s indstillinger.

 

 

 

 

I stedet for at vælge “Installer disc image file (iso):”, skal du vælge “I will install the operation system later.” Da det er den rigtige måde og gøre det på uden at vi overskriver de brugere vi har valgt I Unatteded I NTLite.

 

 

 

Når dit setup er færdig, skal du lige sørger for at høreklik på din VM->Settings, derefter kan du tilføje dit ISO image file.

 

 

 

 

Videoer:
How to Make an Unofficial Windows 7-10 Version – NTLite Tutorial & Demo https://youtu.be/XkZlado4q5M

Custom NTLITE Windows ISO Tutorial – Win A-Z Endgame Pt16 (For en ældre udgave af Windows) https://youtu.be/vZKq7kpCcuA

Windows 10 2009 20H2 Endgame Optimization Guide Pt1

 

 

 

WDS – Deployment Metoder (Del 1)

Rapport om Deployment Metoder

 

  1. Indledning

    Windows Deployment Services (WDS) samler de funktioner, du skal bruge til at starte en klientcomputer via netværket og sende den et tilpasset operativsystem.

Denne rapport gennemgår tre almindelige deployment metoder: On-Premise, Cloud-Based, og Hybrid approaches, og analyserer fordele og ulemper ved hver.

2. Deployment Metoder

 

2.1. On-Premise Deployment

 

Beskrivelse: On-Premise deployment refererer til den traditionelle tilgang, hvor software, hardware og data opbevares og administreres internt i virksomhedens egne faciliteter. Alt fra servere, netværk og datalagring til applikationer køres lokalt på virksomhedens ejede infrastruktur.

Fordele:

  • Tilpasningsmuligheder: Lokal ydeevne for low latency, imødekomme specifikke behov, herunder integration med eksisterende systemer.
  • Sikkerhed: Fysisk adgang til infrastruktur, hvilket kan reducere risikoen for datatyveri og hacking, hvis systemerne er korrekt sikret.
  • Fuldt ejerskab og kontrol:  Bevaring af data, dette er især vigtigt for organisationer med strenge regulatoriske krav eller sikkerhedsbehov.

 

Ulemper:

  • Skaleringsvanskeligheder: Skalering af on-premise systemer kan være udfordrende og kostbart, da det kræver yderligere hardware og muligvis fysisk plads.
  • Høje hardwareomkostninger og afskrivninger: Upfront omkostninger f.eks. indkøb af hardware, licenser, software osv.
  • Løbende vedligeholdelse: Komplikationer med ophør af support og udskiftning. Vedligeholdelse, opdateringer og reparationer af systemetl.

 

 

 

 

 

2.2. Cloud Deployment

 

Beskrivelse: I cloud computing tildeles der adgang til en delt pulje af computerressourcer (servere, lagring, programmer og så videre) i skyen.
Ressourcer kan skaleres efter behov, for at få ressourcer op at køre hurtigt takket være cloud teknologi. Det er muligt at frigive ressourcer, der ikke længere er nødvendige. Denne metode giver virksomheden mulighed for blot at betale for det, som bruges.
Kendte cloud-udbydere som f.eks. Amazon Web Services (AWS), Microsoft Azure, og Google Cloud Platform (GCP).

 

Fordele:

  • Skalerbarhed: Enorm skalerbarhed og elasticitet, justeres hurtigt efter virksomhedens behov uden behov for fysisk hardware.
  • Lav initial investering: Prismodellen er “betal for hvad du bruger”, tjenesterne som en løbende operationel udgift baseret på forbrug.
  • Fleksibilitet og tilgængelighed: Udbyder ansvarlig for oppetid, tilgængelighed og nogle aspekter af sikkerhed, understøtter mobilitet og fjernarbejde fra enhver placering med internetadgang.
  • Automatiserede opdateringer: Hurtigt udvidende funktionssæt med innovationer som AI og machine learning.

Ulemper:

  • Sikkerhed og privatliv: Data lagres eksternt, datasikkerhed og overholdelse af følsomme oplysninger.
  • Afhængighed af internetforbindelse: Cloud-baserede skal have en stabil internetforbindelse, eventuel nedetid hos udbyderen kan påvirke virksomhedens drift.
  • Løbende omkostninger: Selvom startomkostningerne er lave, kan løbende abonnementsgebyrer blive betydelige over tid, især for store virksomheder med høje krav.

 

 

 

 

 

 

 

 

 

 

2.3. Hybrid Deployment

 

Beskrivelse: En hybrid cloud er et alsidigt computermiljø, der kombinerer styrkerne ved on-site computing, private cloud og public cloud. Denne tilgang tilbyder et samlet administrationssystem til håndtering af både traditionelle og moderne cloud-baserede opgaver på tværs af forskellige platforme. Det giver fleksibiliteten til at vælge de bedste ressourcer til hvert specifikt behov, alt imens ledelsen holdes centraliseret.

Fordele:

  • Fleksibilitet: Virksomheder kan selv bestemme, hvilke dele af infrastrukturen der skal køre lokalt, og hvilke der skal flyttes til skyen, hvilket muliggør optimering af både omkostninger og ressourcer.
  • Forbedret sikkerhed: Følsomme data kan forblive on-premise for at sikre maksimal kontrol og beskyttelse, mens mindre kritiske tjenester kan udnytte cloudens skalerbarhed og fleksibilitet.
  • Kontinuitet: Hybrid systemer kan sikre, at virksomheden fortsætter driften, selvom der opstår problemer med enten den lokale infrastruktur eller cloud-tjenesterne.

Ulemper:

  • Administrationsudfordringer: Styringen af en hybrid løsning kan være kompleks, da det kræver effektiv integration og synkronisering mellem on-premise og cloud-baserede systemer.
  • Sikkerhedsudfordringer: Den øgede angrebsflade kan medføre sikkerhedsrisici, hvis systemerne ikke er korrekt sikrede og administrerede.
  • Vedligeholdelse af on-premise: Selvom cloud-komponenterne kan administreres af en ekstern udbyder, kræver on-premise dele fortsat vedligeholdelse af virksomhedens interne IT-team.

 

 

 

 

 

 

 

 

 

 

 

 

3. Sammenligning og Konklusion

 

Valget af deployment metode afhænger af flere faktorer, herunder virksomhedens størrelse, budget, sikkerhedskrav og langsigtede mål. On-Premise giver maksimal kontrol og sikkerhed, men kommer med høje omkostninger og begrænset skalerbarhed. Cloud-baserede løsninger tilbyder større fleksibilitet, skalerbarhed og lavere startomkostninger, men medfører potentielle sikkerhedsrisici og afhængighed af en tredjepartsudbyder. Hybrid deployment tilbyder en fleksibel kombination af begge tilgange, men kræver kompleks styring og integration.

4. Anbefalinger

 

  1. Små og mellemstore virksomheder med begrænsede IT-ressourcer bør overveje en cloud-baseret løsning for at drage fordel af skalerbarhed og reducere indledende omkostninger. For eksempel kan et digitalt designbureau drage fordel af en cloud-baseret tilgang ved at arbejde på en fælles fjernserver, der kan tilpasse computerressourcerne til de forskellige brugere. Dette kan hjælpe virksomheden med at spare økonomisk, da der ikke er behov for at have dedikerede maskiner til hver enkelt medarbejder.
  2. Store virksomheder eller organisationer med strenge sikkerheds- og regulatoriske krav kan med fordel vælge en hybrid tilgang, som giver både fleksibilitet og kontrol over kritiske data. For eksempel kan investeringsfonde og banker anvende AI og Machine Learning til analyse af investeringer og markedsdata i skyen, samtidig med at de opbevarer virksomhedens mest følsomme data, såsom lokal Active Directory (AD) eller filservere, on-premise.
  3. Virksomheder i stærkt regulerede industrier bør fokusere på on-premise løsninger eller sikre hybride opsætninger for at sikre overholdelse af regulatoriske krav og beskytte følsomme data. For eksempel kan produktionsvirksomheder, der kræver lav latency, samt militære og offentlige institutioner med strenge datasikkerhedsregler, have stor gavn af disse tilgange.

 

 

 

 

 

 

 

 

 

 

 

 

Kildeliste

Microsoft Azure:
https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-azure

Microsoft Azure:
https://azure.microsoft.com/da-dk/resources/cloud-computing-dictionary/what-are-private-public-hybrid-clouds

Amazon AWS:
https://docs.aws.amazon.com/wellarchitected/latest/high-performance-computing-lens/hybrid-deployment.html#:~:text=Hybrid%20deployments%20are%20primarily%20considered,than%20an%20immediate%20full%20migration.

Cloud Deployment Models:
https://www.geeksforgeeks.org/cloud-deployment-models/

Certificering I Intro to Cloud Computing Course:
https://www.codecademy.com/profiles/tobiasnawaphol/certificates/1353857e7ad5c1d0d578073e0d5e31e4

Certificering I Cybersecurity for Business Course:
https://www.codecademy.com/profiles/tobiasnawaphol/certificates/a2a257b12a3d49d7ab75c20ea15e7d88

 

 

Nyheder
Søg
Konto
0
Menu
×