feat: support jvm options and K8s resources quota (#18)

Signed-off-by: Bird <aflybird0@gmail.com>

Signed-off-by: Bird <aflybird0@gmail.com>
diff --git a/charts/shenyu/Chart.yaml b/charts/shenyu/Chart.yaml
index 8754871..193ac4a 100644
--- a/charts/shenyu/Chart.yaml
+++ b/charts/shenyu/Chart.yaml
@@ -2,7 +2,7 @@
 name: shenyu
 description: Helm Chart for deploying Apache ShenYu in Kubernetes
 type: application
-version: 0.3.1
+version: 0.4.0
 appVersion: "2.5.0"
 icon: https://shenyu.apache.org/img/logo.png
 maintainers:
diff --git a/charts/shenyu/README.md b/charts/shenyu/README.md
index 862f2a1..882b427 100644
--- a/charts/shenyu/README.md
+++ b/charts/shenyu/README.md
@@ -98,19 +98,45 @@
 helm install shenyu shenyu/shenyu -n=shenyu --version=0.2.0 --create-namespace
 ```
 
+### How to configure JVM options and modify Kubernetes resource quotas(Version of ShenYu > 2.5.0)
+
+* Configure JVM parameters via `admin.jvmOpts` and `bootstrap.jvmOpts`
+* Configure Kubernetes resource quotas via `admin.resources` and `bootstrap.resources`.
+
+e.g.
+
+```shell
+helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \
+      --set admin.javaOpts="-Xms256m -Xmx512m" \
+      --set admin.resources.requests.memory=512Mi \
+      --set admin.resources.limits.memory=1Gi \
+      --set admin.resources.requests.cpu=500m \
+      --set admin.resources.limits.cpu=1 \
+```
+
 ## Values configuration instructions
 
 ### Global Configuration
-| configuration-item | type   | default                     | description                                                                                        |
-|--------------------|--------|-----------------------------|----------------------------------------------------------------------------------------------------|
-| replicas           | int    | `1`                         | Number of replicas                                                                                 |
-| version            | string | `"2.5.0"`                   | shenyu version, it is not recommended to modify, please install the corresponding version directly |
-| admin.enabled      | bool   | `true`                      | Whether to install shenyu-admin                                                                    |
-| admin.image        | string | `"apache/shenyu-admin"`     | shenyu-admin image                                                                                 |
-| admin.nodePort     | int    | `31095`                     | shenyu-admin NodePort                                                                              |
-| bootstrap.enabled  | bool   | `true`                      | whether to install shenyu-bootstrap                                                                |
-| bootstrap.image    | string | `"apache/shenyu-bootstrap"` | shenyu-bootstrap image                                                                             |
-| bootstrap.nodePort | int    | `31195`                     | shenyu-bootstrap NodePort                                                                          |
+| configuration item | type   | default   | description                                                                                        |
+|--------------------|--------|-----------|----------------------------------------------------------------------------------------------------|
+| replicas           | int    | `1`       | Number of replicas                                                                                 |
+| version            | string | `"2.5.0"` | shenyu version, it is not recommended to modify, please install the corresponding version directly |
+
+### shenyu-admin configuration
+| configuration item | type   | default                                                                                                     | description        |
+|--------------------|--------|-------------------------------------------------------------------------------------------------------------|--------------------|
+| admin.nodePort     | int    | `31095`                                                                                                     | NodePort port      |
+| admin.javaOpts     | string | [see here](https://github.com/apache/shenyu/blob/master/shenyu-dist/shenyu-admin-dist/docker/entrypoint.sh) | JVM parameters     |
+| admin.resources    | dict   | omit                                                                                                        | K8s resource quota |
+
+### shenyu-bootstrap configuration
+| configuration item  | type   | default                                                                                                         | description        |
+|---------------------|--------|-----------------------------------------------------------------------------------------------------------------|--------------------|
+| bootstrap.nodePort  | int    | `31195`                                                                                                         | NodePort Port      |
+| bootstrap.javaOpts  | string | [see here](https://github.com/apache/shenyu/blob/master/shenyu-dist/shenyu-bootstrap-dist/docker/entrypoint.sh) | JVM parameters     |
+| bootstrap.resources | dict   | `{}`                                                                                                            | K8s resource quota |
+
+Translated with www.DeepL.com/Translator (free version)                                                                     |
 
 ### Database configuration
 
@@ -137,14 +163,14 @@
 | dataSource.mysql.connectorVersion | string | `"8.0.23"`                   | connector version([maven connector list](https://repo1.maven.org/maven2/mysql/mysql-connector-java/)) |
 
 ### PostgreSQL
-| configuration-item             | type   | default           | description                                                                                           |
-|--------------------------------|--------|-------------------|-------------------------------------------------------------------------------------------------------|
-| dataSource.pg.ip               | string | `""`              | IP                                                                                                    |
-| dataSource.pg.port             | int    | `5432`            | port                                                                                                  |
-| dataSource.pg.username         | string | `"postgres"`      | username                                                                                              |
-| dataSource.pg.password         | string | `"postgres"`      | password                                                                                              |
-| dataSource.pg.driverClass      | string | `"org.pg.Driver"` | PostgreSQL driver class name                                                                          |
-| dataSource.pg.connectorVersion | string | `"42.2.18"`       | connector version ([maven connector list](https://repo1.maven.org/maven2/org/postgresql/postgresql/)) |
+| configuration-item             | type   | default                   | description                                                                                           |
+|--------------------------------|--------|---------------------------|-------------------------------------------------------------------------------------------------------|
+| dataSource.pg.ip               | string | `""`                      | IP                                                                                                    |
+| dataSource.pg.port             | int    | `5432`                    | port                                                                                                  |
+| dataSource.pg.username         | string | `"postgres"`              | username                                                                                              |
+| dataSource.pg.password         | string | `"postgres"`              | password                                                                                              |
+| dataSource.pg.driverClass      | string | `"org.postgresql.Driver"` | PostgreSQL driver class name                                                                          |
+| dataSource.pg.connectorVersion | string | `"42.2.18"`               | connector version ([maven connector list](https://repo1.maven.org/maven2/org/postgresql/postgresql/)) |
 
 ### application.yml configuration
 | configuration-item          | type   | default  | description                                                                                                                                          |
@@ -251,27 +277,51 @@
 helm install shenyu shenyu/shenyu -n=shenyu --version=0.2.0 --create-namespace
 ```
 
+### 如何配置 JVM 参数以及修改 Kubernetes 资源配额(ShenYu 版本 > 2.5.0)
+
+* 通过 `admin.javaOpts` 和 `bootstrap.javaOpts` 来配置 JVM 参数
+* 通过 `admin.resources` 和 `bootstrap.resources` 来配置 Kubernetes 资源配额。
+
+例:
+
+```shell
+helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \
+      --set admin.javaOpts="-Xms256m -Xmx512m" \
+      --set admin.resources.requests.memory=512Mi \
+      --set admin.resources.limits.memory=1Gi \
+      --set admin.resources.requests.cpu=500m \
+      --set admin.resources.limits.cpu=1 \
+```
+
 ## Values 配置说明
 
 ### 全局配置
-| 配置项              | 类型    | 默认值                       | 描述                                   |
-|--------------------|--------|-----------------------------|---------------------------------------|
-| replicas           | int    | `1`                         | 副本数量                               |
-| version            | string | `"2.5.0"`                   | shenyu 版本,不建议修改,请直接安装对应版本 |
-| admin.enabled      | bool   | `true`                      | 是否安装 shenyu-admin                  |
-| admin.image        | string | `"apache/shenyu-admin"`     | shenyu-admin 镜像                      |
-| admin.nodePort     | int    | `31095`                     | shenyu-admin NodePort 端口             |
-| bootstrap.enabled  | bool   | `true`                      | 是否安装 shenyu-bootstrap              |
-| bootstrap.image    | string | `"apache/shenyu-bootstrap"` | shenyu-bootstrap 镜像                  |
-| bootstrap.nodePort | int    | `31195`                     | shenyu-bootstrap NodePort 端口         |
+| 配置项    | 类型    | 默认值     | 描述                                   |
+|----------|--------|-----------|---------------------------------------|
+| replicas | int    | `1`       | 副本数量                               |
+| version  | string | `"2.5.0"` | shenyu 版本,不建议修改,请直接安装对应版本 |
+
+### shenyu-admin 配置
+| 配置项           | 类型    | 默认值                                                                                                      | 描述          |
+|-----------------|--------|------------------------------------------------------------------------------------------------------------|--------------|
+| admin.nodePort  | int    | `31095`                                                                                                    | NodePort 端口 |
+| admin.javaOpts  | string | [详见这里](https://github.com/apache/shenyu/blob/master/shenyu-dist/shenyu-admin-dist/docker/entrypoint.sh) | JVM 参数      |
+| admin.resources | dict   | 略                                                                                                         | K8s 资源配额  |
+
+### shenyu-bootstrap 配置
+| 配置项               | 类型    | 默认值                                                                                                          | 描述          |
+|---------------------|--------|----------------------------------------------------------------------------------------------------------------|--------------|
+| bootstrap.nodePort  | int    | `31195`                                                                                                        | NodePort 端口 |
+| bootstrap.javaOpts  | string | [详见这里](https://github.com/apache/shenyu/blob/master/shenyu-dist/shenyu-bootstrap-dist/docker/entrypoint.sh) | JVM 参数      |
+| bootstrap.resources | dict   | `{}`                                                                                                           | K8s 资源配额  |
 
 ### 数据库配置
 
 #### 数据库总配置
-| 配置项                  | 类型    | 默认值  | 描述                           |
-|------------------------|--------|--------|-------------------------------|
-| dataSource.active      | string | `"h2"` | 使用的数据库,支持 `h2`, `mysql` |
-| dataSource.initEnabled | bool   | `true` | 初始化数据库,仅 `h2` 有效       |
+| 配置项                  | 类型    | 默认值  | 描述                                 |
+|------------------------|--------|--------|-------------------------------------|
+| dataSource.active      | string | `"h2"` | 使用的数据库,支持 `h2`, `mysql`, `pg` |
+| dataSource.initEnabled | bool   | `true` | 初始化数据库,仅 `h2` 有效             |
 
 #### h2
 | 配置项                  | 类型    | 默认值  | 描述   |
@@ -296,7 +346,7 @@
 | dataSource.pg.port             | int    | `5432`                    | 端口                                                                                              |
 | dataSource.pg.username         | string | `"postgres"`              | 用户名                                                                                            |
 | dataSource.pg.password         | string | `""`                      | 密码                                                                                              |
-| dataSource.pg.driverClass      | string | `"org.postgresql.Driver"` | postgresql driver class 名字                                                                      |
+| dataSource.pg.driverClass      | string | `"org.postgresql.Driver"` | PostgreSQL driver class 名字                                                                      |
 | dataSource.pg.connectorVersion | string | `"42.2.18"`               | connector 版本([maven connector 列表](https://repo1.maven.org/maven2/org/postgresql/postgresql/)) |
 
 ### application.yml 配置
diff --git a/charts/shenyu/templates/shenyu-admin-deployment.yaml b/charts/shenyu/templates/shenyu-admin-deployment.yaml
index 93c7b19..2f793c3 100644
--- a/charts/shenyu/templates/shenyu-admin-deployment.yaml
+++ b/charts/shenyu/templates/shenyu-admin-deployment.yaml
@@ -88,6 +88,10 @@
           env:
             - name: 'TZ'
               value: 'Asia/Beijing'
+            - name: ADMIN_JVM
+              value: {{ .Values.admin.javaOpts | quote }}
+          resources:
+            {{- toYaml .Values.admin.resources | nindent 12 }}
           volumeMounts:
           - name: shenyu-admin-config
             mountPath: /opt/shenyu-admin/conf/application.yml
diff --git a/charts/shenyu/templates/shenyu-bootstrap-deployment.yaml b/charts/shenyu/templates/shenyu-bootstrap-deployment.yaml
index 201da32..caad258 100644
--- a/charts/shenyu/templates/shenyu-bootstrap-deployment.yaml
+++ b/charts/shenyu/templates/shenyu-bootstrap-deployment.yaml
@@ -39,6 +39,10 @@
           env:
             - name: TZ
               value: Asia/Beijing
+            - name: BOOT_JVM
+              value: {{ .Values.bootstrap.javaOpts | quote }}
+          resources:
+            {{- toYaml .Values.bootstrap.resources | nindent 12 }}
           volumeMounts:
             - name: shenyu-bootstrap-config
               mountPath: /opt/shenyu-bootstrap/conf/application.yml
diff --git a/charts/shenyu/values.yaml b/charts/shenyu/values.yaml
index b64cd1b..d2dbcbd 100644
--- a/charts/shenyu/values.yaml
+++ b/charts/shenyu/values.yaml
@@ -9,11 +9,31 @@
   image: apache/shenyu-admin
   # if you want to change "admin service port", please edit here
   nodePort: 31095
+  # jvm options for admin
+  javaOpts: ""
+  # K8s resources quota for admin
+  resources:
+#    requests:
+#      cpu: 100m
+#      memory: 512Mi
+#    limits:
+#      cpu: 1000m
+#      memory: 1024Mi
 bootstrap:
   enabled: true
   image: apache/shenyu-bootstrap
   # if you want to change "bootstrap service port", please edit here
   nodePort: 31195
+  # jvm options for bootstrap
+  javaOpts: ""
+  # K8s resources quota for bootstrap
+  resources:
+#    requests:
+#      cpu: 100m
+#      memory: 512Mi
+#    limits:
+#      cpu: 1000m
+#      memory: 1024Mi
 
 #################################################
 #     datasource config of shenyu-admin         #
@@ -45,7 +65,6 @@
     # pg driver class name
     driverClass: org.postgresql.Driver
     connectorVersion: 42.5.0
-  # not supported yet, coming soon
   oracle:
     ip:
     port: 1521