tree: edb10d10b9b7527192de96c076ac9d840f5179cb [path history] [tgz]
  1. charts/
  2. templates/
  3. .helmignore
  4. Chart.lock
  5. Chart.yaml
  6. README.md
  7. values.yaml
charts/apisix/README.md

Apache APISIX for Kubernetes

Apache APISIX is a dynamic, real-time, high-performance API gateway.

APISIX provides rich traffic management features such as load balancing, dynamic upstream, canary release, circuit breaking, authentication, observability, and more.

You can use Apache APISIX to handle traditional north-south traffic, as well as east-west traffic between services. It can also be used as a k8s ingress controller.

This chart bootstraps all the components needed to run Apache APISIX on a Kubernetes Cluster using Helm.

Prerequisites

  • Kubernetes v1.14+
  • Helm v3+

Install

To install the chart with the release name my-apisix:

helm repo add apisix https://charts.apiseven.com
helm repo update

helm install [RELEASE_NAME] apisix/apisix --namespace ingress-apisix --create-namespace

Uninstall

To uninstall/delete a Helm release my-apisix:

helm delete [RELEASE_NAME] --namespace ingress-apisix

The command removes all the Kubernetes components associated with the chart and deletes the release.

Parameters

The following tables lists the configurable parameters of the apisix chart and their default values per section/component:

Global parameters

ParameterDescriptionDefault
global.imagePullSecretsGlobal Docker registry secret names as an array[] (does not add image pull secrets to deployed pods)

apisix parameters

ParameterDescriptionDefault
apisix.enabledEnable or disable Apache APISIX itselftrue
apisix.enableIPv6Enable nginx IPv6 resolvertrue
apisix.enableCustomizedConfigEnable full customized config.yamlfalse
apisix.customizedConfigIf apisix.enableCustomizedConfig is true, full customized config.yaml. Please note that other settings about APISIX config will be ignored{}
apisix.image.repositoryApache APISIX image repositoryapache/apisix
apisix.image.tagApache APISIX image tag{TAG_NAME} (the latest Apache APISIX image tag)
apisix.image.pullPolicyApache APISIX image pull policyIfNotPresent
apisix.kindApache APISIX kind use a DaemonSet or DeploymentDeployment
apisix.replicaCountApache APISIX deploy replica count,kind is DaemonSet,replicaCount not become effective1
apisix.podAnnotationsAnnotations to add to each pod{}
apisix.podSecurityContextSet the securityContext for Apache APISIX pods{}
apisix.securityContextSet the securityContext for Apache APISIX container{}
apisix.podDisruptionBudget.enabledEnable or disable podDisruptionBudgetfalse
apisix.podDisruptionBudget.minAvailableSet the minAvailable of podDisruptionBudget. You can specify only one of maxUnavailable and minAvailable in a single PodDisruptionBudget. See Specifying a Disruption Budget for your Application for more detailsNot set
apisix.podDisruptionBudget.maxUnavailableSet the maxUnavailable of podDisruptionBudget1
apisix.resourcesSet pod resource requests & limits{}
apisix.nodeSelectorNode labels for Apache APISIX pod assignment{}
apisix.tolerationsList of node taints to tolerate{}
apisix.affinitySet affinity for Apache APISIX deploy{}
apisix.podAntiAffinity.enabledEnable or disable podAntiAffinityfalse
apisix.setIDFromPodUIDWhether to use the Pod UID as the APISIX instance id, see apache/apisix#5417 to decide whether you should enable this setting)false
apisix.customLuaSharedDictsAdd custom lua_shared_dict settings, click here to learn the format of a shared dict[]
apisix.pluginAttrsSet APISIX plugin attributes, see config-default.yaml for more details{}
apisix.luaModuleHook.enabledWhether to add a custom lua modulefalse
apisix.luaModuleHook.luaPathConfigure LUA_PATH so that your own lua module codes can be located""
apisix.luaModuleHook.hookPointThe entrypoint of your lua module, use Lua require syntax, like "module.say_hello"""
apisix.luaModuleHook.configMapRef.nameName of the ConfigMap where the lua module codes store""
apisix.luaModuleHook.configMapRef.mounts[].keyName of the ConfigMap key, for setting the mapping relationship between ConfigMap key and the lua module code path.""
apisix.luaModuleHook.configMapRef.mounts[].pathFilepath of the plugin code, for setting the mapping relationship between ConfigMap key and the lua module code path.""
extraVolumesAdditional volume, See Kubernetes Volumes for the detail.[]
extraVolumeMountsAdditional volumeMounts, See Kubernetes Volumes for the detail.[]

gateway parameters

Apache APISIX service parameters, this determines how users can access itself.

ParameterDescriptionDefault
gateway.typeApache APISIX service type for user access itselfNodePort
gateway.externalTrafficPolicySetting how the Service route external trafficCluster
gateway.httpApache APISIX service settings for http
gateway.tlsApache APISIX service settings for tls
gateway.tls.existingCASecretSpecifies the name of Secret contains trusted CA certificates in the PEM format used to verify the certificate when APISIX needs to do SSL/TLS handshaking with external services (e.g. etcd)""
gateway.tls.certCAFilenamefilename be used in the gateway.tls.existingCASecret""
gateway.streamApache APISIX service settings for stream
gateway.ingressUsing ingress access Apache APISIX service

admin parameters

ParameterDescriptionDefault
admin.enabledEnable or disable Apache APISIX admin APItrue
admin.portwhich port to use for Apache APISIX admin API9180
admin.servicePortService port to use for Apache APISIX admin API9180
admin.typeApache APISIX admin API service typeClusterIP
admin.externalIPsIPs for which nodes in the cluster will also accept traffic for the servic[]
admin.corsApache APISIX admin API support CORS response headerstrue
admin.credentials.adminApache APISIX admin API admin role credentialsedd1c9f034335f136f87ad84b625c8f1
admin.credentials.viewerApache APISIX admin API viewer role credentials4054f7cf07e344346cd3f287985e76a2
admin.allow.ipListthe IP range allowed to Apache APISIX admin APItrue

custom configuration snippet parameters

ParameterDescriptionDefault
configurationSnippet.mainAdd custom Nginx configuration (main block) to nginx.conf{}
configurationSnippet.httpStartAdd custom Nginx configuration (http block) to nginx.conf{}
configurationSnippet.httpEndAdd custom Nginx configuration (http block) to nginx.conf, will be put at the bottom of http block{}
configurationSnippet.httpSrvAdd custom Nginx configuration (server block) to nginx.conf{}
configurationSnippet.httpAdminAdd custom Nginx configuration (Admin API server block) to nginx.conf{}
configurationSnippet.streamAdd custom Nginx configuration (stream block) to nginx.conf{}

etcd parameters

ParameterDescriptionDefault
etcd.enableduse built-in etcdtrue
etcd.hostif etcd.enabled is false, use external etcd, support multiple address, if your etcd cluster enables TLS, please use https scheme, e.g. https://127.0.0.1:2379.["http://etcd.host:2379"]
etcd.prefixapisix configurations prefix/apisix
etcd.timeoutSet the timeout value in seconds for subsequent socket operations from apisix to etcd cluster30
etcd.auth.rbac.createSwitch to enable RBAC authenticationfalse
etcd.auth.rbac.userroot username for etcd""
etcd.auth.rbac.passwordroot password for etcd""
etcd.auth.tls.enabledenable etcd client certificatefalse
etcd.auth.tls.existingSecretname of the secret contains etcd client cert""
etcd.auth.tls.certFilenameetcd client cert filename using in etcd.auth.tls.existingSecret""
etcd.auth.tls.certKeyFilenameetcd client cert key filename using in etcd.auth.tls.existingSecret""
etcd.auth.tls.verifywhether to verify the etcd endpoint certificate when setup a TLS connection to etcdtrue
etcd.auth.tls.snispecify the TLS Server Name Indication extension, the ETCD endpoint hostname will be used when this setting is unset.""

If etcd.enabled is true, set more values of bitnami/etcd helm chart use etcd as prefix.

plugins and stream_plugins parameters

Default enabled plugins. See configmap template for details.

external plugin parameters

ParameterDescriptionDefault
extPlugin.enabledEnable External Plugins. See external pluginfalse
extPlugin.cmdthe command and its arguements to run as a subprocess{}

custom plugin parameters

ParameterDescriptionDefault
apisix.customPlugins.enabledWhether to configure some custom pluginsfalse
apisix.customPlugins.luaPathConfigure LUA_PATH so that custom plugin codes can be located""
apisix.customPlugins.plugins[].nameCustom plugin name""
apisix.customPlugins.plugins[].attrsCustom plugin attributes{}
apisix.customPlugins.plugins[].configMap.nameName of the ConfigMap where the plugin codes store""
apisix.customPlugins.plugins[].configMap.mounts[].keyName of the ConfigMap key, for setting the mapping relationship between ConfigMap key and the plugin code path.""
apisix.customPlugins.plugins[].configMap.mounts[].pathFilepath of the plugin code, for setting the mapping relationship between ConfigMap key and the plugin code path.""

discovery parameters

ParameterDescriptionDefault
discovery.enabledEnable or disable Apache APISIX integration service discoveryfalse
discovery.registryRegistry is the same to the one in APISIX config-default.yaml, and refer to such file for more setting details. also refer to this documentation for integration service discoverynil

If you have enabled this feature, here is an example:

discovery:
  enabled: true
  registry:
    eureka:
      host:
        - "http://${username}:${password}@${eureka_host1}:${eureka_port1}"
        - "http://${username}:${password}@${eureka_host2}:${eureka_port2}"
      prefix: "/eureka/"
      fetch_interval: 30
      weight: 100
      timeout:
        connect: 2000
        send: 2000
        read: 5000

logs parameters

ParameterDescriptionDefault
logs.enableAccessLogEnable access log or not, default truetrue
logs.accessLogAccess log path/dev/stdout
logs.accessLogFormatAccess log format$remote_addr - $remote_user [$time_local] $http_host \"$request\" $status $body_bytes_sent $request_time \"$http_referer\" \"$http_user_agent\" $upstream_addr $upstream_status $upstream_response_time \"$upstream_scheme://$upstream_host$upstream_uri\"
logs.accessLogFormatEscapeAllows setting json or default characters escaping in variablesdefault
logs.errorLogError log path/dev/stderr
logs.errorLogLevelError log levelwarn

dashboard parameters

Configurations for apisix-dashboard sub chart.

ingress-controller parameters

Configurations for Apache APISIX ingress-controller sub chart.

serviceMonitor parameters

ParameterDescriptionDefault
serviceMonitor.enabledEnable or disable Apache APISIX serviceMonitorfalse
serviceMonitor.namespaceNamespace where the serviceMonitor is deployed""
serviceMonitor.intervalInterval at which metrics should be scraped15s
serviceMonitor.pathPath of the Prometheus metrics endpoint/apisix/prometheus/metrics
serviceMonitor.containerPortContainer port which Prometheus metrics are exposed9091
serviceMonitor.labelsServiceMonitor extra labels{}
serviceMonitor.annotationsServiceMonitor annotations{}