Helm Deployment
This article introduces the use of helm
to deploy the Apache ShenYu
gateway.
#
Prerequisites#
Tools#
DatabaseBefore you read this document, you need to complete some preparations before deploying Shenyu according to the Deployment Prerequisites document.
#
Add Helm repositoryhelm repo add shenyu https://apache.github.io/shenyu-helm-charthelm repo update
#
Install#
Deployment prerequisitesBefore 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
31095
for admin and31195
for bootstrap. - Database: Currently supports h2, MySQL, PostgreSQL, Oracle as database. Default is h2.
#
h2 as databaseRunning the following command will install admin and bootstrap under shenyu namespace and create namespace.
helm install shenyu shenyu/shenyu -n=shenyu --create-namespace
#
MySQL as databaseModify 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=123456
#
Oracle as databaseModify 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=123456
#
Q&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 install
command 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=false
to the end of the helm install command - Install only bootstrap: add
--set admin.enabled=false
to the end of the helm install command
#
3. How to install old version ShenYuhelm search repo shenyu -l
You 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-namespace
#
How to configure JVM options and modify Kubernetes resource quotas(Version of ShenYu > 2.5.0)- Configure JVM parameters via
admin.jvmOpts
andbootstrap.jvmOpts
- Configure Kubernetes resource quotas via
admin.resources
andbootstrap.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 Configurationconfiguration 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 configurationconfiguration 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 configurationconfiguration 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 configurationconfiguration 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 |
#
h2configuration 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;" |
#
MySQLconfiguration 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) |
#
PostgreSQLconfiguration 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) |
#
Oracleconfiguration 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 configurationconfiguration-item | type | default | description |
---|---|---|---|
applicationConfig.bootstrap | string | slightly | bootstrap configuration, bootstrap configuration description |
applicationConfig.admin | string | omit | admin configuration, admin configuration description |
#
GitHub RepositoryWelcome to contribute to shenyu-helm-chart.