This Helm chart deploys WordPress with MySQL (MariaDB) and includes Prometheus/Grafana monitoring stack.
- Kubernetes 1.19+
- Helm 3.0+
- AWS EKS cluster
- AWS EBS CSI Driver installed
- Nginx Ingress Controller
- Add the Helm repository:
helm repo add my-repo https://guytamari.github.io/K8S-Integrative
helm repo update- Install the chart:
helm install my-release my-repo/wordpress-mysql-app \
--namespace your-namespace \
--create-namespace
--set namespace=your-namespaceThe following values must be configured in your values.yaml:
namespace: your-namespace
storageClass:
name: ebs-sc
provisioner: ebs.csi.aws.com
wordpress:
replicas: 2
storage:
size: 1Gi
database:
storage:
size: 1Gi
credentials:
rootPassword: your-root-password
database: wordpress
user: wordpress
password: your-passwordingress:
enabled: true
className: nginx
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
grafana:
enabled: true
adminPassword: your-admin-passwordAfter installation:
- Get the Load Balancer URL:
kubectl get svc -n your-namespace ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'- Access Applications:
- WordPress:
http://<load-balancer-url>/ - Grafana:
http://<load-balancer-url>/grafana
This chart includes:
- Prometheus for metrics collection
- Grafana for visualization
- Pre-configured dashboards for:
- WordPress metrics
- MySQL metrics
- Kubernetes cluster metrics
- Username:
admin - Password: Get with:
kubectl get secret -n your-namespace prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode
To remove the chart:
helm uninstall my-release -n your-namespaceThis chart uses AWS EBS for persistent storage. Make sure:
- AWS EBS CSI Driver is installed
- Proper IAM roles and permissions are configured
- Storage class
ebs-scis available
- Change default passwords in values.yaml
- Configure proper AWS IAM roles
- Enable SSL/TLS for production use
- Review and adjust RBAC permissions as needed
Common issues:
-
PVCs in Pending state
- Check EBS CSI Driver installation
- Verify IAM roles
- Check storage class exists
-
Ingress not working
- Verify Nginx Ingress Controller installation
- Check Load Balancer configuration
- Verify DNS settings
-
Monitoring issues
- Check Prometheus pods
- Verify ServiceMonitor resources
- Check Grafana configuration
# Install with default values
helm install my-wordpress ./wordpress-mysql-app \
--namespace wordpress \
--create-namespace- Custom Database Configuration:
# custom-db-values.yaml
database:
credentials:
rootPassword: my-secure-root-pw
password: my-secure-user-pw
user: wp_user
database: wp_database
storage:
size: 10Gihelm install my-wordpress ./wordpress-mysql-app \
-f custom-db-values.yaml \
--namespace wordpressFor issues and feature requests, please create an issue in the repository.