Skip to main content

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 update

Install#

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 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 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 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=123456

Q&A#

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.

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

h2#

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

MySQL#

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

PostgreSQL#

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

Oracle#

configuration itemtypedefaultdescription
dataSource.oracle.urlOverridestring""Use custom datasource url and ignore other configs, the format is jdbc:oracle:xxxxxx
dataSource.oracle.ipstring""IP
dataSource.oracle.portint1521port
dataSource.oracle.usernamestring"root"username
dataSource.oracle.passwordstring""password
dataSource.oracle.serviceNamestring"shenyu"Oracle service name
dataSource.oracle.driverClassstring"oracle.jdbc.OracleDriver"Oracle driver class name
dataSource.oracle.connectorVersionstring"19.3.0.0"connector version(maven connector list)

application.yml configuration#

configuration-itemtypedefaultdescription
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 WuLang