WordPress

  • By Canonical IS DevOps
Channel Revision Published Runs on
latest/stable 87 07 Mar 2024
Ubuntu 22.04
latest/edge 95 26 Apr 2024
Ubuntu 22.04
juju deploy wordpress-k8s --channel edge
Show information

Platform:

Containers

The core component of wordpress-k8s charm consists of a wordpress-k8s main workload container with an Apache Prometheus exporter. The services inside the container are driven by Pebble, a lightweight API-driven process supervisor that controls the lifecycle of a service. Learn more about pebble and its layer configurations here.

wordpress

This container runs the main workload of the charm. The OCI image is custom built and includes the WordPress cli, Apache server and default WordPress plugins and themes. By default, Apache server accepts all the web traffic on port 80 and redirects the requests to WordPress php index file, handled by the default x-httpd-php handler. The configuration of the Apache server redirects can be found in files/docker-php.conf file.

WordPress, by default, stores uploaded content files locally at /wp-content/uploads directory. To make the content accessible across WordPress replication servers, a swift-proxy is added to enable content storage on OpenStack Swift through the use of wp_plugin_openstack-objectstorage_config configuration parameter. Swift proxy settings can be found in files/docker-php-swift-proxy.conf in the repository. The settings are dynamically modified during runtime when the wp_plugin_openstack-objectstorage_config parameter is configured.

In order to enable monitoring of Apache server status, redirection to WordPress php for route /server-status is overridden in files/apache2.conf. /server-status endpoint is accessed by apache-exporter service to convert and re-expose with open metrics compliant format for integration with prometheus_scrape interface.

When a logging relation is joined, a promtail application is started via pebble which starts pushing Apache server logs to Loki. The configurations for Apache have been set up to stream logs to both access.log, error.log files and container logs in 000-default.conf. These files are essential for promtail to read and push latest logs to loki periodically.

charm

This container is the main point of contact with the juju controller. It communicates with juju to run necessary charm code defined by the main src/charm.py. The source code is copied to the /var/lib/juju/agents/unit-UNIT_NAME/charm directory.


Help improve this document in the forum (guidelines). Last updated 3 months ago.