You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2023/02/27 04:29:11 UTC

[incubator-devlake-helm-chart] branch main updated: docs: refine setup guide (#78)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new e6ca440  docs: refine setup guide (#78)
e6ca440 is described below

commit e6ca44075e97725a4e910220f32639271b853a27
Author: Ji Bin <ma...@live.com>
AuthorDate: Mon Feb 27 12:29:05 2023 +0800

    docs: refine setup guide (#78)
    
    - remove README.md in chart
    - add HelmSetup.md which align with in website repo
---
 .github/workflows/deploy-test.yml                 |   1 +
 .github/workflows/lint-chart-and-app-versions.yml |   1 +
 .github/workflows/release.yaml                    |   1 +
 HelmSetup.md                                      | 198 ++++++++++++++++++++++
 README.md                                         |   4 +
 charts/devlake/README.md                          | 131 --------------
 6 files changed, 205 insertions(+), 131 deletions(-)

diff --git a/.github/workflows/deploy-test.yml b/.github/workflows/deploy-test.yml
index 9d83e64..36d77dc 100644
--- a/.github/workflows/deploy-test.yml
+++ b/.github/workflows/deploy-test.yml
@@ -29,6 +29,7 @@ on:
     paths:
       - charts/devlake/**
       - .github/workflows/deploy-test.yml
+      - '!**.md'
 
 jobs:
   deploy-with-helm:
diff --git a/.github/workflows/lint-chart-and-app-versions.yml b/.github/workflows/lint-chart-and-app-versions.yml
index 4a78521..ec28be3 100644
--- a/.github/workflows/lint-chart-and-app-versions.yml
+++ b/.github/workflows/lint-chart-and-app-versions.yml
@@ -5,6 +5,7 @@ on:
       - main
     paths:
       - charts/**
+      - '!**.md'
 jobs:
   check_chart_version_matches_app_version:
     name: chart version matches app version
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 3a496ab..de9d994 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -6,6 +6,7 @@ on:
       - main
     paths:
       - charts/**
+      - '!**.md'
 jobs:
   release:
     runs-on: ubuntu-latest
diff --git a/HelmSetup.md b/HelmSetup.md
new file mode 100644
index 0000000..69539fb
--- /dev/null
+++ b/HelmSetup.md
@@ -0,0 +1,198 @@
+---
+title: "Install via Helm"
+description: >
+  The steps to install Apache DevLake via Helm for Kubernetes
+sidebar_position: 2
+---
+
+## 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`:
+
+```shell
+helm repo add devlake https://apache.github.io/incubator-devlake-helm-chart
+helm repo update
+helm install devlake devlake/devlake --version=0.15.1-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:
+```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 by url `http://YOUR-NODE-IP:30090`
+grafana by url `http://YOUR-NODE-IP:30091`
+
+### Update
+
+```shell
+helm repo update
+helm upgrade --install devlake devlake/devlake --version=0.15.1-beta5
+```
+
+### Uninstall
+
+To uninstall/delete the `devlake` release:
+
+```shell
+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 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 devlake/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 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 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               |
+| 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                             | 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 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                      |
+
+## FAQ
+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.
+  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'd like to use an existing instance
+  2. 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
+  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 problem, please check the [Troubleshooting](/Troubleshooting/Installation.md) or [create an issue](https://github.com/apache/incubator-devlake/issues)
diff --git a/README.md b/README.md
index 7c7760e..59f4b0c 100644
--- a/README.md
+++ b/README.md
@@ -71,3 +71,7 @@ https://github.com/apache/incubator-devlake/pulls?q=is%3Apr+helm+is%3Aclosed
 
 ## Original pr in apache/incubator-devlake
 https://github.com/apache/incubator-devlake/pulls?q=is%3Apr+helm+is%3Aclosed
+
+
+## More
+You could find more examples and details in [HelmSetup.md](HelmSetup.md)
\ No newline at end of file
diff --git a/charts/devlake/README.md b/charts/devlake/README.md
deleted file mode 100644
index de98b3c..0000000
--- a/charts/devlake/README.md
+++ /dev/null
@@ -1,131 +0,0 @@
-# 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                |
-| lake.dotenv                   | initial configurations for injecting to lake's .env        | see Values.yaml     |
-| 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               |