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
-
Start Bytebase with the following command:
kubectl apply -f bytebase.yaml
-
Make sure everything worked by listing your deployments:
Do the same check for your 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
To let the chart construct PG_URL from external PostgreSQL fields, set the host, port, username, database, and authentication-specific values instead of bytebase.option.externalPg.url.
For AWS RDS IAM authentication:
helm -n <YOUR_NAMESPACE> \
--set "bytebase.option.externalPg.pgHost"={RDS_ENDPOINT} \
--set "bytebase.option.externalPg.pgPort"=5432 \
--set "bytebase.option.externalPg.pgUsername"={DB_USER} \
--set "bytebase.option.externalPg.pgDatabase"={DB_NAME} \
--set "bytebase.option.externalPg.awsRdsIam.enabled"=true \
--set "bytebase.option.externalPg.awsRdsIam.region"={AWS_REGION} \
--set "bytebase.version"={VERSION} \
install <RELEASE_NAME> bytebase-repo/bytebase
For GCP Cloud SQL IAM authentication:
helm -n <YOUR_NAMESPACE> \
--set "bytebase.option.externalPg.pgUsername"={IAM_DATABASE_USER} \
--set "bytebase.option.externalPg.pgDatabase"={DB_NAME} \
--set "bytebase.option.externalPg.gcpCloudSqlIam.enabled"=true \
--set "bytebase.option.externalPg.gcpCloudSqlIam.instanceConnectionName"={PROJECT_ID:REGION:INSTANCE_ID} \
--set "bytebase.version"={VERSION} \
install <RELEASE_NAME> bytebase-repo/bytebase
See Configure External PostgreSQL for the required AWS or GCP IAM setup.
Uninstallation
To remove the Bytebase deployment:
helm delete --namespace <YOUR_NAMESPACE> <RELEASE_NAME>
HA Deployment
To run Bytebase with multiple replicas on Kubernetes:
- Configure an external PostgreSQL database with
PG_URL.
- Set
replicas to more than 1.
- Add the
--ha flag to every Bytebase replica.
- Put the replicas behind one stable ingress, gateway, or service entrypoint.
- 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