Deploy the kube-wordpress-mysql helm chart on Kubernetes
TypeScriptIn order to deploy a Helm chart for WordPress with a MySQL database on Kubernetes using Pulumi, we will use the
kubernetes.helm.v3.Chart
resource from Pulumi’s Kubernetes provider. This resource can deploy a Helm chart from a repository or a local path. You will need to have Helm installed and set up appropriately for this to work.Below is a Pulumi program written in TypeScript that will create a new release of the "wordpress" Helm chart, which includes both the WordPress application and a MySQL database, from the Bitnami Helm repository.
First, ensure you have Pulumi and Kubernetes installed and configured. Pulumi's Kubernetes provider will use your current
kubectl
context to interact with your Kubernetes cluster, so make sure you've set upkubectl
and are pointing to a running Kubernetes cluster.Here's the TypeScript program that will perform the deployment:
import * as k8s from "@pulumi/kubernetes"; const wordpressChart = new k8s.helm.v3.Chart("wp-mysql", { chart: "wordpress", version: "12.1.7", // Use the specific chart version which may differ at your time of deployment fetchOpts: { repo: "https://charts.bitnami.com/bitnami", // Bitnami Helm repository URL }, values: { mariadb: { enabled: true, // Ensure the MariaDB chart is deployed along with WordPress }, service: { type: "LoadBalancer", // Expose WordPress through a LoadBalancer service }, }, // Deploy this chart in kube-wordpress namespace, or replace this line with your desired namespace namespace: "kube-wordpress", }); // Export the URL of the load balanced service once the chart is deployed export const frontendUrl = wordpressChart.getResourceProperty("v1/Service", "wp-mysql-wordpress", "status") .apply(status => `http://${status.loadBalancer.ingress[0].ip}`);
The
kubernetes.helm.v3.Chart
resource represents a Helm chart deployment using Pulumi's Kubernetes provider. Here's what the configuration does:- It specifies the chart name as
wordpress
, which is a Helm chart available in the Bitnami repository that deploys WordPress with a MariaDB (MySQL-compatible) database. - The
version
specifies the exact chart version to use. It's a best practice to pin it to avoid unintended upgrades. - The
fetchOpts
contains therepo
key, pointing to the location of the Bitnami Helm chart repository. - The
values
section allows you to customize any aspect of your chart deployment. In this case, we're making sure the MariaDB database is enabled and setting the service type toLoadBalancer
so that we can access WordPress externally. - The
namespace
specifies where the chart should be deployed within the Kubernetes cluster. If the namespace does not exist, it will be created as part of the deployment. - Finally, we export the external IP address of the LoadBalancer service assigned by the Kubernetes cluster as
frontendUrl
. This is the address you will use to access the WordPress site.
After having this program, you can deploy the chart with Pulumi:
- Save the code into a file, e.g.,
index.ts
. - Run
pulumi up
to preview and then perform the deployment. - Once completed, Pulumi will output the
frontendUrl
, which you can use to browse your WordPress site.
Keep in mind that you can further customize the WordPress and MariaDB installations by changing
values
. For a full list of configurable parameters, consult the Bitnami WordPress Helm chart documentation.- It specifies the chart name as