This is an automated email from the ASF dual-hosted git repository.

klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake-website.git


The following commit(s) were added to refs/heads/main by this push:
     new fd85cbfc65 Documentation for use external grafana (#529)
fd85cbfc65 is described below

commit fd85cbfc655bc6636148c84e1cce128d422ac770
Author: Ji Bin <[email protected]>
AuthorDate: Thu May 18 11:54:37 2023 +0800

    Documentation for use external grafana (#529)
    
    Signed-off-by: Ji Bin <[email protected]>
---
 docs/GettingStarted/HelmSetup.md                   | 216 ++++++++++++--------
 .../version-v0.16/GettingStarted/HelmSetup.md      | 193 +++++++++++-------
 .../version-v0.17/GettingStarted/HelmSetup.md      | 220 +++++++++++++--------
 3 files changed, 393 insertions(+), 236 deletions(-)

diff --git a/docs/GettingStarted/HelmSetup.md b/docs/GettingStarted/HelmSetup.md
index d792615a70..0473f20b7e 100644
--- a/docs/GettingStarted/HelmSetup.md
+++ b/docs/GettingStarted/HelmSetup.md
@@ -10,14 +10,13 @@ sidebar_position: 2
 - 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 the release name `devlake``:
+To install the chart with release name `devlake`:
 
 ```shell
 helm repo add devlake https://apache.github.io/incubator-devlake-helm-chart
@@ -29,31 +28,31 @@ 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:
+#### Tips:
+
+If you are using minikube inside your mac, please use the following command to 
forward the port:
+
 ```shell
 kubectl port-forward service/devlake-ui  30090:4000
 ```
+
 and open another terminal:
+
 ```shell
 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`
+config-ui by url `http://YOUR-NODE-IP:30090`
+grafana by url `http://YOUR-NODE-IP:30091`
 
-### Upgrade
-
-Please note: **Back up your Grafana dashboards** before upgrade if you have 
modified/customized any dashboards. You can re-import these dashboards to 
Grafana after the upgrade.
+### Update
 
 ```shell
 helm repo update
 helm upgrade --install devlake devlake/devlake --version=0.17.0-beta5
 ```
 
-Please check the [upgrade doc](Upgrade.md) for more information.
-
 ### Uninstall
 
 To uninstall/delete the `devlake` release:
@@ -62,46 +61,50 @@ 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.
+
+- 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
+After deployed, visit devlake: http://192.168.0.6:30000
 
 ### Deploy with Ingress
 
 Conditions:
- - I have already configured the default ingress for the Kubernetes cluster
- - I want to use http://devlake.example.com for visiting devlake
+
+- 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
+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`
+
+- 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 devlake/devlake \
     --set 
"ingress.enabled=true,ingress.enableHttps=true,ingress.hostname=devlake-0.example.com"
 \
@@ -109,70 +112,99 @@ helm install devlake devlake/devlake \
     --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
-
+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                          |
-| 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                      |
+| 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             |
+| mysql.extraLabels                         | extra labels for mysql's 
statefulset                 | {}                       |
+| mysql.securityContext                     | pod security context values      
                    | {}                       |
+| mysql.containerSecurityContext            | container security context 
values                    | {}                       |
+| grafana.image.repository                  | repository for grafana's image   
                    | apache/devlake-dashboard |
+| grafana.image.pullPolicy                  | pullPolicy for grafana's image   
                    | Always                   |
+| grafana.useExternal                       | If use external grafana server   
                    | false                    |
+| grafana.externalUrl                       | external grafana server if use 
external              | ""                       |
+| grafana.extraLabels                       | extra labels for grafana's 
statefulset               | {}                       |
+| grafana.securityContext                   | pod security context values      
                    | {}                       |
+| grafana.containerSecurityContext          | container security context 
values                    | {}                       |
+| grafana.oauthEnabled                      | enable oauth for grafana         
                    | false                    |
+| grafana.oauthConfig                       | a list of env vars used for 
oauth                    | {}                       |
+| 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          |
+| lake.extraLabels                          | extra labels for lake's 
statefulset                  | {}                       |
+| lake.securityContext                      | pod security context values      
                    | {}                       |
+| lake.containerSecurityContext             | container security context 
values                    | {}                       |
+| 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"                  |
+| ui.basicAuth.useSecret                    | If use secret instead of 
configmap for basic auth    | false                    |
+| ui.basicAuth.autoCreateSecret             | If let the helm chart create the 
secret              | true                     |
+| ui.basicAuth.secretName                   | The basic auth secret name       
                    | devlake-auth             |
+| ui.extraLabels                            | extra labels for ui's 
statefulset                    | {}                       |
+| ui.securityContext                        | pod security context values      
                    | {}                       |
+| ui.containerSecurityContext               | container security context 
values                    | {}                       |
+| 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                 | 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                    |
+| option.useConnectionDetailsSecret         | If use secret instead of 
configmap for db connection | false                    |
+| option.connectionSecretName               | The database connection details 
secret name          | devlake-db-connection    |
+| option.autoCreateSecret                   | If let the helm chart create the 
secret              | true                     |
+| awsCognitoAuth.enabled                    | use AWS cognito for 
authentication                   | false                    |
+| awsCognitoAuth.awsAuthRegion              | aws Cognito auth region          
                    | ""                       |
+| awsCognitoAuth.awsAuthUserPoolID          | aws Cognito user pool ID         
                    | ""                       |
+| awsCognitoAuth.awsAuthUserPoolWebClientID | aws Cognito web client ID for 
the user pool          | ""                       |
 
 ## FAQ
-### 1. 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.
-1. (Optional) Create a MySQL instance on AWS RDS following this 
[doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html).
 Skip this step if you would like to use an existing instance.
-2. 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>;`
-  
+
+1. Can I use a managed Cloud database service instead of running database in 
docker?
+
+  Yes, it just set useExternal value to true while you deploy devlake with 
helm chart. Below we'll use MySQL on AWS RDS as an example.
+
+  a. (Optional) Create a MySQL instance on AWS RDS following this 
[doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html),
 skip this step if you'd like to use an existing instance
+  b. Proviede below 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
@@ -184,8 +216,34 @@ Some useful parameters for the chart, you could also check 
them in values.yaml
     --set mysql.password=password_4_admin \
     --set mysql.database=devlake
   ```
-  
+
+2. Can I use a secret to store the database connection details?
+
+  Yes, to do so, you need to have a secret in your Kubernetes Cluster that 
contains the following values:
+
+  - `MYSQL_USER`: The user to connect to your DB.
+  - `MYSQL_PASSWORD`: The password to connect to your DB.
+  - `MYSQL_DATABASE`: The database to connect to your DB.
+  - `MYSQL_ROOT_PASSWORD`: The root password to connect to your DB.
+  - `DB_URL`: 
mysql://`username`:`password`@`dbserver`:`port`/`database`?charset=utf8mb4&parseTime=True
+
+  The secret name needs to be the same as the value 
`option.connectionSecretName`
+
+3. Can I use an external Grafana instead of running built-in Grafana?
+
+  Yes, the devlake helm chart supports using an external Grafana. You can set 
the following values while installing from helm:
+  - `grafana.useExternal`: this should be `true`
+  - `grafana.externalUrl`: use your Grafana's URL, e.g. 
`https://grafana.example.com`
+
+  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 grafana.useExternal=true \
+    --set grafana.externalUrl=https://grafana.example.com
+  ```
 
 ## Troubleshooting
 
-If you run into any problems, please check the 
[Troubleshooting](/Troubleshooting/Installation.md) or [create an 
issue](https://github.com/apache/incubator-devlake/issues)
+If you run into any problem, please check the 
[Troubleshooting](/Troubleshooting/Installation.md) or [create an 
issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/versioned_docs/version-v0.16/GettingStarted/HelmSetup.md 
b/versioned_docs/version-v0.16/GettingStarted/HelmSetup.md
index cb586c7236..2ac0ce1770 100644
--- a/versioned_docs/version-v0.16/GettingStarted/HelmSetup.md
+++ b/versioned_docs/version-v0.16/GettingStarted/HelmSetup.md
@@ -10,7 +10,6 @@ sidebar_position: 2
 - 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
@@ -29,29 +28,30 @@ And visit your devlake from the node port (32001 by 
default).
 
 http://YOUR-NODE-IP:32001
 
-#### Tips: 
+#### Tips:
+
 If you are using minikube inside your mac, please use the following command to 
forward the port:
+
 ```shell
 kubectl port-forward service/devlake-ui  30090:4000
 ```
+
 and open another terminal:
+
 ```shell
 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`
-
-### Upgrade
+config-ui by url `http://YOUR-NODE-IP:30090`
+grafana by url `http://YOUR-NODE-IP:30091`
 
-Please note: **Back up your Grafana dashboards** before upgrade if you have 
modified/customized any dashboards. You can re-import these dashboards to 
Grafana after the upgrade.
+### Update
 
 ```shell
 helm repo update
 helm upgrade --install devlake devlake/devlake --version=0.16.1-beta1
 ```
-Please check the [upgrade doc](Upgrade.md) for more information.
 
 ### Uninstall
 
@@ -61,46 +61,50 @@ 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.
+
+- 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
+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
+
+- 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
+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`
+
+- 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 devlake/devlake \
     --set 
"ingress.enabled=true,ingress.enableHttps=true,ingress.hostname=devlake-0.example.com"
 \
@@ -108,70 +112,81 @@ helm install devlake devlake/devlake \
     --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
-
+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                          |
-| 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                      |
+| 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                     |
+| grafana.useExternal               | If use external grafana server           
                | false                      |
+| grafana.externalUrl               | external grafana server if use external  
                | ""                         |
+| 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"                    |
+| ui.basicAuth.useSecret            | If use secret instead of configmap for 
basic auth        | false                      |
+| ui.basicAuth.autoCreateSecret     | If let the helm chart create the secret  
                | true                       |
+| ui.basicAuth.secretName           | The basic auth secret name               
                | devlake-auth               |
+| 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         | 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                      |
+| option.useConnectionDetailsSecret | If use secret instead of configmap for 
db connection     | false                      |
+| option.connectionSecretName       | The database connection details secret 
name              | devlake-db-connection      |
+| option.autoCreateSecret           | If let the helm chart create the secret  
                | true                       |
 
 ## FAQ
-### 1. 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.
-1. (Optional) Create a MySQL instance on AWS RDS following this 
[doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html).
 Skip this step if you would like to use an existing instance.
-2. 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>;`
-  
+
+1. Can I use a managed Cloud database service instead of running database in 
docker?
+
+  Yes, it just set useExternal value to true while you deploy devlake with 
helm chart. Below we'll use MySQL on AWS RDS as an example.
+
+  a. (Optional) Create a MySQL instance on AWS RDS following this 
[doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html),
 skip this step if you'd like to use an existing instance
+  b. Proviede below 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
@@ -183,8 +198,34 @@ Some useful parameters for the chart, you could also check 
them in values.yaml
     --set mysql.password=password_4_admin \
     --set mysql.database=devlake
   ```
-  
+
+2. Can I use a secret to store the database connection details?
+
+  Yes, to do so, you need to have a secret in your Kubernetes Cluster that 
contains the following values:
+
+  - `MYSQL_USER`: The user to connect to your DB.
+  - `MYSQL_PASSWORD`: The password to connect to your DB.
+  - `MYSQL_DATABASE`: The database to connect to your DB.
+  - `MYSQL_ROOT_PASSWORD`: The root password to connect to your DB.
+  - `DB_URL`: 
mysql://`username`:`password`@`dbserver`:`port`/`database`?charset=utf8mb4&parseTime=True
+
+  The secret name needs to be the same as the value 
`option.connectionSecretName`
+
+3. Can I use an external Grafana instead of running built-in Grafana?
+
+  Yes, the devlake helm chart supports using an external Grafana. You can set 
the following values while installing from helm:
+  - `grafana.useExternal`: this should be `true`
+  - `grafana.externalUrl`: use your Grafana's URL, e.g. 
`https://grafana.example.com`
+
+  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 grafana.useExternal=true \
+    --set grafana.externalUrl=https://grafana.example.com
+  ```
 
 ## Troubleshooting
 
-If you run into any problems, please check the 
[Troubleshooting](/Troubleshooting/Installation.md) or [create an 
issue](https://github.com/apache/incubator-devlake/issues)
+If you run into any problem, please check the 
[Troubleshooting](/Troubleshooting/Installation.md) or [create an 
issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/versioned_docs/version-v0.17/GettingStarted/HelmSetup.md 
b/versioned_docs/version-v0.17/GettingStarted/HelmSetup.md
index a408e5531b..0473f20b7e 100644
--- a/versioned_docs/version-v0.17/GettingStarted/HelmSetup.md
+++ b/versioned_docs/version-v0.17/GettingStarted/HelmSetup.md
@@ -10,50 +10,49 @@ sidebar_position: 2
 - 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 the release name `devlake``:
+To install the chart with release name `devlake`:
 
 ```shell
 helm repo add devlake https://apache.github.io/incubator-devlake-helm-chart
 helm repo update
-helm install devlake devlake/devlake --version=0.16.1-beta1
+helm install devlake devlake/devlake --version=0.17.0-beta5
 ```
 
 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:
+#### Tips:
+
+If you are using minikube inside your mac, please use the following command to 
forward the port:
+
 ```shell
 kubectl port-forward service/devlake-ui  30090:4000
 ```
+
 and open another terminal:
+
 ```shell
 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`
+config-ui by url `http://YOUR-NODE-IP:30090`
+grafana by url `http://YOUR-NODE-IP:30091`
 
-### Upgrade
-
-Please note: **Back up your Grafana dashboards** before upgrade if you have 
modified/customized any dashboards. You can re-import these dashboards to 
Grafana after the upgrade.
+### Update
 
 ```shell
 helm repo update
-helm upgrade --install devlake devlake/devlake --version=0.17.0-beta4
+helm upgrade --install devlake devlake/devlake --version=0.17.0-beta5
 ```
 
-Please check the [upgrade doc](Upgrade.md) for more information.
-
 ### Uninstall
 
 To uninstall/delete the `devlake` release:
@@ -62,46 +61,50 @@ 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.
+
+- 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
+After deployed, visit devlake: http://192.168.0.6:30000
 
 ### Deploy with Ingress
 
 Conditions:
- - I have already configured the default ingress for the Kubernetes cluster
- - I want to use http://devlake.example.com for visiting devlake
+
+- 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
+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`
+
+- 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 devlake/devlake \
     --set 
"ingress.enabled=true,ingress.enableHttps=true,ingress.hostname=devlake-0.example.com"
 \
@@ -109,70 +112,99 @@ helm install devlake devlake/devlake \
     --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
-
+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                          |
-| 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                      |
+| 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             |
+| mysql.extraLabels                         | extra labels for mysql's 
statefulset                 | {}                       |
+| mysql.securityContext                     | pod security context values      
                    | {}                       |
+| mysql.containerSecurityContext            | container security context 
values                    | {}                       |
+| grafana.image.repository                  | repository for grafana's image   
                    | apache/devlake-dashboard |
+| grafana.image.pullPolicy                  | pullPolicy for grafana's image   
                    | Always                   |
+| grafana.useExternal                       | If use external grafana server   
                    | false                    |
+| grafana.externalUrl                       | external grafana server if use 
external              | ""                       |
+| grafana.extraLabels                       | extra labels for grafana's 
statefulset               | {}                       |
+| grafana.securityContext                   | pod security context values      
                    | {}                       |
+| grafana.containerSecurityContext          | container security context 
values                    | {}                       |
+| grafana.oauthEnabled                      | enable oauth for grafana         
                    | false                    |
+| grafana.oauthConfig                       | a list of env vars used for 
oauth                    | {}                       |
+| 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          |
+| lake.extraLabels                          | extra labels for lake's 
statefulset                  | {}                       |
+| lake.securityContext                      | pod security context values      
                    | {}                       |
+| lake.containerSecurityContext             | container security context 
values                    | {}                       |
+| 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"                  |
+| ui.basicAuth.useSecret                    | If use secret instead of 
configmap for basic auth    | false                    |
+| ui.basicAuth.autoCreateSecret             | If let the helm chart create the 
secret              | true                     |
+| ui.basicAuth.secretName                   | The basic auth secret name       
                    | devlake-auth             |
+| ui.extraLabels                            | extra labels for ui's 
statefulset                    | {}                       |
+| ui.securityContext                        | pod security context values      
                    | {}                       |
+| ui.containerSecurityContext               | container security context 
values                    | {}                       |
+| 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                 | 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                    |
+| option.useConnectionDetailsSecret         | If use secret instead of 
configmap for db connection | false                    |
+| option.connectionSecretName               | The database connection details 
secret name          | devlake-db-connection    |
+| option.autoCreateSecret                   | If let the helm chart create the 
secret              | true                     |
+| awsCognitoAuth.enabled                    | use AWS cognito for 
authentication                   | false                    |
+| awsCognitoAuth.awsAuthRegion              | aws Cognito auth region          
                    | ""                       |
+| awsCognitoAuth.awsAuthUserPoolID          | aws Cognito user pool ID         
                    | ""                       |
+| awsCognitoAuth.awsAuthUserPoolWebClientID | aws Cognito web client ID for 
the user pool          | ""                       |
 
 ## FAQ
-### 1. 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.
-1. (Optional) Create a MySQL instance on AWS RDS following this 
[doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html).
 Skip this step if you would like to use an existing instance.
-2. 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>;`
-  
+
+1. Can I use a managed Cloud database service instead of running database in 
docker?
+
+  Yes, it just set useExternal value to true while you deploy devlake with 
helm chart. Below we'll use MySQL on AWS RDS as an example.
+
+  a. (Optional) Create a MySQL instance on AWS RDS following this 
[doc](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html),
 skip this step if you'd like to use an existing instance
+  b. Proviede below 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
@@ -184,8 +216,34 @@ Some useful parameters for the chart, you could also check 
them in values.yaml
     --set mysql.password=password_4_admin \
     --set mysql.database=devlake
   ```
-  
+
+2. Can I use a secret to store the database connection details?
+
+  Yes, to do so, you need to have a secret in your Kubernetes Cluster that 
contains the following values:
+
+  - `MYSQL_USER`: The user to connect to your DB.
+  - `MYSQL_PASSWORD`: The password to connect to your DB.
+  - `MYSQL_DATABASE`: The database to connect to your DB.
+  - `MYSQL_ROOT_PASSWORD`: The root password to connect to your DB.
+  - `DB_URL`: 
mysql://`username`:`password`@`dbserver`:`port`/`database`?charset=utf8mb4&parseTime=True
+
+  The secret name needs to be the same as the value 
`option.connectionSecretName`
+
+3. Can I use an external Grafana instead of running built-in Grafana?
+
+  Yes, the devlake helm chart supports using an external Grafana. You can set 
the following values while installing from helm:
+  - `grafana.useExternal`: this should be `true`
+  - `grafana.externalUrl`: use your Grafana's URL, e.g. 
`https://grafana.example.com`
+
+  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 grafana.useExternal=true \
+    --set grafana.externalUrl=https://grafana.example.com
+  ```
 
 ## Troubleshooting
 
-If you run into any problems, please check the 
[Troubleshooting](/Troubleshooting/Installation.md) or [create an 
issue](https://github.com/apache/incubator-devlake/issues)
+If you run into any problem, please check the 
[Troubleshooting](/Troubleshooting/Installation.md) or [create an 
issue](https://github.com/apache/incubator-devlake/issues)

Reply via email to