title: Helm Deployment description: 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 https://apache.github.io/shenyu-helm-chart
helm 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 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

Q&A

1. you need to modify a lot of configuration information, such as modify the application.yaml, 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

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 DESCRIPTION
shenyu/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
replicasint1Number of replicas
versionstring"2.5.0"shenyu version, it is not recommended to modify, please install the corresponding version directly

shenyu-admin configuration

configuration itemtypedefaultdescription
admin.nodePortint31095NodePort port
admin.javaOptsstringsee hereJVM parameters
admin.resourcesdictomitK8s resource quota

shenyu-bootstrap configuration

configuration itemtypedefaultdescription
bootstrap.nodePortint31195NodePort Port
bootstrap.javaOptsstringsee hereJVM parameters
bootstrap.resourcesdict{}K8s resource quota

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

MySQL

Configuration ItemTypeDefaultDescription
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.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)

application.yml configuration

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