blob: 9f87f6f261a5328b237b63b514cb6d2e9a1fe657 [file] [log] [blame] [view]
# 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:
- I have already configured default ingress for the Kubernetes cluster
- I want to use http://devlake.example.com for visiting devlake
```
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
| Parameter | Description | Default |
| ----------------------------- | ---------------------------------------------------------- | ------------------- |
| replicaCount | Replica Count for devlake, currently not used | 1 |
| 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.0.31 |
| mysql.image.pullPolicy | pullPolicy for mysql's image | IfNotPresent |
| pgsql.useExternal | If use external pgsql server, set true | false |
| pgsql.externalServer | External pgsql server address | 127.0.0.1 |
| pgsql.externalPort | External pgsql server port | 3306 |
| pgsql.username | username for pgsql | merico |
| pgsql.password | password for pgsql | merico |
| pgsql.database | database for pgsql | lake |
| pgsql.storage.class | storage class for pgsql's volume | "" |
| pgsql.storage.size | volume size for pgsql's data | 5Gi |
| pgsql.image.repository | repository for pgsql's image | postgres |
| pgsql.image.tag | image tag for pgsql's image | 14.5 |
| pgsql.image.pullPolicy | pullPolicy for pgsql's image | IfNotPresent |
| grafana.image.repository | repository for grafana's image | mericodev/grafana |
| grafana.image.tag | image tag for grafana's image | latest |
| 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 | mericodev/lake |
| lake.image.tag | image tag for lake's image | latest |
| 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 |
| ui.image.repository | repository for ui's image | mericodev/config-ui |
| ui.image.tag | image tag for ui's image | latest |
| 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 enable ingress | false |
| service.ingress.enableHttps | If enable https | 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, pgsql | mysql |