tree: c3f0e8122f7591d778ebb3a5b12a00a3d01032a3 [path history] [tgz]
  1. templates/
  2. .helmignore
  3. Chart.yaml
  4. README.md
  5. values.yaml
charts/devlake/README.md

Deploy devlake with helm

Prerequisites

  • Helm >= 3.6.0
  • Kubernetes >= 1.19.0

Quick Install

clone the code

helm install devlake charts/devlake

And visit your devlake Config-UI from the nodePort (32001 by default) and Grafana Dashboard from the nodePort ( 32002 by default.)

http://YOUR-NODE-IP:32001 for Config-UI http://YOUR-NODE-IP:32002 for Grafana Dashboard

Note : You must provide the connection to the port through the Inbound rules of the cluster. You may found it in the cluster security group or the cluster firewall.

Some example deployments

Deploy with NodePort

Conditions:

  • IP Address of Kubernetes node: 192.168.0.6
  • Want to visit devlake with port 30000.
helm install devlake . --set service.uiPort=30000

After deployed, visit devlake: http://192.168.0.6:30000

Deploy with Ingress

Conditions:

helm install devlake . --set "ingress.enabled=true,ingress.hostname=devlake.example.com"

After deployed, visit devlake: http://devlake.example.com, and grafana at http://devlake.example.com/grafana

Deploy with Ingress (Https)

Conditions:

  • I have already configured ingress(class: nginx) for the Kubernetes cluster, and the https using 8443 port.
  • I want to use https://devlake-0.example.com:8443 for visiting devlake.
  • The https certificates are generated by letsencrypt.org, and the certificate and key files: cert.pem and key.pem

First, create the secret:

kubectl create secret tls ssl-certificate --cert cert.pem --key secret.pem

Then, deploy the devlake:

helm install devlake . \
    --set "ingress.enabled=true,ingress.enableHttps=true,ingress.hostname=devlake-0.example.com" \
    --set "ingress.className=nginx,ingress.httpsPort=8443" \
    --set "ingress.tlsSecretName=ssl-certificate"

After deployed, visit devlake: https://devlake-0.example.com:8443, and grafana at https://devlake-0.example.com:8443/grafana

Parameters

Some useful parameters for the chart, you could also check them in values.yaml

ParameterDescriptionDefault
replicaCountReplica Count for devlake, currently not used1
mysql.useExternalIf use external mysql server, set truefalse
mysql.externalServerExternal mysql server address127.0.0.1
mysql.externalPortExternal mysql server port3306
mysql.usernameusername for mysqlmerico
mysql.passwordpassword for mysqlmerico
mysql.databasedatabase for mysqllake
mysql.rootPasswordroot password for mysqladmin
mysql.storage.classstorage class for mysql's volume""
mysql.storage.sizevolume size for mysql's data5Gi
mysql.image.repositoryrepository for mysql's imagemysql
mysql.image.tagimage tag for mysql's image8.0.31
mysql.image.pullPolicypullPolicy for mysql's imageIfNotPresent
pgsql.useExternalIf use external pgsql server, set truefalse
pgsql.externalServerExternal pgsql server address127.0.0.1
pgsql.externalPortExternal pgsql server port3306
pgsql.usernameusername for pgsqlmerico
pgsql.passwordpassword for pgsqlmerico
pgsql.databasedatabase for pgsqllake
pgsql.storage.classstorage class for pgsql's volume""
pgsql.storage.sizevolume size for pgsql's data5Gi
pgsql.image.repositoryrepository for pgsql's imagepostgres
pgsql.image.tagimage tag for pgsql's image14.5
pgsql.image.pullPolicypullPolicy for pgsql's imageIfNotPresent
grafana.image.repositoryrepository for grafana's imagemericodev/grafana
grafana.image.tagimage tag for grafana's imagelatest
grafana.image.pullPolicypullPolicy for grafana's imageAlways
lake.storage.classstorage class for lake's volume""
lake.storage.sizevolume size for lake's data100Mi
lake.image.repositoryrepository for lake's imagemericodev/lake
lake.image.tagimage tag for lake's imagelatest
lake.image.pullPolicypullPolicy for lake's imageAlways
lake.loggingDirlog dir for the lake server/app/logs
lake.loggingLevellog level for the lake serverinfo
lake.dotenvinitial configurations for injecting to lake's .envsee Values.yaml
ui.image.repositoryrepository for ui's imagemericodev/config-ui
ui.image.tagimage tag for ui's imagelatest
ui.image.pullPolicypullPolicy for ui's imageAlways
ui.basicAuth.enabledIf the basic auth in ui is enabledfalse
ui.basicAuth.userThe user name for the basic auth“admin”
ui.basicAuth.passwordThe password for the basic auth“admin”
service.typeService type for exposed serviceNodePort
service.uiPortNode port for config ui32001
service.ingress.enabledIf enable ingressfalse
service.ingress.enableHttpsIf enable httpsfalse
service.ingress.classNameClass name for ingressClass. leave empty for using default""
service.ingress.hostnameThe hostname/domainname for ingresslocalhost
service.ingress.prefixThe prefix for endpoints, currently not used/
service.ingress.tlsSecretNameThe secret name for tls's certificate for https""
service.ingress.httpPortThe http port for ingress80
service.ingress.httpsPortThe https port for ingress443
option.localtimeThe hostpath for mount as /etc/localtime/etc/localtime
option.databaseThe database type, valids: mysql, pgsqlmysql