Skip to main content

Deployment

Single-replica deployment still works as before. For multi-replica deployment, see High Availability.
Here is a sample Kubernetes YAML file bytebase.yaml describing the minimal components and configuration required to run Bytebase in Kubernetes.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: bytebase
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bytebase
  template:
    metadata:
      labels:
        app: bytebase
    spec:
      containers:
        - name: bytebase
          image: bytebase/bytebase:latest
          imagePullPolicy: Always
          # Configure external PostgreSQL following the guide:
          # https://www.bytebase.com/docs/get-started/self-host/external-postgres
          env:
            - name: PG_URL
              value: 'postgresql://<<user>>:<<secret>>@<<host>>:<<port>>/<<dbname>>'
          args:
            [
              '--port',
              '8080',
            ]
          ports:
            - containerPort: 8080
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 300
            periodSeconds: 300
            timeoutSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: bytebase-entrypoint
  namespace: default
spec:
  # Optional
  type: ClusterIP
  selector:
    app: bytebase
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  1. Start Bytebase with the following command:
    kubectl apply -f bytebase.yaml
    
  2. Make sure everything worked by listing your deployments:
    kubectl get statefulsets
    
    Do the same check for your services:
    kubectl get services
    

Deploy with Helm

Bytebase provides an official Helm chart for simplified Kubernetes deployments. For comprehensive configuration options and advanced settings, visit the Bytebase Helm Chart on Artifact Hub.
The current official Helm chart deploys a single replica and does not yet expose HA-specific settings such as replica count and the --ha flag. If you want to run Bytebase in HA mode today, use a custom manifest based on this guide or customize the chart template before deploying.

Installation

Deploy Bytebase using Helm with your external PostgreSQL database:
helm -n <YOUR_NAMESPACE> \
--set "bytebase.option.externalPg.url"={PGDSN} \
--set "bytebase.version"={VERSION} \
install <RELEASE_NAME> bytebase-repo/bytebase

Uninstallation

To remove the Bytebase deployment:
helm delete --namespace <YOUR_NAMESPACE> <RELEASE_NAME>

HA Deployment

To run Bytebase with multiple replicas on Kubernetes:
  1. Configure an external PostgreSQL database with PG_URL.
  2. Set replicas to more than 1.
  3. Add the --ha flag to every Bytebase replica.
  4. Put the replicas behind one stable ingress, gateway, or service entrypoint.
  5. Make sure the workspace license has HA enabled.
Example:
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: bytebase
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: bytebase
  serviceName: bytebase
  template:
    metadata:
      labels:
        app: bytebase
    spec:
      containers:
        - name: bytebase
          image: bytebase/bytebase:latest
          env:
            - name: PG_URL
              value: 'postgresql://<<user>>:<<secret>>@<<host>>:<<port>>/<<dbname>>'
          args:
            - '--port'
            - '8080'
            - '--ha'
          ports:
            - containerPort: 8080