Skip to main content

Helm Deployment

This article introduces the use of helm to deploy the Apache ShenYu gateway.




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 repo update


Deployment prerequisites#

Before reading this document, you need to read Deployment prerequisites to complete the environment preparation before deploying ShenYu.


  • 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 and 31195 for 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-namespace

MySQL as database#

Modify and copy the following command and execute:

helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \      --set \      --set dataSource.mysql.ip= \      --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 \      --set \      --set \      --set \      --set

Oracle as database#

Modify the following command and copy it to execute:

helm install shenyu shenyu/shenyu -n=shenyu --create-namespace \      --set \      --set \      --set \      --set \      --set \      --set


1. you need to modify a lot of configuration information, such as modify the application.yml, how to install#

  1. 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
  1. modify the values.yaml file
  2. 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 ShenYu#

helm 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 and bootstrap.jvmOpts
  • Configure Kubernetes resource quotas via admin.resources and bootstrap.resources.


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 itemtypedefaultdescription
versionstring"2.5.1"shenyu version, it is not recommended to modify, please install the corresponding version directly

shenyu-admin configuration#

configuration itemtypedefaultdescription
admin.enabledbooltruewhether to install admin
admin.replicasint1number of replicas
admin.imagestring"apache/shenyu-admin"image name (you can modify this field to support custom images)
admin.nodePortint31095NodePort port
admin.javaOptsstringsee hereJVM parameters
admin.resourcesdictomitK8s resource quota
admin.autoscaling.enabledboolfalsewhether to install hpa
admin.autoscaling.minReplicasint1minReplicas in hpa
admin.autoscaling.maxReplicasint10maxReplicas in hpa
admin.autoscaling.targetCPUUtilizationPercentageint75targetCPUUtilizationPercentage in hpa
admin.autoscaling.targetMemoryUtilizationPercentageint75targetMemoryUtilizationPercentage in hpa
admin.ingress.enabledboolfalsewhether to install ingress
admin.ingress.hosts[0].hoststringshenyu-admin.localingress host, u can set not only one host
admin.ingress.hosts[0].paths[0].pathstring/ingress host, u can set not only one path

shenyu-bootstrap configuration#

configuration itemtypedefaultdescription
bootstrap.enabledbooltruewhether to install bootstrap
bootstrap.replicasint2number of replicas
bootstrap.imagestring"apache/shenyu-bootstrap"image name (you can modify this field to support custom images)
bootstrap.nodePortint31195NodePort Port
bootstrap.javaOptsstringsee hereJVM parameters
bootstrap.resourcesdict{}K8s resource quota
bootstrap.autoscaling.enabledboolfalsewhether to install hpa
bootstrap.autoscaling.minReplicasint1minReplicas in hpa
bootstrap.autoscaling.maxReplicasint10maxReplicas in hpa
bootstrap.autoscaling.targetCPUUtilizationPercentageint75targetCPUUtilizationPercentage in hpa
bootstrap.autoscaling.targetMemoryUtilizationPercentageint75targetMemoryUtilizationPercentage in hpa
bootstrap.ingress.enabledboolfalsewhether to install ingress
bootstrap.ingress.hosts[0].hoststringshenyu-boostrap.localingress host, u can set not only one host
bootstrap.ingress.hosts[0].paths[0].pathstring/ingress host, u can set not only one path

Database configuration#

General database configuration#

configuration itemtypedefaultdescription
dataSource.activestring"h2"Database to use, supports h2, mysql, pg
dataSource.initEnabledbooltrueInitialize the database, only h2 is available


configuration itemtypedefaultdescription
dataSource.h2.urlstring``custom url, default h2 url is "jdbc:h2:mem:~/shenyu;DB_CLOSE_DELAY=-1;MODE=MySQL;"


configuration itemTypeDefaultDescription
dataSource.mysql.urlOverridestring""Use custom datasource url and ignore other configs, the format is jdbc:mysql://xxxxxxx
dataSource.mysql.driverClassstring"com.mysql.cj.jdbc.Driver"mysql driver class name
dataSource.mysql.connectorVersionstring"8.0.23"connector version(maven connector list)


configuration itemtypedefaultdescription""IP""Use custom datasource url and ignore other configs, the format is jdbc:postgresql://xxxxxxx"postgres"username"postgres"password"org.postgresql.Driver"PostgreSQL driver class name"42.2.18"connector version (maven connector list)


configuration itemtypedefaultdescription""Use custom datasource url and ignore other configs, the format is jdbc:oracle:xxxxxx""IP"root"username""password"shenyu"Oracle service name"oracle.jdbc.OracleDriver"Oracle driver class name""connector version(maven connector list)

application.yml configuration#

applicationConfig.bootstrapstringslightlybootstrap configuration, bootstrap configuration description
applicationConfig.adminstringomitadmin configuration, admin configuration description

GitHub Repository#

Welcome to contribute to shenyu-helm-chart.

Last updated on by loongs-zhang