Skip to main content

Aanmaken van de Wordpress microservice

Na het deployen van Mysql bouwen we de microservice voor Wordpress. Hiervoor ga je zelf aan de slag. Je zal opnieuw een deployment, pv-claim en een service moeten aanmaken.

Vooral de deployment zal er uiteraard anders uitzien, en de officiële documentatie kan hierbij zeker helpen, maar let op: gewoon overnemen zal niet lukken...

tip

Vergeet niet om bijvoorbeeld alles in de juiste namespace te plaatsen.

Basiscomponenten

Maak dus volgende componenten aan:

  • persistent storage claim: deze is heel erg gelijkaardig aan wat we net deden met Mysql. Het mountpath kan je instellen als /var/www/html. Op die manier zullen wijzigingen aan je site ook na het herstarten van je container (vb installatie theme, uploads, ...) blijven bestaan

  • een deployment: kies voor de laatste versie van Wordpress. Je vindt de officiële container op Docker Hub.

    • Er zijn enkele omgevingsvariabelen nodig om je container goed te starten. Je kan hiervoor je secret hergebruiken die aangemaakt werd bij de databank. Daarnaast is er ook nog een specifieke extra config nodig voor Wordpress om te vermijden dat die een redirect zal veroorzaken. Onderstaande kan je op weg helpen:

      - name: WORDPRESS_DB_PASSWORD
      value: ##########
      - name: WORDPRESS_DB_USER
      value: ############
      - name: WORDPRESS_DB_NAME
      value: ###########
      - name: WORDPRESS_DB_HOST
      value: ##########
      #- name: WORDPRESS_CONFIG_EXTRA
      # value: "define('WP_HOME', 'http://###########'); define('WP_SITEURL', 'http://#########');"
    • de WP_HOME en WP_SITEURL kunnen eventueel helpen om overbodige redirects weg te halen. Je kan er het ip-adres van de load-balancer later in plaatsen eens je dat kent. (in 'echte' omgevingen zal je dat ip-adres op voorhand reeds reserveren, configureren en koppelen aan DNS...)

  • een service. We kiezen hierbij voor het type loadbalancer (TCP). Daardoor is die service ook buiten de cluster bereikbaar. Door dit te doen zal op de achtergrond een tcp-load balancer aangemaakt worden, die je blog ook voor de buitenwereld beschikbaar maakt.

tip

Een service maken van het type LoadBalancer is zeker niet de beste manier om je service extern bereikbaar te maken, maar wel de makkelijkste. In productie-omgevingen gebruik je hiervoor nog een extra ingress-object. Met die component zijn er veel meer mogelijkheden, maar dat zou vermoedelijk ten koste gaan van de leesbaarheid van deze opdracht, dus laten we dat even voor wat het is.

Kies je wel voor een http load balancer, dan zal die enkel goed werken als die een werkende health check heeft. Werkend betekent dat je een HTTP 200 krijgt als je naar de opgegeven url surft. Heb je de installatie nog niet doorlopen, dan krijg je geen HTTP 200, maar een redirect (HTTP 301) wat een falende health check veroorzaakt. Tijdens de install zou je dus kunnen opteren voor een pad dat bij Wordpress steeds een HTTP 200 geeft, zoals /wp-includes/images/blank.gif. Opgelet wel: op die manier zet je een installatie van Wordpress online zonder wachtwoord, dat is uiteraard niet aan te bevelen!

Port forwarding

In de console kan je ervoor kiezen om vanop jouw pc een portforwarding te activeren. Zo wordt een beveiligde tunnel gemaakt waarbij je toegang hebt tot interne resources op je cluster zonder dat die al extern bereikbaar hoeven te zijn. Voer deze port forwarding uit. Als alles goed is, kan je nu lokaal surfen naar localhost:8080 port forward

Configureer Wordpress

Als de port forwarding gelukt is, dan krijg je het configuratiescherm te zien.

Bij het databanktype kies je uiteraard mysql, en maak de koppeling met je mysql-container. Je zal ook nog enkele andere variabelen moeten invullen.

Een schematisch overzicht van hoe de verschillende componenten nu aan elkaar hangen:

graph TD; User==>LB; LB[Load Balancer]==>SW[Wordpress Service - nodeport]; SW==>PW[Wordpress deployment/pod]; PW-->STW[Wordpress persistent storage]; PW-->CM PW==>SM[Mysql service]; SM==>PM[Mysql deployment/pod]; PM-->STM[Mysql persistent storage]; PM-->CM[Secret Configuration];

Het resultaat:

wordpress Blog