Deployment

Make sure to set the replicas to 1, otherwise, it may cause data race issues.
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:
  # To prevent data races, only request one replica.
  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.

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>