Install via Helm
Prerequisites
- Helm >= 3.6.0
- Kubernetes >= 1.19.0
Quick Start
You can also check https://github.com/apache/incubator-devlake-helm-chart to make contribution
Install
To install the chart with release name devlake
:
helm repo add devlake https://apache.github.io/incubator-devlake-helm-chart
helm repo update
helm install devlake devlake/devlake --version=0.15.1-beta6
And visit your devlake from the node port (32001 by default).
http://YOUR-NODE-IP:32001
Tips:
If you are using minikube inside your mac, please use the following command to forward the port:
kubectl port-forward service/devlake-ui 30090:4000
and open another terminal:
kubectl port-forward service/devlake-grafana 30091:3000
Then you can visit:
Config UI URL http://YOUR-NODE-IP:30090
Grafana URL http://YOUR-NODE-IP:30091
Update
helm repo update
helm upgrade --install devlake devlake/devlake --version=0.15.1-beta6
Uninstall
To uninstall/delete the devlake
release:
helm uninstall devlake
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 devlake/devlake --set service.uiPort=30000
After the deployment, visit devlake at: http://192.168.0.6:30000
Deploy with Ingress
Conditions:
- I have already configured default ingress for the Kubernetes cluster
- I want to use http://devlake.example.com for visiting devlake
helm install devlake devlake/devlake --set "ingress.enabled=true,ingress.hostname=devlake.example.com"
After the deployment, visit devlake at: 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
andkey.pem
First, create the secret:
kubectl create secret tls ssl-certificate --cert cert.pem --key secret.pem
Then, deploy the devlake:
helm install devlake devlake/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 the deployment, visit devlake at: 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
Parameter | Description | Default |
---|---|---|
replicaCount | Replica Count for devlake, currently not used | 1 |
imageTag | The version tag for all images | see Values.yaml |
mysql.useExternal | If use external mysql server, set true | false |
mysql.externalServer | External mysql server address | 127.0.0.1 |
mysql.externalPort | External mysql server port | 3306 |
mysql.username | username for mysql | merico |
mysql.password | password for mysql | merico |
mysql.database | database for mysql | lake |
mysql.rootPassword | root password for mysql | admin |
mysql.storage.class | storage class for mysql's volume | "" |
mysql.storage.size | volume size for mysql's data | 5Gi |
mysql.image.repository | repository for mysql's image | mysql |
mysql.image.tag | image tag for mysql's image | 8 |
mysql.image.pullPolicy | pullPolicy for mysql's image | IfNotPresent |
grafana.image.repository | repository for grafana's image | apache/devlake-dashboard |
grafana.image.pullPolicy | pullPolicy for grafana's image | Always |
lake.storage.class | storage class for lake's volume | "" |
lake.storage.size | volume size for lake's data | 100Mi |
lake.image.repository | repository for lake's image | apache/devlake |
lake.image.pullPolicy | pullPolicy for lake's image | Always |
lake.loggingDir | log dir for the lake server | /app/logs |
lake.loggingLevel | log level for the lake server | info |
lake.dotenv | initial configurations for injecting to lake's .env | see Values.yaml |
ui.image.repository | repository for ui's image | apache/devlake-config-ui |
ui.image.pullPolicy | pullPolicy for ui's image | Always |
ui.basicAuth.enabled | If the basic auth in ui is enabled | false |
ui.basicAuth.user | The user name for the basic auth | "admin" |
ui.basicAuth.password | The password for the basic auth | "admin" |
service.type | Service type for exposed service | NodePort |
service.uiPort | Node port for config ui | 32001 |
service.ingress.enabled | If ingress is enabled | false |
service.ingress.enableHttps | If https is enabled | false |
service.ingress.className | Class name for ingressClass. leave empty for using default | "" |
service.ingress.hostname | The hostname/domainname for ingress | localhost |
service.ingress.prefix | The prefix for endpoints, currently not used | / |
service.ingress.tlsSecretName | The secret name for tls's certificate for https | "" |
service.ingress.httpPort | The http port for ingress | 80 |
service.ingress.httpsPort | The https port for ingress | 443 |
option.localtime | The hostpath for mount as /etc/localtime | /etc/localtime |
option.database | The database type, valids: mysql | mysql |
FAQ
Can I use a managed cloud database service instead of running database in Docker?
Yes, you can just set useExternal value to true while deploying devlake with helm chart. Below we will use MySQL on AWS RDS as an example.
(Optional) Create a MySQL instance on AWS RDS following this doc. Skip this step if you would like to use an existing instance.
Provide the following values while install from helm:
* `mysql.useExternal`: this should be `true`
* `mysql.externalServer`: use your RDS instance's IP address or domain name.
* `mysql.externalPort`: use your RDS instance's database port.
* `mysql.username`: use your `username` for access RDS instance's DB
* `mysql.password`: use your `password` for access RDS instance's DB
* `mysql.database`: use your RDS instance's DB name, you may need to create a database first with `CREATE DATABASE <DB name>;`
Here is the example:
helm repo add devlake https://apache.github.io/incubator-devlake-helm-chart
helm repo update
helm install devlake devlake/devlake \
--set mysql.useExternal=true \
--set mysql.externalServer=db.example.com \
--set mysql.externalPort=3306 \
--set mysql.username=admin \
--set mysql.password=password_4_admin \
--set mysql.database=devlake
Troubleshooting
If you run into any problems, please check the Troubleshooting or create an issue