This is an automated email from the ASF dual-hosted git repository.
zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-helm-chart.git
The following commit(s) were added to refs/heads/master by this push:
new dd7d752 chore: use helm docs to generate documentation (#415)
dd7d752 is described below
commit dd7d752f3c5ddf127b9aa2d6268167b541449d14
Author: Abhishek Choudhary <[email protected]>
AuthorDate: Tue Dec 20 07:52:05 2022 +0530
chore: use helm docs to generate documentation (#415)
Co-authored-by: Jintao Zhang <[email protected]>
---
.github/workflows/ci.yaml | 16 +
Makefile | 7 +
charts/apisix-dashboard/README.md | 113 +++---
charts/apisix-dashboard/README.md.gotmpl | 52 +++
charts/apisix-dashboard/values.yaml | 53 ++-
charts/apisix-ingress-controller/README.md | 57 +++
.../{README.md => README.md.gotmpl} | 2 +
charts/apisix-ingress-controller/values.yaml | 66 ++--
charts/apisix/README.md | 400 ++++++++-------------
charts/apisix/README.md.gotmpl | 39 ++
charts/apisix/values.yaml | 163 ++++++---
11 files changed, 561 insertions(+), 407 deletions(-)
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index ad80524..9b7b46f 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -68,3 +68,19 @@ jobs:
&& helm repo add apisix https://charts.apiseven.com \
&& ct install \
--charts charts/apisix'
+
+ - name: Setup Go
+ uses: actions/setup-go@v3
+ with:
+ go-version: '1.19.2'
+
+ - name: Run helm-docs
+ run: |
+ GOBIN=$PWD GO111MODULE=on go install
github.com/norwoodj/helm-docs/cmd/[email protected]
+ ./helm-docs --chart-search-root=${GITHUB_WORKSPACE}/charts
+ DIFF=$(git diff ${GITHUB_WORKSPACE}/charts/**/*md)
+ if [ ! -z "$DIFF" ]; then
+ echo "Please use helm-docs in your clone, of your fork, of the
project, and commit a updated README.md for the chart."
+ fi
+ git diff --exit-code
+ rm -f ./helm-docs
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..15a3f2b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+.PHONY: helm-docs
+helm-docs:
+ifeq (, $(shell which helm-docs))
+ $(info "helm-docs not found, installing")
+ $(shell go install github.com/norwoodj/helm-docs/cmd/helm-docs@latest)
+endif
+ helm-docs
\ No newline at end of file
diff --git a/charts/apisix-dashboard/README.md
b/charts/apisix-dashboard/README.md
index 9a55d85..2ed93ca 100644
--- a/charts/apisix-dashboard/README.md
+++ b/charts/apisix-dashboard/README.md
@@ -49,71 +49,48 @@ _See [helm
upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documen
## Parameters
-The following tables lists the configurable parameters of the apisix-dashboard
chart and their default values per section/component:
-
-### Common parameters
-
-| Name | Description
| Value |
-| ------------------ |
-------------------------------------------------------------------------------------------------
| ------------------------ |
-| `nameOverride` | String to partially override apisix-dashboard.fullname
template (will maintain the release name) | `nil` |
-| `fullnameOverride` | String to fully override apisix-dashboard.fullname
template | `nil` |
-| `imagePullSecrets` | Docker registry secret names as an array
| `[]` |
-| `image.repository` | Apache APISIX Dashboard image repository
| `apache/apisix-dashboard`|
-| `image.tag` | Apache APISIX Dashboard image tag (immutable tags are
recommended) | `2.10.1-alpine` |
-| `image.pullPolicy` | Apache APISIX Dashboard image pull policy
| `IfNotPresent` |
-
-### Apache APISIX Dashboard configurable parameters
-
-| Name | Description
| Value |
-| ------------------------------------ |
-----------------------------------------------------------------------------------------
| --------------- |
-| `config.conf.listen.host` | The address on which the
`Manager API` should listen. The default value is 0.0.0.0, if want to specify,
please enable it. This value accepts IPv4, IPv6, and hostname.
| `0.0.0.0` |
-| `config.conf.listen.port` | The port on which the
`Manager API` should listen.
| `9000` |
-| `config.authentication.secert` | Secret for jwt token
generation | `secert` |
-| `config.authentication.expireTime` | JWT token expire time,
in second | `3600` |
-| `config.authentication.users` | Specifies username and
password for login `manager api`. | `[{username: admin, password: admin}]` |
-| `config.conf.etcd.endpoints` | Supports defining
multiple etcd host addresses for an etcd cluster
| `apisix-etcd:2379` |
-| `config.conf.etcd.prefix` | Apache APISIX config's
prefix in etcd, /apisix by default
| `/apisix` |
-| `config.conf.etcd.username` | Specifies etcd basic
auth username if enable etcd auth
| `~` |
-| `config.conf.etcd.password` | Specifies etcd basic
auth password if enable etcd auth
| `~` |
-| `config.conf.log.accessLog.filePath` | Access log path |
`/dev/stdout` |
-| `config.conf.log.errorLog.filePath` | Error log path |
`/dev/stderr` |
-| `config.conf.log.errorLog.level` | Error log level.
Supports levels, lower to higher: debug, info, warn, error, panic, fatal |
`warn` |
-
-### Deployment parameters
-
-| Name | Description
| Value
|
-| ----------------------------------------------- |
-----------------------------------------------------------------------------------------
| --------------- |
-| `replicaCount` | Number of Apache APISIX
Dashboard nodes | `1`
|
-| `priorityClassName` | Set the
[priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)
for pods | `""` |
-| `podAnnotations` | Apache APISIX Dashboard
Pod annotations | `{}`
|
-| `nodeSelector` | Node labels for pod
assignment | `{}`
|
-| `tolerations` | Tolerations for pod
assignment | `[]`
|
-| `resources.limits` | The resources limits for
Apache APISIX Dashboard containers | `{}`
|
-| `resources.requests` | The requested resources
for Apache APISIX Dashboardcontainers | `{}`
|
-| `podSecurityContext` | Set the securityContext
for Apache APISIX Dashboard pods | `{}`
|
-| `securityContext` | Set the securityContext
for Apache APISIX Dashboard container | `{}`
|
-| `autoscaling.enabled` | Enable autoscaling for
Apache APISIX Dashboard deployment | `false`
|
-| `autoscaling.minReplicas` | Minimum number of replicas
to scale back | `1`
|
-| `autoscaling.maxReplicas` | Maximum number of replicas
to scale out | `100`
|
-| `autoscaling.targetCPUUtilizationPercentage` | Target CPU utilization
percentage | `80`
|
-| `autoscaling.targetMemoryUtilizationPercentage` | Target Memory utilization
percentage | `nil`
|
-
-### Traffic Exposure parameters
-
-| Name | Description
| Value |
-| -------------------------------
|--------------------------------------------------------------------------------------------------|-------------|
-| `service.type` | Service type
| `ClusterIP` |
-| `service.port` | Service HTTP port
| `80` |
-| `ingress.enabled` | Set to true to enable ingress record
generation | `false` |
-| `ingress.annotations` | Ingress annotations
| `{}` |
-| `ingress.hosts` | The list of hostnames to be covered with
this ingress record. | `[]` |
-| `ingress.tls` | Create TLS Secret
| `false` |
-| `ingress.className` | `ingressClassName` replace `annotations
kubernetes.io/ingress.class`, required kubernetes 1.18>= | `apisix` |
-
-### RBAC parameters
-
-| Name | Description
| Value
|
-| ---------------------------- |
---------------------------------------------------------------------------------------------------------------------
| ------ |
-| `serviceAccount.create` | Specifies whether a ServiceAccount should be
created |
`true` |
-| `serviceAccount.name` | The name of the ServiceAccount to use. If not
set and create is true, a name is generated using the fullname template | `nil`
|
-| `serviceAccount.annotations` | Annotations to add to the ServiceAccount
Metadata |
`{}` |
+## Values
+
+| Key | Type | Default | Description |
+|-----|------|---------|-------------|
+| affinity | object | `{}` | |
+| autoscaling.enabled | bool | `false` | Enable autoscaling for Apache APISIX
Dashboard deployment |
+| autoscaling.maxReplicas | int | `100` | Maximum number of replicas to scale
out |
+| autoscaling.minReplicas | int | `1` | Minimum number of replicas to scale
back |
+| autoscaling.targetCPUUtilizationPercentage | int | `80` | Target CPU
utilization percentage |
+| config.authentication.expireTime | int | `3600` | JWT token expire time, in
second |
+| config.authentication.secret | string | `"secret"` | Secret for jwt token
generation |
+| config.authentication.users | list |
`[{"password":"admin","username":"admin"}]` | Specifies username and password
for login manager api. |
+| config.conf.etcd.endpoints | list | `["apisix-etcd:2379"]` | Supports
defining multiple etcd host addresses for an etcd cluster |
+| config.conf.etcd.password | string | `nil` | Specifies etcd basic auth
password if enable etcd auth |
+| config.conf.etcd.prefix | string | `"/apisix"` | apisix configurations
prefix |
+| config.conf.etcd.username | string | `nil` | Specifies etcd basic auth
username if enable etcd auth |
+| config.conf.listen.host | string | `"0.0.0.0"` | The address on which the
Manager API should listen. The default value is 0.0.0.0, if want to specify,
please enable it. This value accepts IPv4, IPv6, and hostname. |
+| config.conf.listen.port | int | `9000` | The port on which the Manager API
should listen. |
+| config.conf.log.accessLog.filePath | string | `"/dev/stdout"` | Error log
path |
+| config.conf.log.errorLog | object |
`{"filePath":"/dev/stderr","level":"warn"}` | Error log level. Supports levels,
lower to higher: debug, info, warn, error, panic, fatal |
+| config.conf.log.errorLog.filePath | string | `"/dev/stderr"` | Access log
path |
+| fullnameOverride | string | `""` | String to fully override
apisix-dashboard.fullname template |
+| image.pullPolicy | string | `"IfNotPresent"` | Apache APISIX Dashboard image
pull policy |
+| image.repository | string | `"apache/apisix-dashboard"` | Apache APISIX
Dashboard image repository |
+| image.tag | string | `"2.13-alpine"` | Overrides the image tag whose default
is the chart appVersion. Apache APISIX Dashboard image tag (immutable tags are
recommended) |
+| imagePullSecrets | list | `[]` | Docker registry secret names as an array |
+| ingress.annotations | object | `{}` | Ingress annotations |
+| ingress.className | string | `""` | Kubernetes 1.18+ support
ingressClassName attribute |
+| ingress.enabled | bool | `false` | Set to true to enable ingress record
generation |
+| ingress.hosts | list | `[{"host":"apisix-dashboard.local","paths":[]}]` |
The list of hostnams to be covered with this ingress record |
+| ingress.tls | list | `[]` | Create TLS Secret |
+| nameOverride | string | `""` | String to partially override
apisix-dashboard.fullname template (will maintain the release name) |
+| nodeSelector | object | `{}` | Node labels for pod assignment |
+| podAnnotations | object | `{}` | Apache APISIX Dashboard Pod annotations |
+| podSecurityContext | object | `{}` | Set the securityContext for Apache
APISIX Dashboard pods |
+| priorityClassName | string | `""` | Set the
[priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)
for pods |
+| replicaCount | int | `1` | Number of Apache APISIX Dashboard nodes |
+| resources | object | `{}` | |
+| securityContext | object | `{}` | Set the securityContext for Apache APISIX
Dashboard container |
+| service.port | int | `80` | Service HTTP port |
+| service.type | string | `"ClusterIP"` | Service type |
+| serviceAccount.annotations | object | `{}` | Annotations to add to the
service account |
+| serviceAccount.create | bool | `true` | Specifies whether a service account
should be created |
+| serviceAccount.name | string | `""` | The name of the service account to
use. If not set and create is true, a name is generated using the fullname
template |
+| tolerations | list | `[]` | Tolerations for pod assignment |
diff --git a/charts/apisix-dashboard/README.md.gotmpl
b/charts/apisix-dashboard/README.md.gotmpl
new file mode 100644
index 0000000..42f5fcf
--- /dev/null
+++ b/charts/apisix-dashboard/README.md.gotmpl
@@ -0,0 +1,52 @@
+# Apache APISIX Dashboard
+
+[APISIX Dashboard](https://github.com/apache/apisix-dashboard/) is designed to
make it as easy as possible for users to operate Apache APISIX through a
frontend interface.
+
+This chart bootstraps an apisix-dashboard deployment on a
[Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh)
package manager.
+
+## Prerequisites
+
+APISIX Dashboard requires Kubernetes version 1.14+.
+
+## Get Repo Info
+
+```console
+helm repo add apisix https://charts.apiseven.com
+helm repo update
+```
+
+## Install Chart
+
+**Important:** only helm3 is supported
+
+```console
+helm install [RELEASE_NAME] apisix/apisix-dashboard --namespace ingress-apisix
--create-namespace
+```
+
+The command deploys apisix-dashboard on the Kubernetes cluster in the default
configuration.
+
+_See [configuration](#configuration) below._
+
+_See [helm install](https://helm.sh/docs/helm/helm_install/) for command
documentation._
+
+## Uninstall Chart
+
+```console
+helm uninstall [RELEASE_NAME] --namespace ingress-apisix
+```
+
+This removes all the Kubernetes components associated with the chart and
deletes the release.
+
+_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command
documentation._
+
+## Upgrading Chart
+
+```console
+helm upgrade [RELEASE_NAME] [CHART] --install
+```
+
+_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command
documentation._
+
+## Parameters
+
+{{ template "chart.valuesSection" . }}
diff --git a/charts/apisix-dashboard/values.yaml
b/charts/apisix-dashboard/values.yaml
index fac21fa..e9772e4 100644
--- a/charts/apisix-dashboard/values.yaml
+++ b/charts/apisix-dashboard/values.yaml
@@ -18,34 +18,45 @@
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
+# -- Number of Apache APISIX Dashboard nodes
replicaCount: 1
image:
+ # -- Apache APISIX Dashboard image repository
repository: apache/apisix-dashboard
+ # -- Apache APISIX Dashboard image pull policy
pullPolicy: IfNotPresent
- # Overrides the image tag whose default is the chart appVersion.
+ # -- Overrides the image tag whose default is the chart appVersion.
+ # Apache APISIX Dashboard image tag (immutable tags are recommended)
tag: 2.13-alpine
+# -- Docker registry secret names as an array
imagePullSecrets: []
+# -- String to partially override apisix-dashboard.fullname template (will
maintain the release name)
nameOverride: ""
+# -- String to fully override apisix-dashboard.fullname template
fullnameOverride: ""
serviceAccount:
- # Specifies whether a service account should be created
+ # -- Specifies whether a service account should be created
create: true
- # Annotations to add to the service account
+ # -- Annotations to add to the service account
annotations: {}
- # The name of the service account to use.
+ # -- The name of the service account to use.
# If not set and create is true, a name is generated using the fullname
template
name: ""
+# -- Apache APISIX Dashboard Pod annotations
podAnnotations: {}
+# -- Set the
[priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)
for pods
priorityClassName: ""
+# -- Set the securityContext for Apache APISIX Dashboard pods
podSecurityContext: {}
# fsGroup: 2000
+# -- Set the securityContext for Apache APISIX Dashboard container
securityContext: {}
# capabilities:
# drop:
@@ -57,39 +68,55 @@ securityContext: {}
config:
conf:
listen:
+ # -- The address on which the Manager API should listen.
+ # The default value is 0.0.0.0, if want to specify, please enable it.
+ # This value accepts IPv4, IPv6, and hostname.
host: 0.0.0.0
+ # -- The port on which the Manager API should listen.
port: 9000
etcd:
- # Supports defining multiple etcd host addresses for an etcd cluster
+ # -- Supports defining multiple etcd host addresses for an etcd cluster
endpoints:
- apisix-etcd:2379
- # apisix configurations prefix
+ # -- apisix configurations prefix
prefix: "/apisix"
- # Etcd basic auth info
+ # -- Specifies etcd basic auth username if enable etcd auth
username: ~
+ # -- Specifies etcd basic auth password if enable etcd auth
password: ~
log:
+ # -- Error log level.
+ # Supports levels, lower to higher: debug, info, warn, error, panic,
fatal
errorLog:
level: warn
+ # -- Access log path
filePath: /dev/stderr
accessLog:
+ # -- Error log path
filePath: /dev/stdout
authentication:
+ # -- Secret for jwt token generation
secret: secret
+ # -- JWT token expire time, in second
expireTime: 3600
+ # -- Specifies username and password for login manager api.
users:
- username: admin
password: admin
service:
+ # -- Service type
type: ClusterIP
+ # -- Service HTTP port
port: 80
ingress:
+ # -- Set to true to enable ingress record generation
enabled: false
- # Kubernetes 1.18+ support ingressClassName attribute
+ # -- Kubernetes 1.18+ support ingressClassName attribute
className: ""
+ # -- Ingress annotations
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
@@ -98,16 +125,18 @@ ingress:
# - host: apisix-dashboard.local
# paths:
# - /*
+ # -- The list of hostnams to be covered with this ingress record
hosts:
- host: apisix-dashboard.local
paths: []
+ # -- Create TLS Secret
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
- # We usually recommend not to specify default resources and to leave this as
a conscious
+ # -- We usually recommend not to specify default resources and to leave this
as a conscious
# choice for the user. This also increases chances charts run on
environments with little
# resources, such as Minikube. If you do want to specify resources,
uncomment the following
# lines, adjust them as necessary, and remove the curly braces after
'resources:'.
@@ -119,14 +148,20 @@ resources: {}
# memory: 128Mi
autoscaling:
+ # -- Enable autoscaling for Apache APISIX Dashboard deployment
enabled: false
+ # -- Minimum number of replicas to scale back
minReplicas: 1
+ # -- Maximum number of replicas to scale out
maxReplicas: 100
+ # -- Target CPU utilization percentage
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
+# -- Node labels for pod assignment
nodeSelector: {}
+# -- Tolerations for pod assignment
tolerations: []
affinity: {}
diff --git a/charts/apisix-ingress-controller/README.md
b/charts/apisix-ingress-controller/README.md
index b832292..0222224 100644
--- a/charts/apisix-ingress-controller/README.md
+++ b/charts/apisix-ingress-controller/README.md
@@ -100,3 +100,60 @@ The same for container level, you need to set:
--set SecurityContext.runAsGroup=«VALUE»
...
```
+
+## Values
+
+| Key | Type | Default | Description |
+|-----|------|---------|-------------|
+| autoscaling.enabled | bool | `false` | |
+| autoscaling.maxReplicas | int | `100` | |
+| autoscaling.minReplicas | int | `1` | |
+| autoscaling.targetCPUUtilizationPercentage | int | `80` | |
+| clusterDomain | string | `"cluster.local"` | |
+| config.apisix | object |
`{"adminKey":"edd1c9f034335f136f87ad84b625c8f1","clusterName":"default","serviceName":"apisix-admin","serviceNamespace":"ingress-apisix","servicePort":9180}`
| APISIX related configurations. |
+| config.apisix.serviceName | string | `"apisix-admin"` | Enabling this value,
overrides serviceName and serviceNamespace. serviceFullname:
"apisix-admin.apisix.svc.local" |
+| config.apisixResourceSyncInterval | string | `"300s"` | Default interval for
synchronizing Kubernetes resources to APISIX |
+| config.certFile | string | `"/etc/webhook/certs/cert.pem"` | the TLS
certificate file path. |
+| config.enableProfiling | bool | `true` | enable profiling via web interfaces
host:port/debug/pprof, default is true. |
+| config.httpListen | string | `":8080"` | the HTTP Server listen address,
default is ":8080" |
+| config.httpsListen | string | `":8443"` | the HTTPS Server listen address,
default is ":8443" |
+| config.ingressPublishService | string | `""` | the controller will use the
Endpoint of this Service to update the status information of the Ingress
resource. The format is "namespace/svc-name" to solve the situation that the
data plane and the controller are not deployed in the same namespace. |
+| config.ingressStatusAddress | list | `[]` | |
+| config.keyFile | string | `"/etc/webhook/certs/key.pem"` | the TLS key file
path. |
+| config.kubernetes | object |
`{"apisixRouteVersion":"apisix.apache.org/v2","appNamespaces":["*"],"electionId":"ingress-apisix-leader","enableGatewayAPI":false,"ingressClass":"apisix","ingressVersion":"networking/v1","kubeconfig":"","namespaceSelector":[""],"resyncInterval":"6h","watchEndpointSlices":false}`
| Kubernetes related configurations. |
+| config.kubernetes.apisixRouteVersion | string | `"apisix.apache.org/v2"` |
the supported apisixroute api group version, can be "apisix.apache.org/v2"
"apisix.apache.org/v2beta3" or "apisix.apache.org/v2beta2" |
+| config.kubernetes.appNamespaces | list | `["*"]` | namespace list that
controller will watch for resources, by default all namespaces (represented by
"*") are watched. |
+| config.kubernetes.electionId | string | `"ingress-apisix-leader"` | the
election id for the controller leader campaign, only the leader will watch and
delivery resource changes, other instances (as candidates) stand by. |
+| config.kubernetes.enableGatewayAPI | bool | `false` | whether to enable
support for Gateway API. Note: This feature is currently under development and
may not work as expected. It is not recommended to use it in a production
environment. Before we announce support for it to reach Beta level or GA. |
+| config.kubernetes.ingressClass | string | `"apisix"` | The class of an
Ingress object is set using the field IngressClassName in Kubernetes clusters
version v1.18.0 or higher or the annotation "kubernetes.io/ingress.class"
(deprecated). |
+| config.kubernetes.ingressVersion | string | `"networking/v1"` | the
supported ingress api group version, can be "networking/v1beta1",
"networking/v1" (for Kubernetes version v1.19.0 or higher), and
"extensions/v1beta1", default is "networking/v1". |
+| config.kubernetes.kubeconfig | string | `""` | the Kubernetes configuration
file path, default is "", so the in-cluster configuration will be used. |
+| config.kubernetes.namespaceSelector | list | `[""]` | namespace_selector
represent basis for selecting managed namespaces. the field is support since
version 1.4.0 For example, "apisix.ingress=watching", so ingress will watching
the namespaces which labels "apisix.ingress=watching" |
+| config.kubernetes.resyncInterval | string | `"6h"` | how long should
apisix-ingress-controller re-synchronizes with Kubernetes, default is 6h, |
+| config.kubernetes.watchEndpointSlices | bool | `false` | whether to watch
EndpointSlices rather than Endpoints. |
+| config.logLevel | string | `"info"` | the error log level, default is info,
optional values are: debug, info, warn, error, panic, fatal |
+| config.logOutput | string | `"stderr"` | the output file path of error log,
default is stderr, when the file path is "stderr" or "stdout", logs are
marshalled plainly, which is more readable for human; otherwise logs are
marshalled in JSON format, which can be parsed by programs easily. |
+| fullnameOverride | string | `""` | |
+| image.pullPolicy | string | `"IfNotPresent"` | |
+| image.repository | string | `"apache/apisix-ingress-controller"` | |
+| image.tag | string | `"1.5.1"` | |
+| imagePullSecrets | list | `[]` | |
+| initContainer.image | string | `"busybox"` | |
+| initContainer.tag | float | `1.28` | |
+| nameOverride | string | `""` | Default values for apisix-ingress-controller.
This is a YAML-formatted file. Declare variables to be passed into your
templates. |
+| nodeSelector | object | `{}` | |
+| podAnnotations | object | `{}` | |
+| podSecurityContext | object | `{}` | |
+| priorityClassName | string | `""` | |
+| rbac.create | bool | `true` | Specifies whether RBAC resources should be
created |
+| replicaCount | int | `1` | |
+| resources | object | `{}` | |
+| securityContext | object | `{}` | |
+| service.port | int | `80` | |
+| serviceAccount.automountServiceAccountToken | bool | `true` | Whether
automounting API credentials for a service account |
+| serviceAccount.create | bool | `true` | Specifies whether a ServiceAccount
should be created |
+| serviceAccount.name | string | `""` | The name of the ServiceAccount to use.
If not set and create is true, a name is generated using the fullname template |
+| serviceMonitor | object |
`{"annotations":{},"enabled":false,"interval":"15s","labels":{},"namespace":"monitoring"}`
| namespace: "ingress-apisix" |
+| serviceMonitor.annotations | object | `{}` | @param
serviceMonitor.annotations ServiceMonitor annotations |
+| serviceMonitor.labels | object | `{}` | @param serviceMonitor.labels
ServiceMonitor extra labels |
+| tolerations | list | `[]` | |
diff --git a/charts/apisix-ingress-controller/README.md
b/charts/apisix-ingress-controller/README.md.gotmpl
similarity index 98%
copy from charts/apisix-ingress-controller/README.md
copy to charts/apisix-ingress-controller/README.md.gotmpl
index b832292..d50feb2 100644
--- a/charts/apisix-ingress-controller/README.md
+++ b/charts/apisix-ingress-controller/README.md.gotmpl
@@ -100,3 +100,5 @@ The same for container level, you need to set:
--set SecurityContext.runAsGroup=«VALUE»
...
```
+
+{{ template "chart.valuesSection" . }}
diff --git a/charts/apisix-ingress-controller/values.yaml
b/charts/apisix-ingress-controller/values.yaml
index f090129..a175acd 100644
--- a/charts/apisix-ingress-controller/values.yaml
+++ b/charts/apisix-ingress-controller/values.yaml
@@ -15,7 +15,7 @@
# limitations under the License.
#
-# Default values for apisix-ingress-controller.
+# -- Default values for apisix-ingress-controller.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
#
@@ -24,16 +24,16 @@ nameOverride: ""
fullnameOverride: ""
rbac:
- # Specifies whether RBAC resources should be created
+ # -- Specifies whether RBAC resources should be created
create: true
serviceAccount:
- # Specifies whether a ServiceAccount should be created
+ # -- Specifies whether a ServiceAccount should be created
create: true
- # The name of the ServiceAccount to use.
+ # -- The name of the ServiceAccount to use.
# If not set and create is true, a name is generated using the fullname
template
name: ""
- # Whether automounting API credentials for a service account
+ # -- Whether automounting API credentials for a service account
automountServiceAccountToken: true
@@ -55,78 +55,72 @@ service:
port: 80
config:
- # the error log level, default is info, optional values are:
- # debug
- # info
- # warn
- # error
- # panic
- # fatal
+ # -- the error log level, default is info, optional values are: debug, info,
warn, error, panic, fatal
logLevel: "info"
- # the output file path of error log, default is stderr, when
+ # -- the output file path of error log, default is stderr, when
# the file path is "stderr" or "stdout", logs are marshalled
# plainly, which is more readable for human; otherwise logs
# are marshalled in JSON format, which can be parsed by
# programs easily.
logOutput: "stderr"
- # the TLS certificate file path.
+ # -- the TLS certificate file path.
certFile: "/etc/webhook/certs/cert.pem"
- # the TLS key file path.
+ # -- the TLS key file path.
keyFile: "/etc/webhook/certs/key.pem"
- # the HTTP Server listen address, default is ":8080"
+ # -- the HTTP Server listen address, default is ":8080"
httpListen: ":8080"
- # the HTTPS Server listen address, default is ":8443"
+ # -- the HTTPS Server listen address, default is ":8443"
httpsListen: ":8443"
- # the controller will use the Endpoint of this Service to
+ # -- the controller will use the Endpoint of this Service to
# update the status information of the Ingress resource.
# The format is "namespace/svc-name" to solve the situation that
# the data plane and the controller are not deployed in the same namespace.
ingressPublishService: ""
ingressStatusAddress: []
- # enable profiling via web interfaces host:port/debug/pprof, default is true.
+ # -- enable profiling via web interfaces host:port/debug/pprof, default is
true.
enableProfiling: true
- # Default interval for synchronizing Kubernetes resources to APISIX
+ # -- Default interval for synchronizing Kubernetes resources to APISIX
apisixResourceSyncInterval: "300s"
- # Kubernetes related configurations.
+ # -- Kubernetes related configurations.
kubernetes:
- # the Kubernetes configuration file path, default is "", so the in-cluster
+ # -- the Kubernetes configuration file path, default is "", so the
in-cluster
# configuration will be used.
kubeconfig: ""
- # how long should apisix-ingress-controller re-synchronizes with
Kubernetes,
+ # -- how long should apisix-ingress-controller re-synchronizes with
Kubernetes,
# default is 6h,
resyncInterval: "6h"
- # namespace list that controller will watch for resources,
+ # -- namespace list that controller will watch for resources,
# by default all namespaces (represented by "*") are watched.
appNamespaces: ["*"]
- # namespace_selector represent basis for selecting managed namespaces.
+ # -- namespace_selector represent basis for selecting managed namespaces.
# the field is support since version 1.4.0
# For example, "apisix.ingress=watching", so ingress will watching the
namespaces which labels "apisix.ingress=watching"
namespaceSelector: [""]
- # the election id for the controller leader campaign,
+ # -- the election id for the controller leader campaign,
# only the leader will watch and delivery resource changes,
# other instances (as candidates) stand by.
electionId: "ingress-apisix-leader"
- # The class of an Ingress object is set using the field IngressClassName in
+ # -- The class of an Ingress object is set using the field
IngressClassName in
# Kubernetes clusters version v1.18.0 or higher or the annotation
# "kubernetes.io/ingress.class" (deprecated).
ingressClass: "apisix"
- # the supported ingress api group version, can be "networking/v1beta1",
+ # -- the supported ingress api group version, can be "networking/v1beta1",
# "networking/v1" (for Kubernetes version v1.19.0 or higher), and
# "extensions/v1beta1", default is "networking/v1".
ingressVersion: "networking/v1"
- # whether to watch EndpointSlices rather than Endpoints.
+ # -- whether to watch EndpointSlices rather than Endpoints.
watchEndpointSlices: false
- # the supported apisixroute api group version, can be
"apisix.apache.org/v2"
+ # -- the supported apisixroute api group version, can be
"apisix.apache.org/v2"
# "apisix.apache.org/v2beta3" or "apisix.apache.org/v2beta2"
apisixRouteVersion: "apisix.apache.org/v2"
- # whether to enable support for Gateway API.
+ # -- whether to enable support for Gateway API.
# Note: This feature is currently under development and may not work as
expected.
# It is not recommended to use it in a production environment.
# Before we announce support for it to reach Beta level or GA.
enableGatewayAPI: false
- # APISIX related configurations.
+ # -- APISIX related configurations.
apisix:
- # Enabling this value, overrides serviceName and serviceNamespace.
+ # -- Enabling this value, overrides serviceName and serviceNamespace.
# serviceFullname: "apisix-admin.apisix.svc.local"
serviceName: apisix-admin
serviceNamespace: ingress-apisix
@@ -150,15 +144,15 @@ autoscaling:
nodeSelector: {}
tolerations: []
-# namespace: "ingress-apisix"
+# -- namespace: "ingress-apisix"
serviceMonitor:
enabled: false
namespace: "monitoring"
interval: 15s
- # @param serviceMonitor.labels ServiceMonitor extra labels
+ # -- @param serviceMonitor.labels ServiceMonitor extra labels
labels: {}
- # @param serviceMonitor.annotations ServiceMonitor annotations
+ # -- @param serviceMonitor.annotations ServiceMonitor annotations
annotations: {}
diff --git a/charts/apisix/README.md b/charts/apisix/README.md
index 5bef844..e583c44 100644
--- a/charts/apisix/README.md
+++ b/charts/apisix/README.md
@@ -36,254 +36,152 @@ The command removes all the Kubernetes components
associated with the chart and
## Parameters
-The following tables lists the configurable parameters of the apisix chart and
their default values per section/component:
-
-### Global parameters
-
-| Parameter | Description
| Default |
-|---------------------------|-------------------------------------------------|---------------------------------------------------------|
-| `global.imagePullSecrets` | Global Docker registry secret names as an array
| `[]` (does not add image pull secrets to deployed pods) |
-
-### apisix parameters
-
-| Parameter | Description
| Default
|
-|---------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|
-| `apisix.enabled` | Enable or disable Apache
APISIX itself
| `true`
|
-| `apisix.enableIPv6` | Enable nginx IPv6
resolver
| `true`
|
-| `apisix.hostNetwork` | Use the host's network
namespace
| `false`
|
-| `apisix.enableCustomizedConfig` | Enable full customized
`config.yaml`
| `false`
|
-| `apisix.customizedConfig` | If
`apisix.enableCustomizedConfig` is true, full customized `config.yaml`. Please
note that other settings about APISIX config will be ignored
|
`{}` |
-| `apisix.image.repository` | Apache APISIX image
repository
| `apache/apisix`
|
-| `apisix.image.tag` | Apache APISIX image tag
| `{TAG_NAME}` (the latest
Apache APISIX image tag) |
-| `apisix.image.pullPolicy` | Apache APISIX image pull
policy
| `IfNotPresent`
|
-| `apisix.kind` | Apache APISIX kind use a
`DaemonSet` or `Deployment`
| `Deployment`
|
-| `apisix.replicaCount` | Apache APISIX deploy
replica count,kind is DaemonSet,replicaCount not become effective
| `1`
|
-| `apisix.podAnnotations` | Annotations to add to
each pod
| `{}`
|
-| `apisix.priorityClassName` | Set
[priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)
for Apache APISIX pods
| `""`
|
-| `apisix.podSecurityContext` | Set the securityContext
for Apache APISIX pods
| `{}`
|
-| `apisix.securityContext` | Set the securityContext
for Apache APISIX container
| `{}`
|
-| `apisix.podDisruptionBudget.enabled` | Enable or disable
podDisruptionBudget
| `false`
|
-| `apisix.podDisruptionBudget.minAvailable` | Set 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](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget)
for more details | `Not set` |
-| `apisix.podDisruptionBudget.maxUnavailable` | Set the maxUnavailable
of podDisruptionBudget
| `1`
|
-| `apisix.resources` | Set pod resource
requests & limits
| `{}`
|
-| `apisix.nodeSelector` | Node labels for Apache
APISIX pod assignment
| `{}`
|
-| `apisix.tolerations` | List of node taints to
tolerate
| `{}`
|
-| `apisix.affinity` | Set affinity for Apache
APISIX deploy
| `{}`
|
-| `apisix.setIDFromPodUID` | Whether to use the Pod
UID as the APISIX instance id, see
[apache/apisix#5417](https://github.com/apache/apisix/issues/5417) to decide
whether you should enable this setting)
| `false` |
-| `apisix.enableServerTokens` | Set the
`enable_server_tokens` (Whether the APISIX version number should be shown in
Server header)
| `Not
Set` |
-| `apisix.customLuaSharedDicts` | Add custom
[lua_shared_dict](https://github.com/openresty/lua-nginx-module#toc88)
settings, click
[here](https://github.com/apache/apisix-helm-chart/blob/master/charts/apisix/values.yaml#L27-L30)
to learn the format of a shared dict
| `[]` |
-| `apisix.pluginAttrs` | Set APISIX plugin
attributes, see
[config-default.yaml](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L376)
for more details
| `{}` |
-| `apisix.luaModuleHook.enabled` | Whether to add a custom
lua module
| `false` |
-| `apisix.luaModuleHook.luaPath` | Configure `LUA_PATH` so
that your own lua module codes can be located
| `""` |
-| `apisix.luaModuleHook.hookPoint` | The entrypoint of your
lua module, use Lua require syntax, like `"module.say_hello"`
| `""` |
-| `apisix.luaModuleHook.configMapRef.name` | Name of the ConfigMap
where the lua module codes store
| "" |
-| `apisix.luaModuleHook.configMapRef.mounts[].key` | Name of the ConfigMap
key, for setting the mapping relationship between ConfigMap key and the lua
module code path.
| `""` |
-| `apisix.luaModuleHook.configMapRef.mounts[].path` | Filepath of the plugin
code, for setting the mapping relationship between ConfigMap key and the lua
module code path.
| `""` |
-| `apisix.httpRouter` | HTTP routing strategy.
See [APISIX Router](https://apisix.apache.org/docs/apisix/terminology/router/)
for the detail.
| `[]` |
-| `extraVolumes` | Additional `volume`, See
[Kubernetes Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for
the detail.
| `[]` |
-| `extraVolumeMounts` | Additional
`volumeMounts`, See [Kubernetes
Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for the detail.
| `[]` |
-| `extraInitContainers` | Additional
`initContainers`, See [Kubernetes
initContainers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
for the detail.
| `[]` |
-
-### gateway parameters
-
-Apache APISIX service parameters, this determines how users can access itself.
-
-| Parameter | Description
| Default |
-|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
-| `gateway.type` | Apache APISIX service type for user access
itself
| `NodePort` |
-| `gateway.externalTrafficPolicy` | Setting how the Service route external
traffic
| `Cluster` |
-| `gateway.http` | Apache APISIX service settings for http
| |
-| `gateway.tls` | Apache APISIX service settings for tls
| |
-| `gateway.tls.existingCASecret` | Specifies 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.certCAFilename` | Filename be used in the
`gateway.tls.existingCASecret`
| `""` |
-| `gateway.tls.sslProtocols` | TLS protocols allowed to use. | `"TLSv1.2
TLSv1.3"` |
-| `gateway.stream` | Apache APISIX service settings for stream
| |
-| `gateway.ingress` | Using ingress access Apache APISIX service
| |
-| `gateway.ingress.annotations` | Ingress annotations
| `[]` |
-| `gateway.ingress.className` | `ingressClassName` replaces `annotations
kubernetes.io/ingress.class`, required Kubernetes `>=1.18`
| |
-
-### admin parameters
-
-| Parameter | Description
| Default
|
-|----------------------------|----------------------------------------------------------------------------------|---------------------------------------------------------|
-| `admin.enabled` | Enable or disable Apache APISIX admin API
| `true`
|
-| `admin.port` | which port to use for Apache APISIX admin API
| `9180`
|
-| `admin.servicePort` | Service port to use for Apache APISIX admin API
| `9180`
|
-| `admin.type` | Apache APISIX admin API service type
| `ClusterIP`
|
-| `admin.externalIPs` | IPs for which nodes in the cluster will also
accept traffic for the servic | `[]`
|
-| `admin.cors` | Apache APISIX admin API support CORS response
headers | `true`
|
-| `admin.credentials.admin` | Apache APISIX admin API admin role credentials
| `edd1c9f034335f136f87ad84b625c8f1`
|
-| `admin.credentials.viewer` | Apache APISIX admin API viewer role credentials
| `4054f7cf07e344346cd3f287985e76a2`
|
-| `admin.allow.ipList` | The client IP CIDR allowed to access Apache
APISIX Admin API service | `["127.0.0.1/24"]`
|
-
-### custom configuration snippet parameters
-
-| Parameter | Description
| Default |
-|----------------------------------|----------------------------------------------------------------------------------------------------|---------|
-| `configurationSnippet.main` | Add custom Nginx configuration (main
block) to nginx.conf | `{}` |
-| `configurationSnippet.httpStart` | Add custom Nginx configuration (http
block) to nginx.conf | `{}` |
-| `configurationSnippet.httpEnd` | Add custom Nginx configuration (http
block) to nginx.conf, will be put at the bottom of http block | `{}` |
-| `configurationSnippet.httpSrv` | Add custom Nginx configuration (server
block) to nginx.conf | `{}` |
-| `configurationSnippet.httpAdmin` | Add custom Nginx configuration (Admin API
server block) to nginx.conf | `{}` |
-| `configurationSnippet.stream` | Add custom Nginx configuration (stream
block) to nginx.conf | `{}` |
-
-### etcd parameters
-
-| Parameter | Description
| Default |
-|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
-| `etcd.enabled` | use built-in etcd
| `true` |
-| `etcd.host` | if `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.prefix` | apisix configurations prefix
| `/apisix` |
-| `etcd.timeout` | Set the timeout value in seconds for
subsequent socket operations from apisix to etcd cluster
| `30` |
-| `etcd.auth.rbac.create` | Switch to enable RBAC authentication
| `false`
|
-| `etcd.auth.rbac.user` | root username for etcd
| `""` |
-| `etcd.auth.rbac.password` | root password for etcd
| `""` |
-| `etcd.auth.tls.enabled` | enable etcd client certificate
| `false` |
-| `etcd.auth.tls.existingSecret` | name of the secret contains etcd client
cert
| `""` |
-| `etcd.auth.tls.certFilename` | etcd client cert filename using in
`etcd.auth.tls.existingSecret`
| `""` |
-| `etcd.auth.tls.certKeyFilename` | etcd client cert key filename using in
`etcd.auth.tls.existingSecret`
| `""` |
-| `etcd.auth.tls.verify` | whether to verify the etcd endpoint
certificate when setup a TLS connection to etcd
| `true` |
-| `etcd.auth.tls.sni` | specify the TLS [Server Name
Indication](https://en.wikipedia.org/wiki/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](https://github.com/apache/apisix-helm-chart/blob/master/charts/apisix/templates/configmap.yaml)
for details.
-
-
-### external plugin parameters
-
-| Parameter | Description
| Default |
-|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
-| `extPlugin.enabled` | Enable External Plugins. See [external
plugin](https://apisix.apache.org/docs/apisix/next/external-plugin/) | `false` |
-| `extPlugin.cmd` | the command and its arguements to run as a subprocess |
`{}` |
-
-### wasm plugin parameters
-
-| Parameter | Description
| Default |
-|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
-| `wasmPlugins.enabled` | Enable Wasm Plugins. See [wasm
plugin](https://apisix.apache.org/docs/apisix/next/wasm/) | `false` |
-| `wasmPlugins.plugins[].name` | Set wasm plugin name | `""` |
-| `wasmPlugins.plugins[].priority` | Set wasm plugin priority | `7999` |
-| `wasmPlugins.plugins[].file` | Set path to wasm plugin | `""` |
-| `wasmPlugins.plugins[].http_request_phase` | Set which http request phase
for the plugin to run in | `access` |
-
-Note:
- - the easiest way to include your wasm custom plugin is to rebuild the
apisix image with those custom plugins included within the directory you define
and later on gets referenced to `wasmPlugins.plugins[].file`
- - otherwise you could use `extraVolumes` and `extraVolumeMounts` option to
include your plugin by creating your plugin via `ConfigMap` and mount it to
apisix pod like example below
- ```
- #... more options omitted ...
- ingress-controller:
- enabled: true
-
- dashboard:
- enabled: true
-
- # assuming you install apisix in `apisix` namespace,
- # create the plugin by this command and had the wasm plugin
- # kubectl create configmap --namespace apisix
--from-file=./wasm_plugin_x.wasm wasm-plugin-x
- # Note: there are also size limitation on `ConfigMap`
-
- # these options are kubernetes
- # Volume and VolumeMount api objects
- extraVolumes:
- - name: wasm-plugin-x
- configMap:
- name: wasm-plugin-x
- items:
- - key: wasm_plugin_x.wasm
- path: wasm_plugin_x.wasm
- extraVolumeMounts:
- - name: wasm-plugin-x
- mountPath: /var/local/wasm-plugins/ # later on reference to
`wasmPlugins.plugins[].file` as its value
- readOnly: true
- #... more options omitted ...
- ```
-
-### custom plugin parameters
-
-| Parameter | Description
| Default |
-|---------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
-| `apisix.customPlugins.enabled` | Whether to configure some custom plugins |
`false` |
-| `apisix.customPlugins.luaPath` | Configure `LUA_PATH` so that custom plugin
codes can be located | `""` |
-| `apisix.customPlugins.plugins[].name` | Custom plugin name | `""` |
-| `apisix.customPlugins.plugins[].attrs` | Custom plugin attributes | `{}` |
-| `apisix.customPlugins.plugins[].configMap.name` | Name of the ConfigMap
where the plugin codes store | `""` |
-| `apisix.customPlugins.plugins[].configMap.mounts[].key` | Name of the
ConfigMap key, for setting the mapping relationship between ConfigMap key and
the plugin code path. | `""` |
-| `apisix.customPlugins.plugins[].configMap.mounts[].path` | Filepath of the
plugin code, for setting the mapping relationship between ConfigMap key and the
plugin code path. | `""` |
-
-### discovery parameters
-
-| Parameter | Description
| Default |
-|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
-| `discovery.enabled` | Enable or disable Apache APISIX
integration service discovery | `false` |
-| `discovery.registry` | Registry is the same to the one in
APISIX
[config-default.yaml](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L281),
and refer to such file for more setting details. also refer to [this
documentation for integration service
discovery](https://apisix.apache.org/docs/apisix/discovery) | nil |
-
-If you have enabled this feature, here is an example:
-
-```yaml
-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
-
-| Parameter | Description
| Default |
-|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|
-| `logs.enableAccessLog` | Enable access log or not, default
true | `true` |
-| `logs.accessLog` | Access log path | `/dev/stdout` |
-| `logs.accessLogFormat` | Access 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.accessLogFormatEscape` | Allows setting json or
default characters escaping in variables | `default` |
-| `logs.errorLog` | Error log path | `/dev/stderr` |
-| `logs.errorLogLevel` | Error log level | `warn` |
-
-### dashboard parameters
-
-Configurations for apisix-dashboard sub chart.
-
-### ingress-controller parameters
-
-Configurations for Apache APISIX ingress-controller sub chart.
-
-### serviceMonitor parameters
-
-| Parameter | Description
| Default |
-| ------------------------------ |
------------------------------------------------------------ |
---------------------------- |
-| `serviceMonitor.enabled` | Enable or disable Apache APISIX
serviceMonitor | `false` |
-| `serviceMonitor.namespace` | Namespace where the serviceMonitor is
deployed | `""` |
-| `serviceMonitor.interval` | Interval at which metrics should be scraped
| `15s` |
-| `serviceMonitor.path` | Path of the Prometheus metrics endpoint
| `/apisix/prometheus/metrics` |
-| `serviceMonitor.containerPort` | Container port which Prometheus metrics are
exposed | `9091` |
-| `serviceMonitor.labels` | ServiceMonitor extra labels
| `{}` |
-| `serviceMonitor.annotations` | ServiceMonitor annotations
| `{}` |
-
-### initContainers parameters
-
-| Parameter | Description | Default |
-|--------------------------------|----------------------|-----------|
-| `initContainer.image` | Init container image | `busybox` |
-| `initContainer.tag` | Init container tag | `1.28` |
-
-### vault integration parameters
-
-| Parameter | Description
| Default
|
-|----------------------------|--------------------------------------------------------------------------------------------------|---------------------------------------------------------|
-| `vault.enabled` | Enable or disable the vault integration
| `false`
|
-| `vault.host` | The host address where the vault server is
running. |
|
-| `vault.timeout` | HTTP timeout for each request.
|
|
-| `vault.token` | The generated token from vault instance that
can grant access to read data from the vault. |
|
-| `vault.prefix` | Prefix allows you to better enforcement of
policies. |
|
-
+## Values
+
+| Key | Type | Default | Description |
+|-----|------|---------|-------------|
+| admin.allow.ipList | list | `["127.0.0.1/24"]` | The client IP CIDR allowed
to access Apache APISIX Admin API service. |
+| admin.cors | bool | `true` | Admin API support CORS response headers |
+| admin.credentials | object |
`{"admin":"edd1c9f034335f136f87ad84b625c8f1","viewer":"4054f7cf07e344346cd3f287985e76a2"}`
| Admin API credentials |
+| admin.credentials.admin | string | `"edd1c9f034335f136f87ad84b625c8f1"` |
Apache APISIX admin API admin role credentials |
+| admin.credentials.viewer | string | `"4054f7cf07e344346cd3f287985e76a2"` |
Apache APISIX admin API viewer role credentials |
+| admin.enabled | bool | `true` | Enable Admin API |
+| admin.externalIPs | list | `[]` | IPs for which nodes in the cluster will
also accept traffic for the servic |
+| admin.port | int | `9180` | which port to use for Apache APISIX admin API |
+| admin.servicePort | int | `9180` | Service port to use for Apache APISIX
admin API |
+| admin.type | string | `"ClusterIP"` | admin service type |
+| apisix.affinity | object | `{}` | Set affinity for Apache APISIX deploy |
+| apisix.customLuaSharedDicts | list | `[]` | Add custom
[lua_shared_dict](https://github.com/openresty/lua-nginx-module#toc88)
settings, click
[here](https://github.com/apache/apisix-helm-chart/blob/master/charts/apisix/values.yaml#L27-L30)
to learn the format of a shared dict |
+| apisix.customizedConfig | object | `{}` | If apisix.enableCustomizedConfig
is true, full customized config.yaml. Please note that other settings about
APISIX config will be ignored |
+| apisix.enableCustomizedConfig | bool | `false` | Enable full customized
config.yaml |
+| apisix.enableIPv6 | bool | `true` | Enable nginx IPv6 resolver |
+| apisix.enableServerTokens | bool | `true` | Whether the APISIX version
number should be shown in Server header |
+| apisix.enabled | bool | `true` | Enable or disable Apache APISIX itself Set
it to false and ingress-controller.enabled=true will deploy only
ingress-controller |
+| apisix.extraEnvVars | list | `[]` | extraEnvVars An array to add extra env
vars e.g: extraEnvVars: - name: FOO value: "bar" - name: FOO2
valueFrom: secretKeyRef: name: SECRET_NAME key: KEY |
+| apisix.hostNetwork | bool | `false` | |
+| apisix.httpRouter | string | `"radixtree_uri"` | Defines how apisix handles
routing: - radixtree_uri: match route by uri(base on radixtree) -
radixtree_host_uri: match route by host + uri(base on radixtree) -
radixtree_uri_with_parameter: match route by uri with parameters |
+| apisix.image.pullPolicy | string | `"IfNotPresent"` | Apache APISIX image
pull policy |
+| apisix.image.repository | string | `"apache/apisix"` | Apache APISIX image
repository |
+| apisix.image.tag | string | `"2.15.1-debian"` | Apache APISIX image tag
Overrides the image tag whose default is the chart appVersion. |
+| apisix.kind | string | `"Deployment"` | Use a `DaemonSet` or `Deployment` |
+| apisix.luaModuleHook | object |
`{"configMapRef":{"mounts":[{"key":"","path":""}],"name":""},"enabled":false,"hookPoint":"","luaPath":""}`
| Whether to add a custom lua module |
+| apisix.luaModuleHook.configMapRef | object |
`{"mounts":[{"key":"","path":""}],"name":""}` | configmap that stores the codes
|
+| apisix.luaModuleHook.configMapRef.mounts[0] | object |
`{"key":"","path":""}` | Name of the ConfigMap key, for setting the mapping
relationship between ConfigMap key and the lua module code path. |
+| apisix.luaModuleHook.configMapRef.mounts[0].path | string | `""` | Filepath
of the plugin code, for setting the mapping relationship between ConfigMap key
and the lua module code path. |
+| apisix.luaModuleHook.configMapRef.name | string | `""` | Name of the
ConfigMap where the lua module codes store |
+| apisix.luaModuleHook.hookPoint | string | `""` | the hook module which will
be used to inject third party code into APISIX use the lua require style like:
"module.say_hello" |
+| apisix.luaModuleHook.luaPath | string | `""` | extend lua_package_path to
load third party code |
+| apisix.nodeSelector | object | `{}` | Node labels for Apache APISIX pod
assignment |
+| apisix.podAnnotations | object | `{}` | Annotations to add to each pod |
+| apisix.podDisruptionBudget | object |
`{"enabled":false,"maxUnavailable":1,"minAvailable":"90%"}` | See
https://kubernetes.io/docs/tasks/run-application/configure-pdb/ for more
details |
+| apisix.podDisruptionBudget.enabled | bool | `false` | Enable or disable
podDisruptionBudget |
+| apisix.podDisruptionBudget.maxUnavailable | int | `1` | Set the
maxUnavailable of podDisruptionBudget |
+| apisix.podDisruptionBudget.minAvailable | string | `"90%"` | Set 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](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget)
for more details |
+| apisix.podSecurityContext | object | `{}` | Set the securityContext for
Apache APISIX pods |
+| apisix.priorityClassName | string | `""` | Set
[priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)
for Apache APISIX pods |
+| apisix.replicaCount | int | `1` | kind is DaemonSet, replicaCount not become
effective |
+| apisix.resources | object | `{}` | Set pod resource requests & limits |
+| apisix.securityContext | object | `{}` | Set the securityContext for Apache
APISIX container |
+| apisix.setIDFromPodUID | bool | `false` | Use Pod metadata.uid as the APISIX
id. |
+| apisix.timezone | string | `""` | timezone is the timezone where apisix
uses. For example: "UTC" or "Asia/Shanghai" This value will be set on apisix
container's environment variable TZ. You may need to set the timezone to be
consistent with your local time zone, otherwise the apisix's logs may used to
retrieve event maybe in wrong timezone. |
+| apisix.tolerations | list | `[]` | List of node taints to tolerate |
+| autoscaling.enabled | bool | `false` | |
+| autoscaling.maxReplicas | int | `100` | |
+| autoscaling.minReplicas | int | `1` | |
+| autoscaling.targetCPUUtilizationPercentage | int | `80` | |
+| autoscaling.targetMemoryUtilizationPercentage | int | `80` | |
+| configurationSnippet | object |
`{"httpAdmin":"","httpEnd":"","httpSrv":"","httpStart":"","main":"","stream":""}`
| Custom configuration snippet. |
+| customPlugins | object |
`{"enabled":false,"luaPath":"/opts/custom_plugins/?.lua","plugins":[{"attrs":{},"configMap":{"mounts":[{"key":"","path":""},{"key":"","path":""}],"name":""},"name":""}]}`
| customPlugins allows you to mount your own HTTP plugins. |
+| customPlugins.enabled | bool | `false` | Whether to configure some custom
plugins |
+| customPlugins.luaPath | string | `"/opts/custom_plugins/?.lua"` | the
lua_path that tells APISIX where it can find plugins, note the last ';' is
required. |
+| customPlugins.plugins[0] | object |
`{"attrs":{},"configMap":{"mounts":[{"key":"","path":""},{"key":"","path":""}],"name":""},"name":""}`
| plugin name. |
+| customPlugins.plugins[0].attrs | object | `{}` | plugin attrs |
+| customPlugins.plugins[0].configMap | object |
`{"mounts":[{"key":"","path":""},{"key":"","path":""}],"name":""}` | plugin
codes can be saved inside configmap object. |
+| customPlugins.plugins[0].configMap.mounts | list |
`[{"key":"","path":""},{"key":"","path":""}]` | since keys in configmap is
flat, mountPath allows to define the mount path, so that plugin codes can be
mounted hierarchically. |
+| customPlugins.plugins[0].configMap.name | string | `""` | name of configmap.
|
+| dashboard.enabled | bool | `false` | |
+| discovery.enabled | bool | `false` | Enable or disable Apache APISIX
integration service discovery |
+| discovery.registry | object | `{}` | Registry is the same to the one in
APISIX
[config-default.yaml](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L281),
and refer to such file for more setting details. also refer to [this
documentation for integration service
discovery](https://apisix.apache.org/docs/apisix/discovery) |
+| dns.resolvers[0] | string | `"127.0.0.1"` | |
+| dns.resolvers[1] | string | `"172.20.0.10"` | |
+| dns.resolvers[2] | string | `"114.114.114.114"` | |
+| dns.resolvers[3] | string | `"223.5.5.5"` | |
+| dns.resolvers[4] | string | `"1.1.1.1"` | |
+| dns.resolvers[5] | string | `"8.8.8.8"` | |
+| dns.timeout | int | `5` | |
+| dns.validity | int | `30` | |
+| etcd | object |
`{"auth":{"rbac":{"create":false,"password":"","user":""},"tls":{"certFilename":"","certKeyFilename":"","enabled":false,"existingSecret":"","sni":"","verify":true}},"enabled":true,"host":["http://etcd.host:2379"],"prefix":"/apisix","replicaCount":3,"service":{"port":2379},"timeout":30}`
| etcd configuration use the FQDN address or the IP of the etcd |
+| etcd.auth | object |
`{"rbac":{"create":false,"password":"","user":""},"tls":{"certFilename":"","certKeyFilename":"","enabled":false,"existingSecret":"","sni":"","verify":true}}`
| if etcd.enabled is true, set more values of bitnami/etcd helm chart |
+| etcd.auth.rbac.create | bool | `false` | No authentication by default.
Switch to enable RBAC authentication |
+| etcd.auth.rbac.password | string | `""` | root password for etcd |
+| etcd.auth.rbac.user | string | `""` | root username for etcd |
+| etcd.auth.tls.certFilename | string | `""` | etcd client cert filename using
in etcd.auth.tls.existingSecret |
+| etcd.auth.tls.certKeyFilename | string | `""` | etcd client cert key
filename using in etcd.auth.tls.existingSecret |
+| etcd.auth.tls.enabled | bool | `false` | enable etcd client certificate |
+| etcd.auth.tls.existingSecret | string | `""` | name of the secret contains
etcd client cert |
+| etcd.auth.tls.sni | string | `""` | specify the TLS Server Name Indication
extension, the ETCD endpoint hostname will be used when this setting is unset. |
+| etcd.auth.tls.verify | bool | `true` | whether to verify the etcd endpoint
certificate when setup a TLS connection to etcd |
+| etcd.enabled | bool | `true` | install etcd(v3) by default, set false if do
not want to install etcd(v3) together |
+| etcd.host | list | `["http://etcd.host:2379"]` | if 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. |
+| etcd.prefix | string | `"/apisix"` | apisix configurations prefix |
+| etcd.timeout | int | `30` | Set the timeout value in seconds for subsequent
socket operations from apisix to etcd cluster |
+| extPlugin.cmd | list | `["/path/to/apisix-plugin-runner/runner","run"]` |
the command and its arguements to run as a subprocess |
+| extPlugin.enabled | bool | `false` | Enable External Plugins. See [external
plugin](https://apisix.apache.org/docs/apisix/next/external-plugin/) |
+| extraInitContainers | list | `[]` | Additional `initContainers`, See
[Kubernetes
initContainers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
for the detail. |
+| extraVolumeMounts | list | `[]` | Additional `volume`, See [Kubernetes
Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for the detail. |
+| extraVolumes | list | `[]` | Additional `volume`, See [Kubernetes
Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for the detail. |
+| fullnameOverride | string | `""` | |
+| gateway.externalIPs | list | `[]` | |
+| gateway.externalTrafficPolicy | string | `"Cluster"` | |
+| gateway.http | object |
`{"containerPort":9080,"enabled":true,"servicePort":80}` | Apache APISIX
service settings for http |
+| gateway.ingress | object |
`{"annotations":{},"enabled":false,"hosts":[{"host":"apisix.local","paths":[]}],"tls":[]}`
| Using ingress access Apache APISIX service |
+| gateway.ingress.annotations | object | `{}` | Ingress annotations |
+| gateway.stream | object | `{"enabled":false,"only":false,"tcp":[],"udp":[]}`
| Apache APISIX service settings for stream. L4 proxy (TCP/UDP) |
+| gateway.tls | object |
`{"certCAFilename":"","containerPort":9443,"enabled":false,"existingCASecret":"","http2":{"enabled":true},"servicePort":443,"sslProtocols":"TLSv1.2
TLSv1.3"}` | Apache APISIX service settings for tls |
+| gateway.tls.certCAFilename | string | `""` | Filename be used in the
gateway.tls.existingCASecret |
+| gateway.tls.existingCASecret | string | `""` | Specifies 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.sslProtocols | string | `"TLSv1.2 TLSv1.3"` | TLS protocols
allowed to use. |
+| gateway.type | string | `"NodePort"` | Apache APISIX service type for user
access itself |
+| global.imagePullSecrets | list | `[]` | Global Docker registry secret names
as an array |
+| ingress-controller.enabled | bool | `false` | |
+| initContainer.image | string | `"busybox"` | Init container image |
+| initContainer.tag | float | `1.28` | Init container tag |
+| logs.accessLog | string | `"/dev/stdout"` | Access log path |
+| logs.accessLogFormat | string | `"$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\\\""` | Access log format |
+| logs.accessLogFormatEscape | string | `"default"` | Allows setting json or
default characters escaping in variables |
+| logs.enableAccessLog | bool | `true` | Enable access log or not, default
true |
+| logs.errorLog | string | `"/dev/stderr"` | Error log path |
+| logs.errorLogLevel | string | `"warn"` | Error log level |
+| nameOverride | string | `""` | |
+| nginx.enableCPUAffinity | bool | `true` | |
+| nginx.envs | list | `[]` | |
+| nginx.workerConnections | string | `"10620"` | |
+| nginx.workerProcesses | string | `"auto"` | |
+| nginx.workerRlimitNofile | string | `"20480"` | |
+| pluginAttrs | object | `{}` | Set APISIX plugin attributes, see
[config-default.yaml](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L376)
for more details |
+| plugins | list |
`["api-breaker","authz-keycloak","basic-auth","batch-requests","consumer-restriction","cors","echo","fault-injection","file-logger","grpc-transcode","hmac-auth","http-logger","ip-restriction","ua-restriction","jwt-auth","kafka-logger","key-auth","limit-conn","limit-count","limit-req","node-status","openid-connect","authz-casbin","prometheus","proxy-cache","proxy-mirror","proxy-rewrite","redirect","referer-restriction","request-id","request-validation","response-rewrite
[...]
+| rbac.create | bool | `false` | |
+| serviceAccount.annotations | object | `{}` | |
+| serviceAccount.create | bool | `false` | |
+| serviceAccount.name | string | `""` | |
+| serviceMonitor | object |
`{"annotations":{},"containerPort":9091,"enabled":false,"interval":"15s","labels":{},"metricPrefix":"apisix_","name":"","namespace":"","path":"/apisix/prometheus/metrics"}`
| Observability configuration. ref:
https://apisix.apache.org/docs/apisix/plugins/prometheus/ |
+| serviceMonitor.annotations | object | `{}` | @param
serviceMonitor.annotations ServiceMonitor annotations |
+| serviceMonitor.containerPort | int | `9091` | container port where the
metrics are exposed |
+| serviceMonitor.enabled | bool | `false` | Enable or disable Apache APISIX
serviceMonitor |
+| serviceMonitor.interval | string | `"15s"` | interval at which metrics
should be scraped |
+| serviceMonitor.labels | object | `{}` | @param serviceMonitor.labels
ServiceMonitor extra labels |
+| serviceMonitor.metricPrefix | string | `"apisix_"` | prefix of the metrics |
+| serviceMonitor.name | string | `""` | name of the serviceMonitor, by
default, it is the same as the apisix fullname |
+| serviceMonitor.namespace | string | `""` | namespace where the
serviceMonitor is deployed, by default, it is the same as the namespace of the
apisix |
+| serviceMonitor.path | string | `"/apisix/prometheus/metrics"` | path of the
metrics endpoint |
+| stream_plugins[0] | string | `"mqtt-proxy"` | |
+| stream_plugins[1] | string | `"ip-restriction"` | |
+| stream_plugins[2] | string | `"limit-conn"` | |
+| updateStrategy | object | `{}` | |
+| vault.enabled | bool | `false` | Enable or disable the vault integration |
+| vault.host | string | `""` | The host address where the vault server is
running. |
+| vault.prefix | string | `""` | Prefix allows you to better enforcement of
policies. |
+| vault.timeout | int | `10` | HTTP timeout for each request. |
+| vault.token | string | `""` | The generated token from vault instance that
can grant access to read data from the vault. |
+| wasmPlugins.enabled | bool | `false` | Enable Wasm Plugins. See [wasm
plugin](https://apisix.apache.org/docs/apisix/next/wasm/) |
+| wasmPlugins.plugins | list | `[]` | |
diff --git a/charts/apisix/README.md.gotmpl b/charts/apisix/README.md.gotmpl
new file mode 100644
index 0000000..f07ec12
--- /dev/null
+++ b/charts/apisix/README.md.gotmpl
@@ -0,0 +1,39 @@
+## 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](https://github.com/apache/apisix-ingress-controller/).
+
+This chart bootstraps all the components needed to run Apache APISIX on a
Kubernetes Cluster using [Helm](https://helm.sh).
+
+## Prerequisites
+
+* Kubernetes v1.14+
+* Helm v3+
+
+## Install
+
+To install the chart with the release name `my-apisix`:
+
+```sh
+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`:
+
+ ```sh
+helm delete [RELEASE_NAME] --namespace ingress-apisix
+ ```
+
+The command removes all the Kubernetes components associated with the chart
and deletes the release.
+
+## Parameters
+
+{{ template "chart.valuesSection" . }}
diff --git a/charts/apisix/values.yaml b/charts/apisix/values.yaml
index 363814c..7c88e51 100644
--- a/charts/apisix/values.yaml
+++ b/charts/apisix/values.yaml
@@ -19,67 +19,83 @@ global:
# imagePullSecrets:
# - my-registry-secrets
# - other-registry-secrets
- #
+ # -- Global Docker registry secret names as an array
imagePullSecrets: []
apisix:
- # Enable or disable Apache APISIX itself
+ # -- Enable or disable Apache APISIX itself
# Set it to false and ingress-controller.enabled=true will deploy only
ingress-controller
enabled: true
- # Enable nginx IPv6 resolver
+ # -- Enable nginx IPv6 resolver
enableIPv6: true
- # Whether the APISIX version number should be shown in Server header
+ # -- Whether the APISIX version number should be shown in Server header
enableServerTokens: true
- # Use Pod metadata.uid as the APISIX id.
+ # -- Use Pod metadata.uid as the APISIX id.
setIDFromPodUID: false
+ # -- Add custom
[lua_shared_dict](https://github.com/openresty/lua-nginx-module#toc88) settings,
+ # click
[here](https://github.com/apache/apisix-helm-chart/blob/master/charts/apisix/values.yaml#L27-L30)
to learn the format of a shared dict
customLuaSharedDicts: []
# - name: foo
# size: 10k
# - name: bar
# size: 1m
+ # -- Whether to add a custom lua module
luaModuleHook:
enabled: false
- # extend lua_package_path to load third party code
+ # -- extend lua_package_path to load third party code
luaPath: ""
- # the hook module which will be used to inject third party code into APISIX
+ # -- the hook module which will be used to inject third party code into
APISIX
# use the lua require style like: "module.say_hello"
hookPoint: ""
- # configmap that stores the codes
+ # -- configmap that stores the codes
configMapRef:
+ # -- Name of the ConfigMap where the lua module codes store
name: ""
# mounts decides how to mount the codes to the container.
mounts:
+ # -- Name of the ConfigMap key, for setting the mapping relationship
between ConfigMap key and the lua module code path.
- key: ""
+ # -- Filepath of the plugin code, for setting the mapping relationship
between ConfigMap key and the lua module code path.
path: ""
- # Defines how apisix handles routing:
+ # -- Defines how apisix handles routing:
# - radixtree_uri: match route by uri(base on radixtree)
# - radixtree_host_uri: match route by host + uri(base on radixtree)
# - radixtree_uri_with_parameter: match route by uri with parameters
httpRouter: radixtree_uri
+ # -- Enable full customized config.yaml
enableCustomizedConfig: false
+ # -- If apisix.enableCustomizedConfig is true, full customized config.yaml.
+ # Please note that other settings about APISIX config will be ignored
customizedConfig: {}
image:
+ # -- Apache APISIX image repository
repository: apache/apisix
+ # -- Apache APISIX image pull policy
pullPolicy: IfNotPresent
+ # -- Apache APISIX image tag
# Overrides the image tag whose default is the chart appVersion.
tag: 2.15.1-debian
- # Use a `DaemonSet` or `Deployment`
+ # -- Use a `DaemonSet` or `Deployment`
kind: Deployment
- # kind is DaemonSet, replicaCount not become effective
+ # -- kind is DaemonSet, replicaCount not become effective
replicaCount: 1
+ # -- Set
[priorityClassName](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#pod-priority)
for Apache APISIX pods
priorityClassName: ""
+ # -- Annotations to add to each pod
podAnnotations: {}
+ # -- Set the securityContext for Apache APISIX pods
podSecurityContext: {}
# fsGroup: 2000
+ # -- Set the securityContext for Apache APISIX container
securityContext: {}
# capabilities:
# drop:
@@ -88,13 +104,21 @@ apisix:
# runAsNonRoot: true
# runAsUser: 1000
- # See https://kubernetes.io/docs/tasks/run-application/configure-pdb/ for
more details
+ # -- See https://kubernetes.io/docs/tasks/run-application/configure-pdb/ for
more details
podDisruptionBudget:
+ # -- Enable or disable podDisruptionBudget
enabled: false
+ # -- Set 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](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget)
+ # for more details
minAvailable: 90%
+ # -- Set the maxUnavailable of podDisruptionBudget
maxUnavailable: 1
+ # -- Set pod resource requests & limits
resources: {}
+ # -- Use the host's network namespace
+
# We usually recommend not to specify default resources and to leave this
as a conscious
# choice for the user. This also increases chances charts run on
environments with little
# resources, such as Minikube. If you do want to specify resources,
uncomment the following
@@ -107,18 +131,21 @@ apisix:
# memory: 128Mi
hostNetwork: false
+ # -- Node labels for Apache APISIX pod assignment
nodeSelector: {}
+ # -- List of node taints to tolerate
tolerations: []
+ # -- Set affinity for Apache APISIX deploy
affinity: {}
- # timezone is the timezone where apisix uses.
+ # -- timezone is the timezone where apisix uses.
# For example: "UTC" or "Asia/Shanghai"
# This value will be set on apisix container's environment variable TZ.
# You may need to set the timezone to be consistent with your local time
zone,
# otherwise the apisix's logs may used to retrieve event maybe in wrong
timezone.
timezone: ""
- # extraEnvVars An array to add extra env vars
+ # -- extraEnvVars An array to add extra env vars
# e.g:
# extraEnvVars:
# - name: FOO
@@ -142,35 +169,45 @@ rbac:
create: false
gateway:
+ # -- Apache APISIX service type for user access itself
type: NodePort
+ # -- Setting how the Service route external traffic
# If you want to keep the client source IP, you can set this to Local.
+
# ref:
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
externalTrafficPolicy: Cluster
# type: LoadBalancer
# annotations:
# service.beta.kubernetes.io/aws-load-balancer-type: nlb
externalIPs: []
+ # -- Apache APISIX service settings for http
http:
enabled: true
servicePort: 80
containerPort: 9080
+ # -- Apache APISIX service settings for tls
tls:
enabled: false
servicePort: 443
containerPort: 9443
+ # -- Specifies 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)
existingCASecret: ""
+ # -- Filename be used in the gateway.tls.existingCASecret
certCAFilename: ""
http2:
enabled: true
+ # -- TLS protocols allowed to use.
sslProtocols: "TLSv1.2 TLSv1.3"
- # L4 proxy (TCP/UDP)
+ # -- Apache APISIX service settings for stream. L4 proxy (TCP/UDP)
stream:
enabled: false
only: false
tcp: []
udp: []
+ # -- Using ingress access Apache APISIX service
ingress:
enabled: false
+ # -- Ingress annotations
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
@@ -183,26 +220,30 @@ gateway:
# - chart-example.local
admin:
- # Enable Admin API
+ # -- Enable Admin API
enabled: true
- # admin service type
+ # -- admin service type
type: ClusterIP
# loadBalancerIP: a.b.c.d
# loadBalancerSourceRanges:
# - "143.231.0.0/16"
+ # -- IPs for which nodes in the cluster will also accept traffic for the
servic
externalIPs: []
- #
+ # -- which port to use for Apache APISIX admin API
port: 9180
+ # -- Service port to use for Apache APISIX admin API
servicePort: 9180
- # Admin API support CORS response headers
+ # -- Admin API support CORS response headers
cors: true
- # Admin API credentials
+ # -- Admin API credentials
credentials:
+ # -- Apache APISIX admin API admin role credentials
admin: edd1c9f034335f136f87ad84b625c8f1
+ # -- Apache APISIX admin API viewer role credentials
viewer: 4054f7cf07e344346cd3f287985e76a2
allow:
- # The client IP CIDR allowed to access Apache APISIX Admin API service.
+ # -- The client IP CIDR allowed to access Apache APISIX Admin API service.
ipList:
- 127.0.0.1/24
@@ -213,7 +254,7 @@ nginx:
enableCPUAffinity: true
envs: []
-# APISIX plugins to be enabled
+# -- APISIX plugins to be enabled
plugins:
- api-breaker
- authz-keycloak
@@ -266,32 +307,37 @@ stream_plugins:
- ip-restriction
- limit-conn
+# -- Set APISIX plugin attributes, see
[config-default.yaml](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L376)
for more details
pluginAttrs: {}
extPlugin:
+ # -- Enable External Plugins. See [external
plugin](https://apisix.apache.org/docs/apisix/next/external-plugin/)
enabled: false
+ # -- the command and its arguements to run as a subprocess
cmd: ["/path/to/apisix-plugin-runner/runner", "run"]
wasmPlugins:
+ # -- Enable Wasm Plugins. See [wasm
plugin](https://apisix.apache.org/docs/apisix/next/wasm/)
enabled: false
plugins: []
-# customPlugins allows you to mount your own HTTP plugins.
+# -- customPlugins allows you to mount your own HTTP plugins.
customPlugins:
+ # -- Whether to configure some custom plugins
enabled: false
- # the lua_path that tells APISIX where it can find plugins,
+ # -- the lua_path that tells APISIX where it can find plugins,
# note the last ';' is required.
luaPath: "/opts/custom_plugins/?.lua"
plugins:
- # plugin name.
+ # -- plugin name.
- name: ""
- # plugin attrs
+ # -- plugin attrs
attrs: {}
- # plugin codes can be saved inside configmap object.
+ # -- plugin codes can be saved inside configmap object.
configMap:
- # name of configmap.
+ # -- name of configmap.
name: ""
- # since keys in configmap is flat, mountPath allows to define the mount
+ # -- since keys in configmap is flat, mountPath allows to define the
mount
# path, so that plugin codes can be mounted hierarchically.
mounts:
- key: ""
@@ -302,22 +348,28 @@ customPlugins:
updateStrategy: {}
# type: RollingUpdate
+# -- Additional `volume`, See [Kubernetes
Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for the detail.
extraVolumes: []
# - name: extras
# emptyDir: {}
+# -- Additional `volume`, See [Kubernetes
Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) for the detail.
extraVolumeMounts: []
# - name: extras
# mountPath: /usr/share/extras
# readOnly: true
+# -- Additional `initContainers`, See [Kubernetes
initContainers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)
for the detail.
extraInitContainers: []
# - name: init-myservice
# image: busybox:1.28
# command: ['sh', '-c', "until nslookup myservice.$(cat
/var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do
echo waiting for myservice; sleep 2; done"]
discovery:
+ # -- Enable or disable Apache APISIX integration service discovery
enabled: false
+ # -- Registry is the same to the one in APISIX
[config-default.yaml](https://github.com/apache/apisix/blob/master/conf/config-default.yaml#L281),
+ # and refer to such file for more setting details. also refer to [this
documentation for integration service
discovery](https://apisix.apache.org/docs/apisix/discovery)
registry: {}
# Integration service discovery registry. E.g eureka\dns\nacos\consul_kv
# reference:
@@ -360,11 +412,17 @@ discovery:
# access log and error log configuration
logs:
+ # -- Enable access log or not, default true
enableAccessLog: true
+ # -- Access log path
accessLog: "/dev/stdout"
+ # -- Access log format
accessLogFormat: '$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\"'
+ # -- Allows setting json or default characters escaping in variables
accessLogFormatEscape: default
+ # -- Error log path
errorLog: "/dev/stderr"
+ # -- Error log level
errorLogLevel: "warn"
dns:
@@ -379,7 +437,9 @@ dns:
timeout: 5
initContainer:
+ # -- Init container image
image: busybox
+ # -- Init container tag
tag: 1.28
autoscaling:
@@ -389,7 +449,7 @@ autoscaling:
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80
-# Custom configuration snippet.
+# -- Custom configuration snippet.
configurationSnippet:
main: |
@@ -403,51 +463,63 @@ configurationSnippet:
stream: |
-# Observability configuration.
+# -- Observability configuration.
# ref: https://apisix.apache.org/docs/apisix/plugins/prometheus/
serviceMonitor:
+ # -- Enable or disable Apache APISIX serviceMonitor
enabled: false
- # namespace where the serviceMonitor is deployed, by default, it is the same
as the namespace of the apisix
+ # -- namespace where the serviceMonitor is deployed, by default, it is the
same as the namespace of the apisix
namespace: ""
- # name of the serviceMonitor, by default, it is the same as the apisix
fullname
+ # -- name of the serviceMonitor, by default, it is the same as the apisix
fullname
name: ""
- # interval at which metrics should be scraped
+ # -- interval at which metrics should be scraped
interval: 15s
- # path of the metrics endpoint
+ # -- path of the metrics endpoint
path: /apisix/prometheus/metrics
- # prefix of the metrics
+ # -- prefix of the metrics
metricPrefix: apisix_
- # container port where the metrics are exposed
+ # -- container port where the metrics are exposed
containerPort: 9091
- # @param serviceMonitor.labels ServiceMonitor extra labels
+ # -- @param serviceMonitor.labels ServiceMonitor extra labels
labels: {}
- # @param serviceMonitor.annotations ServiceMonitor annotations
+ # -- @param serviceMonitor.annotations ServiceMonitor annotations
annotations: {}
-# etcd configuration
+# -- etcd configuration
# use the FQDN address or the IP of the etcd
etcd:
- # install etcd(v3) by default, set false if do not want to install etcd(v3)
together
+ # -- install etcd(v3) by default, set false if do not want to install
etcd(v3) together
enabled: true
+ # -- if 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.
host:
# host or ip e.g. http://172.20.128.89:2379
- http://etcd.host:2379
+ # -- apisix configurations prefix
prefix: "/apisix"
+ # -- Set the timeout value in seconds for subsequent socket operations from
apisix to etcd cluster
timeout: 30
- # if etcd.enabled is true, set more values of bitnami/etcd helm chart
+ # -- if etcd.enabled is true, set more values of bitnami/etcd helm chart
auth:
rbac:
- # No authentication by default
+ # -- No authentication by default. Switch to enable RBAC authentication
create: false
+ # -- root username for etcd
user: ""
+ # -- root password for etcd
password: ""
tls:
+ # -- enable etcd client certificate
enabled: false
+ # -- name of the secret contains etcd client cert
existingSecret: ""
+ # -- etcd client cert filename using in etcd.auth.tls.existingSecret
certFilename: ""
+ # -- etcd client cert key filename using in etcd.auth.tls.existingSecret
certKeyFilename: ""
+ # -- whether to verify the etcd endpoint certificate when setup a TLS
connection to etcd
verify: true
+ # -- specify the TLS Server Name Indication extension, the ETCD endpoint
hostname will be used when this setting is unset.
sni: ""
service:
@@ -462,8 +534,13 @@ ingress-controller:
enabled: false
vault:
+ # -- Enable or disable the vault integration
enabled: false
+ # -- The host address where the vault server is running.
host: ""
+ # -- HTTP timeout for each request.
timeout: 10
+ # -- The generated token from vault instance that can grant access to read
data from the vault.
token: ""
+ # -- Prefix allows you to better enforcement of policies.
prefix: ""