Helm Deployment
This article introduces the use of helm to deploy the Apache ShenYu gateway.
Prerequisites#
Tools#
Database#
Before you read this document, you need to complete some preparations before deploying Shenyu according to the Deployment Prerequisites document.
Add Helm repository#
helm repo add shenyu https://apache.github.io/shenyu-helm-charthelm repo updateInstall#
Deployment prerequisites#
Before reading this document, you need to read Deployment prerequisites to complete the environment preparation before deploying ShenYu.
Instructions#
- Install the application: By default, both admin and bootstrap are installed.
- Service Exposure: Use NodePort to expose the service, the default port is
31095for admin and31195for bootstrap. - Database: Currently supports h2, MySQL, PostgreSQL, Oracle as database. Default is h2.
h2 as database#
Running the following command will install admin and bootstrap under shenyu namespace and create namespace.
helm install shenyu shenyu/shenyu -n=shenyu --create-namespaceMySQL as database#
Modify and copy the following command and execute:
helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \ --set dataSource.active=mysql \ --set dataSource.mysql.ip=127.0.0.1 \ --set dataSource.mysql.port=3306 \ --set dataSource.mysql.username=root \ --set dataSource.mysql.password=123456 PostgreSQL as database(Version of ShenYu > 2.5.0)#
Modify the following command and copy it to execute:
helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \ --set dataSource.active=pg \ --set dataSource.pg.ip=127.0.0.1 \ --set dataSource.pg.port=5432 \ --set dataSource.pg.username=postgres \ --set dataSource.pg.password=123456Oracle as database#
Modify the following command and copy it to execute:
helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \ --set dataSource.active=oracle \ --set dataSource.oracle.ip=127.0.0.1 \ --set dataSource.oracle.port=1521 \ --set dataSource.oracle.serviceName=shenyu \ --set dataSource.oracle.username=root \ --set dataSource.oracle.password=123456Q&A#
1. you need to modify a lot of configuration information, such as modify the application.yml, how to install#
- download the complete values.yaml
- Latest chart version:
helm show values shenyu/shenyu > values.yaml - Specific chart version, e.g.
0.2.0:helm show values shenyu/shenyu --version=0.2.0 > values.yaml
- modify the values.yaml file
- Change the corresponding configuration and execute the
helm installcommand with the format-f values.yaml. For example:helm install shenyu shenyu/shenyu -n=shenyu --create-namespace -f values.yaml
P.S. bootstrap configuration description admin configuration description
2. How to install only admin or bootstrap#
- Install only admin: add
-set bootstrap.enabled=falseto the end of the helm install command - Install only bootstrap: add
--set admin.enabled=falseto the end of the helm install command
3. How to install old version ShenYu#
helm search repo shenyu -lYou will get output similar to
NAME CHART VERSION APP VERSION DESCRIPTIONshenyu/shenyu 0.2.0 2.5.0 Helm Chart for deploying Apache ShenYu in Kubernetes......where APP_VERSION is the version of ShenYu and CHART_VERSION is the version of Helm Chart.
Select the corresponding Chart version according to the version of ShenYu you want to install, and add the -version=CHART_VERSION parameter at the end of the command. For example
helm install shenyu shenyu/shenyu -n=shenyu --version=0.2.0 --create-namespaceHow to configure JVM options and modify Kubernetes resource quotas(Version of ShenYu > 2.5.0)#
- Configure JVM parameters via
admin.jvmOptsandbootstrap.jvmOpts - Configure Kubernetes resource quotas via
admin.resourcesandbootstrap.resources.
e.g.
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 |
|---|---|---|---|
| version | string | "2.5.1" | shenyu version, it is not recommended to modify, please install the corresponding version directly |
shenyu-admin configuration#
| configuration item | type | default | description |
|---|---|---|---|
| admin.enabled | bool | true | whether to install admin |
| admin.replicas | int | 1 | number of replicas |
| admin.image | string | "apache/shenyu-admin" | image name (you can modify this field to support custom images) |
| admin.nodePort | int | 31095 | NodePort port |
| admin.javaOpts | string | see here | JVM parameters |
| admin.resources | dict | omit | K8s resource quota |
| admin.autoscaling.enabled | bool | false | whether to install hpa |
| admin.autoscaling.minReplicas | int | 1 | minReplicas in hpa |
| admin.autoscaling.maxReplicas | int | 10 | maxReplicas in hpa |
| admin.autoscaling.targetCPUUtilizationPercentage | int | 75 | targetCPUUtilizationPercentage in hpa |
| admin.autoscaling.targetMemoryUtilizationPercentage | int | 75 | targetMemoryUtilizationPercentage in hpa |
| admin.ingress.enabled | bool | false | whether to install ingress |
| admin.ingress.hosts[0].host | string | shenyu-admin.local | ingress host, u can set not only one host |
| admin.ingress.hosts[0].paths[0].path | string | / | ingress host, u can set not only one path |
shenyu-bootstrap configuration#
| configuration item | type | default | description |
|---|---|---|---|
| bootstrap.enabled | bool | true | whether to install bootstrap |
| bootstrap.replicas | int | 2 | number of replicas |
| bootstrap.image | string | "apache/shenyu-bootstrap" | image name (you can modify this field to support custom images) |
| bootstrap.nodePort | int | 31195 | NodePort Port |
| bootstrap.javaOpts | string | see here | JVM parameters |
| bootstrap.resources | dict | {} | K8s resource quota |
| bootstrap.autoscaling.enabled | bool | false | whether to install hpa |
| bootstrap.autoscaling.minReplicas | int | 1 | minReplicas in hpa |
| bootstrap.autoscaling.maxReplicas | int | 10 | maxReplicas in hpa |
| bootstrap.autoscaling.targetCPUUtilizationPercentage | int | 75 | targetCPUUtilizationPercentage in hpa |
| bootstrap.autoscaling.targetMemoryUtilizationPercentage | int | 75 | targetMemoryUtilizationPercentage in hpa |
| bootstrap.ingress.enabled | bool | false | whether to install ingress |
| bootstrap.ingress.hosts[0].host | string | shenyu-boostrap.local | ingress host, u can set not only one host |
| bootstrap.ingress.hosts[0].paths[0].path | string | / | ingress host, u can set not only one path |
Database configuration#
General database configuration#
| configuration item | type | default | description |
|---|---|---|---|
| dataSource.active | string | "h2" | Database to use, supports h2, mysql, pg |
| dataSource.initEnabled | bool | true | Initialize the database, only h2 is available |
h2#
| configuration item | type | default | description |
|---|---|---|---|
| dataSource.h2.username | string | "sa" | username |
| dataSource.h2.password | string | "sa" | password |
| dataSource.h2.url | string | `` | custom url, default h2 url is "jdbc:h2:mem:~/shenyu;DB_CLOSE_DELAY=-1;MODE=MySQL;" |
MySQL#
| configuration item | Type | Default | Description |
|---|---|---|---|
| dataSource.mysql.urlOverride | string | "" | Use custom datasource url and ignore other configs, the format is jdbc:mysql://xxxxxxx |
| dataSource.mysql.ip | string | "" | IP |
| dataSource.mysql.port | int | 3306 | port |
| dataSource.mysql.username | string | "root" | Username |
| dataSource.mysql.password | string | "" | Password |
| dataSource.mysql.driverClass | string | "com.mysql.cj.jdbc.Driver" | mysql driver class name |
| dataSource.mysql.connectorVersion | string | "8.0.23" | connector version(maven connector list) |
PostgreSQL#
| configuration item | type | default | description |
|---|---|---|---|
| dataSource.pg.ip | string | "" | IP |
| dataSource.pg.urlOverride | string | "" | Use custom datasource url and ignore other configs, the format is jdbc:postgresql://xxxxxxx |
| 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) |
Oracle#
| configuration item | type | default | description |
|---|---|---|---|
| dataSource.oracle.urlOverride | string | "" | Use custom datasource url and ignore other configs, the format is jdbc:oracle:xxxxxx |
| dataSource.oracle.ip | string | "" | IP |
| dataSource.oracle.port | int | 1521 | port |
| dataSource.oracle.username | string | "root" | username |
| dataSource.oracle.password | string | "" | password |
| dataSource.oracle.serviceName | string | "shenyu" | Oracle service name |
| dataSource.oracle.driverClass | string | "oracle.jdbc.OracleDriver" | Oracle driver class name |
| dataSource.oracle.connectorVersion | string | "19.3.0.0" | connector version(maven connector list) |
application.yml configuration#
| configuration-item | type | default | description |
|---|---|---|---|
| applicationConfig.bootstrap | string | slightly | bootstrap configuration, bootstrap configuration description |
| applicationConfig.admin | string | omit | admin configuration, admin configuration description |
GitHub Repository#
Welcome to contribute to shenyu-helm-chart.