title: Helm Deployment description: 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-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, 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 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
versionstring"2.5.0"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.