:::caution
We highly recommend the helm approach, this page is for Advanced Installation only
:::
We provide a sample k8s-deploy.yaml to help deploy DevLake to Kubernetes
k8s-deploy.yaml will create a namespace devlake on your k8s cluster, and use nodePort 30004 for config-ui, nodePort 30002 for grafana dashboards. If you would like to use a specific version of Apache DevLake, please update the image tag of grafana, devlake and config-ui deployments.
devlake-config config map):grafana and mysqlMYSQL_ROOT_PASSWORD: set root password for mysqlMYSQL_USER: shared between mysql and grafanaMYSQL_PASSWORD: shared between mysql and grafanaMYSQL_DATABASE: shared between mysql and grafanagrafanaMYSQL_URL: set MySQL URL for grafana in $HOST:$PORT formatGF_SERVER_ROOT_URL: Public URL to the grafanaconfig-ui:GRAFANA_ENDPOINT: FQDN of grafana which can be reached within k8s cluster, normally you don't need to change it unless namespace was changedDEVLAKE_ENDPOINT: FQDN of devlake which can be reached within k8s cluster, normally you don't need to change it unless namespace was changedADMIN_USER/ADMIN_PASS: Not required, but highly recommendeddevlake:DB_URL: update this value if MYSQL_USER, MYSQL_PASSWORD or MYSQL_DATABASE were changedLOGGING_DIR: the directory of logs for Devlake - you likely don't need to change it.devlake deployment store its configuration in /app/.env. In our sample yaml, we use hostPath volume, so please make sure directory /var/lib/devlake exists on your k8s workers, or employ other techniques to persist /app/.env file. Please do NOT mount the entire /app directory, because plugins are located in /app/bin folder.kubectl apply -f k8s-deploy.yaml
Can I use a managed Cloud database service instead of running database in k8s?
Yes, it only takes a few changes in the sample yaml file. Below we'll use MySQL on AWS RDS as an example.
mysql deployment and service sections from k8s-deploy.yamldevlake-config configmap according to your RDS instance setup:MYSQL_ROOT_PASSWORD: remove this lineMYSQL_USER: use your RDS instance's master usernameMYSQL_PASSWORD: use your RDS instance's passwordMYSQL_DATABASE: use your RDS instance's DB name, you may need to create a database first with CREATE DATABASE <DB name>;MYSQL_URL: set this for grafana in $HOST:$PORT format, where $HOST and $PORT should be your RDS instance's endpoint and port respectivelyDB_URL: update the connection string with your RDS instance's info for devlake