Merge R3 into master
[it/dep.git] / ric-aux / helm / infrastructure / subcharts / kong / README.md
1 # DEPRECATED
2
3 This chart has been deprecated in favor of
4 Kong's official chart [repository](https://github.com/kong/charts).
5
6 All users are advised to immediately migrate over to the new repository.
7
8 ## Kong for Kubernetes
9
10 [Kong for Kubernetes](https://github.com/Kong/kubernetes-ingress-controller)
11 is an open-source Ingress Controller for Kubernetes that offers
12 API management capabilities with a plugin architecture.
13
14 This chart bootstraps all the components needed to run Kong on a
15 [Kubernetes](http://kubernetes.io) cluster using the
16 [Helm](https://helm.sh) package manager.
17
18 ## TL;DR;
19
20 ```bash
21 $ helm repo update
22 $ helm install stable/kong
23 ```
24
25 ## Table of content
26
27 - [Prerequisites](#prerequisites)
28 - [Install](#install)
29 - [Uninstall](#uninstall)
30 - [Kong Enterprise](#kong-enterprise)
31 - [FAQs](#faqs)
32 - [Deployment Options](#deployment-options)
33   - [Database](#database)
34   - [Runtime package](#runtime-package)
35   - [Configuration method](#configuration-method)
36 - [Configuration](#configuration)
37   - [Kong Parameters](#kong-parameters)
38   - [Ingress Controller Parameters](#ingress-controller-parameters)
39   - [General Parameters](#general-parameters)
40   - [The `env` section](#the-env-section)
41 - [Kong Enterprise Parameters](#kong-enterprise-parameters)
42   - [Prerequisites](#prerequisites-1)
43     - [Kong Enterprise License](#kong-enterprise-license)
44     - [Kong Enterprise Docker registry access](#kong-enterprise-docker-registry-access)
45   - [Service location hints](#service-location-hints)
46   - [RBAC](#rbac)
47   - [Sessions](#sessions)
48   - [Email/SMTP](#emailsmtp)
49 - [Changelog](#changelog)
50 - [Seeking help](#seeking-help)
51
52 ## Prerequisites
53
54 - Kubernetes 1.12+
55 - PV provisioner support in the underlying infrastructure if persistence
56   is needed for Kong datastore.
57
58 ## Install
59
60 To install the chart with the release name `my-release`:
61
62 ```bash
63 $ helm repo update
64 $ helm install --name my-release stable/kong
65 ```
66
67 ## Uninstall
68
69 To uninstall/delete the `my-release` deployment:
70
71 ```bash
72 $ helm delete my-release
73 ```
74
75 The command removes all the Kubernetes components associated with the
76 chart and deletes the release.
77
78 > **Tip**: List all releases using `helm list`
79
80 ## FAQs
81
82 Please read the
83 [FAQs](https://github.com/helm/charts/blob/master/stable/kong/FAQs.md)
84 document.
85
86 ## Kong Enterprise
87
88 If using Kong Enterprise, several additional steps are necessary before
89 installing the chart:
90
91 - set `enterprise.enabled` to `true` in `values.yaml` file
92 - Update values.yaml to use a Kong Enterprise image
93 - Satisfy the two  prerequsisites below for
94   [Enterprise License](#kong-enterprise-license) and
95   [Enterprise Docker Registry](#kong-enterprise-docker-registry-access)
96
97 Once you have these set, it is possible to install Kong Enterprise
98
99 Please read through
100 [Kong Enterprise considerations](#kong-enterprise-parameters)
101 to understand all settings that are enterprise specific.
102
103 ## Deployment Options
104
105 Kong is a highly configurable piece of software that can be deployed
106 in a number of different ways, depending on your use-case.
107
108 All combinations of various runtimes, databases and configuration methods are
109 supported by this Helm chart.
110 The recommended approach is to use the Ingress Controller based configuration
111 along-with DB-less mode.
112
113 Following sections detail on various high-level architecture options available:
114
115 ### Database
116
117 Kong can run with or without a database (DB-less).
118 By default, this chart installs Kong without a database.
119
120 Although Kong can run with Postgres and Cassandra, the recommended database,
121 if you would like to use one, is Postgres for Kubernetes installations.
122 If your use-case warrants Cassandra, you should run the Cassandra cluster
123 outside of Kubernetes.
124
125 The database to use for Kong can be controlled via the `env.database` parameter.
126 For more details, please read the [env](#the-env-section) section.
127
128 Furthermore, this chart allows you to bring your own database that you manage
129 or spin up a new Postgres instance using the `postgres.enabled` parameter.
130
131 > Cassandra deployment via a sub-chart was previously supported but
132 the support has now been dropped due to stability issues.
133 You can still deploy Cassandra on your own and configure Kong to use
134 that via the `env.database` parameter.
135
136 #### DB-less  deployment
137
138 When deploying Kong in DB-less mode(`env.database: "off"`)
139 and without the Ingress Controller(`ingressController.enabled: false`),
140 you have to provide a declarative configuration for Kong to run.
141 The configuration can be provided using an existing ConfigMap
142 (`dblessConfig.configMap`) or or the whole configuration can be put into the
143 `values.yaml` file for deployment itself, under the `dblessConfig.config`
144 parameter. See the example configuration in the default values.yaml
145 for more details.
146
147 ### Runtime package
148
149 There are three different packages of Kong that are available:
150
151 - **Kong Gateway**  
152   This is the [Open-Source](https://github.com/kong/kong) offering. It is a
153   full-blown API Gateway and Ingress solution with a wide-array of functionality.
154   When Kong Gateway is combined with the Ingress based configuration method,
155   you get Kong for Kubernetes. This is the default deployment for this Helm
156   Chart.
157 - **Kong Enterprise K8S**  
158   This package builds up on top of the Open-Source Gateway and bundles in all
159   the Enterprise-only plugins as well.
160   When Kong Enterprise K8S is combined with the Ingress based
161   configuration method, you get Kong for Kubernetes Enterprise.
162   This package also comes with 24x7 support from Kong Inc.
163 - **Kong Enterprise**  
164   This is the full-blown Enterprise package which packs with itself all the
165   Enterprise functionality like Manager, Portal, Vitals, etc.
166   This package can't be run in DB-less mode.
167
168 The package to run can be changed via `image.repository` and `image.tag`
169 parameters. If you would like to run the Enterprise package, please read
170 the [Kong Enterprise Parameters](#kong-enterprise-parameters) section.
171
172 ### Configuration method
173
174 Kong can be configured via two methods:
175 - **Ingress and CRDs**  
176   The configuration for Kong is done via `kubectl` and Kubernetes-native APIs.
177   This is also known as Kong Ingress Controller or Kong for Kubernetes and is
178   the default deployment pattern for this Helm Chart. The configuration
179   for Kong is managed via Ingress and a few
180   [Custom Resources](https://github.com/Kong/kubernetes-ingress-controller/blob/master/docs/concepts/custom-resources.md).
181   For more details, please read the
182   [documentation](https://github.com/Kong/kubernetes-ingress-controller/tree/master/docs)
183   on Kong Ingress Controller.
184   To configure and fine-tune the controller, please read the
185   [Ingress Controller Parameters](#ingress-controller-parameters) section.
186 - **Admin API**  
187   This is the traditional method of running and configuring Kong.
188   By default, the Admin API of Kong is not exposed as a Service. This
189   can be controlled via `admin.enabled` and `env.admin_listen` parameters.
190
191 ## Configuration
192
193 ### Kong parameters
194
195 | Parameter                          | Description                                                                           | Default             |
196 | ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- |
197 | image.repository                   | Kong image                                                                            | `kong`              |
198 | image.tag                          | Kong image version                                                                    | `1.3`               |
199 | image.pullPolicy                   | Image pull policy                                                                     | `IfNotPresent`      |
200 | image.pullSecrets                  | Image pull secrets                                                                    | `null`              |
201 | replicaCount                       | Kong instance count                                                                   | `1`                 |
202 | admin.enabled                      | Create Admin Service                                                                  | `false`             |
203 | admin.useTLS                       | Secure Admin traffic                                                                  | `true`              |
204 | admin.servicePort                  | TCP port on which the Kong admin service is exposed                                   | `8444`              |
205 | admin.containerPort                | TCP port on which Kong app listens for admin traffic                                  | `8444`              |
206 | admin.nodePort                     | Node port when service type is `NodePort`                                             |                     |
207 | admin.hostPort                     | Host port to use for admin traffic                                                    |                     |
208 | admin.type                         | k8s service type, Options: NodePort, ClusterIP, LoadBalancer                          | `NodePort`          |
209 | admin.loadBalancerIP               | Will reuse an existing ingress static IP for the admin service                        | `null`              |
210 | admin.loadBalancerSourceRanges     | Limit admin access to CIDRs if set and service type is `LoadBalancer`                 | `[]`                |
211 | admin.ingress.enabled              | Enable ingress resource creation (works with proxy.type=ClusterIP)                    | `false`             |
212 | admin.ingress.tls                  | Name of secret resource, containing TLS secret                                        |                     |
213 | admin.ingress.hosts                | List of ingress hosts.                                                                | `[]`                |
214 | admin.ingress.path                 | Ingress path.                                                                         | `/`                 |
215 | admin.ingress.annotations          | Ingress annotations. See documentation for your ingress controller for details        | `{}`                |
216 | proxy.http.enabled                 | Enables http on the proxy                                                             | true                |
217 | proxy.http.servicePort             | Service port to use for http                                                          | 80                  |
218 | proxy.http.containerPort           | Container port to use for http                                                        | 8000                |
219 | proxy.http.nodePort                | Node port to use for http                                                             | 32080               |
220 | proxy.http.hostPort                | Host port to use for http                                                             |                     |
221 | proxy.tls.enabled                  | Enables TLS on the proxy                                                              | true                |
222 | proxy.tls.containerPort            | Container port to use for TLS                                                         | 8443                |
223 | proxy.tls.servicePort              | Service port to use for TLS                                                           | 8443                |
224 | proxy.tls.nodePort                 | Node port to use for TLS                                                              | 32443               |
225 | proxy.tls.hostPort                 | Host port to use for TLS                                                              |                     |
226 | proxy.tls.overrideServiceTargetPort| Override service port to use for TLS without touching Kong containerPort              |                     |
227 | proxy.type                         | k8s service type. Options: NodePort, ClusterIP, LoadBalancer                          | `LoadBalancer`      |
228 | proxy.clusterIP                    | k8s service clusterIP                                                                 |                     |
229 | proxy.loadBalancerSourceRanges     | Limit proxy access to CIDRs if set and service type is `LoadBalancer`                 | `[]`                |
230 | proxy.loadBalancerIP               | To reuse an existing ingress static IP for the admin service                          |                     |
231 | proxy.externalIPs                  | IPs for which nodes in the cluster will also accept traffic for the proxy             | `[]`                |
232 | proxy.externalTrafficPolicy        | k8s service's externalTrafficPolicy. Options: Cluster, Local                          |                     |
233 | proxy.ingress.enabled              | Enable ingress resource creation (works with proxy.type=ClusterIP)                    | `false`             |
234 | proxy.ingress.tls                  | Name of secret resource, containing TLS secret                                        |                     |
235 | proxy.ingress.hosts                | List of ingress hosts.                                                                | `[]`                |
236 | proxy.ingress.path                 | Ingress path.                                                                         | `/`                 |
237 | proxy.ingress.annotations          | Ingress annotations. See documentation for your ingress controller for details        | `{}`                |
238 | plugins                            | Install custom plugins into Kong via ConfigMaps or Secrets                            | `{}`                |
239 | env                                | Additional [Kong configurations](https://getkong.org/docs/latest/configuration/)      |                     |
240 | runMigrations                      | Run Kong migrations job                                                               | `true`              |
241 | waitImage.repository               | Image used to wait for database to become ready                                       | `busybox`           |
242 | waitImage.tag                      | Tag for image used to wait for database to become ready                               | `latest`            |
243 | waitImage.pullPolicy               | Wait image pull policy                                                                | `IfNotPresent`      |
244 | postgresql.enabled                 | Spin up a new postgres instance for Kong                                              | `false`             |
245 | dblessConfig.configMap             | Name of an existing ConfigMap containing the `kong.yml` file. This must have the key `kong.yml`.| `` |
246 | dblessConfig.config                | Yaml configuration file for the dbless (declarative) configuration of Kong | see in `values.yaml`    |
247
248 ### Ingress Controller Parameters
249
250 All of the following properties are nested under the `ingressController`
251 section of `values.yaml` file:
252
253 | Parameter                          | Description                                                                           | Default                                                                      |
254 | ---------------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
255 | enabled                            | Deploy the ingress controller, rbac and crd                                           | true                                                                         |
256 | replicaCount                       | Number of desired ingress controllers                                                 | 1                                                                            |
257 | image.repository                   | Docker image with the ingress controller                                              | kong-docker-kubernetes-ingress-controller.bintray.io/kong-ingress-controller |
258 | image.tag                          | Version of the ingress controller                                                     | 0.7.0                                                                        |
259 | readinessProbe                     | Kong ingress controllers readiness probe                                              |                                                                              |
260 | livenessProbe                      | Kong ingress controllers liveness probe                                               |                                                                              |
261 | env                                | Specify Kong Ingress Controller configuration via environment variables               |                                                                              |
262 | ingressClass                       | The ingress-class value for controller                                                | kong                                                                         |
263 | admissionWebhook.enabled           | Whether to enable the validating admission webhook                                    | false                                                                        |
264 | admissionWebhook.failurePolicy     | How unrecognized errors from the admission endpoint are handled (Ignore or Fail)      | Fail                                                                         |
265 | admissionWebhook.port              | The port the ingress controller will listen on for admission webhooks                 | 8080                                                                         |
266
267 For a complete list of all configuration values you can set in the 
268 `env` section, please read the Kong Ingress Controller's
269 [configuration document](https://github.com/Kong/kubernetes-ingress-controller/blob/master/docs/references/cli-arguments.md).
270
271 ### General Parameters
272
273 | Parameter                          | Description                                                                           | Default             |
274 | ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- |
275 | updateStrategy                     | update strategy for deployment                                                        | `{}`                |
276 | readinessProbe                     | Kong readiness probe                                                                  |                     |
277 | livenessProbe                      | Kong liveness probe                                                                   |                     |
278 | affinity                           | Node/pod affinities                                                                   |                     |
279 | nodeSelector                       | Node labels for pod assignment                                                        | `{}`                |
280 | podAnnotations                     | Annotations to add to each pod                                                        | `{}`                |
281 | resources                          | Pod resource requests & limits                                                        | `{}`                |
282 | tolerations                        | List of node taints to tolerate                                                       | `[]`                |
283 | podDisruptionBudget.enabled        | Enable PodDisruptionBudget for Kong                                                   | `false`             |
284 | podDisruptionBudget.maxUnavailable | Represents the minimum number of Pods that can be unavailable (integer or percentage) | `50%`               |
285 | podDisruptionBudget.minAvailable   | Represents the number of Pods that must be available (integer or percentage)          |                     |
286 | podSecurityPolicy.enabled          | Enable podSecurityPolicy for Kong                                                     | `false`             |
287 | serviceMonitor.enabled             | Create ServiceMonitor for Prometheus Operator                                         | false               |
288 | serviceMonitor.interval            | Scrapping interval                                                                    | 10s                 |
289 | serviceMonitor.namespace           | Where to create ServiceMonitor                                                        |                     |
290 | secretVolumes                      | Mount given secrets as a volume in Kong container to override default certs and keys. | `[]`                |
291 | serviceMonitor.labels              | ServiceMonito Labels                                                                  | {}                  |
292
293 #### The `env` section
294
295 The `env` section can be used to configured all properties of Kong.
296 Any key value put under this section translates to environment variables
297 used to control Kong's configuration. Every key is prefixed with `KONG_`
298 and upper-cased before setting the environment variable.
299
300 Furthermore, all `kong.env` parameters can also accept a mapping instead of a
301 value to ensure the parameters can be set through configmaps and secrets.
302
303 An example :
304
305 ```yaml
306 kong:
307   env:                       # load PG password from a secret dynamically
308      pg_user: kong
309      pg_password:
310        valueFrom:
311          secretKeyRef:
312             key: kong
313             name: postgres
314   nginx_worker_processes: "2"
315 ```
316
317 For complete list of Kong configurations please check the
318 [Kong configuration docs](https://docs.konghq.com/latest/configuration).
319
320 > **Tip**: You can use the default [values.yaml](values.yaml)
321
322 ##### Admin/Proxy listener override
323
324 If you specify `env.admin_listen` or `env.proxy_listen`, this chart will use
325 the value provided by you as opposed to constructing a listen variable
326 from fields like `proxy.http.containerPort` and `proxy.http.enabled`.
327 This allows you to be more prescriptive when defining listen directives.
328
329 **Note:** Overriding `env.proxy_listen` and `env.admin_listen` will
330 potentially cause `admin.containerPort`, `proxy.http.containerPort` and
331 `proxy.tls.containerPort` to become out of sync,
332 and therefore must be updated accordingly.
333
334 For example, updating to `env.proxy_listen: 0.0.0.0:4444, 0.0.0.0:4443 ssl`
335 will need `proxy.http.containerPort: 4444` and `proxy.tls.containerPort: 4443`
336 to be set in order for the service definition to work properly.
337
338 ## Kong Enterprise Parameters
339
340 ### Overview
341
342 Kong Enterprise requires some additional configuration not needed when using
343 Kong Open-Source. To use Kong Enterprise, at the minimum,
344 you need to do the following:
345
346 - set `enterprise.enabled` to `true` in `values.yaml` file
347 - Update values.yaml to use a Kong Enterprise image
348 - Satisfy the two  prerequsisites below for Enterprise License and
349   Enterprise Docker Registry
350
351 Once you have these set, it is possible to install Kong Enterprise,
352 but please make sure to review the below sections for other settings that
353 you should consider configuring before installing Kong.
354
355 Some of the more important configuration is grouped in sections
356 under the `.enterprise` key in values.yaml, though most enterprise-specific
357 configuration can be placed under the `.env` key.
358
359 ### Prerequisites
360
361 #### Kong Enterprise License
362
363 All Kong Enterprise deployments require a license. If you do not have a copy
364 of yours, please contact Kong Support. Once you have it, you will need to
365 store it in a Secret. Save your secret in a file named `license` (no extension)
366 and then create and inspect your secret:
367
368 ```bash
369 $ kubectl create secret generic kong-enterprise-license --from-file=./license
370 ```
371
372 Set the secret name in `values.yaml`, in the `.enterprise.license_secret` key.
373 Please ensure the above secret is created in the same namespace in which
374 Kong is going to be deployed.
375
376 #### Kong Enterprise Docker registry access
377
378 Next, we need to setup Docker credentials in order to allow Kubernetes
379 nodes to pull down Kong Enterprise Docker image, which is hosted as a private
380 repository.
381
382 As part of your sign up for Kong Enterprise, you should have received
383 credentials for these as well.
384
385 ```bash
386 $ kubectl create secret docker-registry kong-enterprise-docker \
387     --docker-server=kong-docker-kong-enterprise-k8s.bintray.io \
388     --docker-username=<your-username> \
389     --docker-password=<your-password>
390 secret/kong-enterprise-docker created
391 ```
392
393 Set the secret name in `values.yaml` in the `image.pullSecrets` section.
394 Again, Please ensure the above secret is created in the same namespace in which
395 Kong is going to be deployed.
396
397 ### Service location hints
398
399 Kong Enterprise add two GUIs, Kong Manager and the Kong Developer Portal, that
400 must know where other Kong services (namely the admin and files APIs) can be
401 accessed in order to function properly. Kong's default behavior for attempting
402 to locate these absent configuration is unlikely to work in common Kubernetes
403 environments. Because of this, you should set each of `admin_gui_url`,
404 `admin_api_uri`, `proxy_url`, `portal_api_url`, `portal_gui_host`, and
405 `portal_gui_protocol` under the `.env` key in values.yaml to locations where
406 each of their respective services can be accessed to ensure that Kong services
407 can locate one another and properly set CORS headers. See the
408 [Property Reference documentation](https://docs.konghq.com/enterprise/latest/property-reference/)
409 for more details on these settings.
410
411 ### RBAC
412
413 You can create a default RBAC superuser when initially setting up an
414 environment, by setting the `KONG_PASSWORD` environment variable on the initial
415 migration Job's Pod. This will create a `kong_admin` admin whose token and
416 basic-auth password match the value of `KONG_PASSWORD`.
417 You can create a secret holding the initial password value and then
418 mount the secret as an environment variable using the `env` section.
419
420 Note that RBAC is **NOT** currently enabled on the admin API container for the
421 controller Pod when the ingress controller is enabled. This admin API container
422 is not exposed outside the Pod, so only the controller can interact with it. We
423 intend to add RBAC to this container in the future after updating the controller
424 to add support for storing its RBAC token in a Secret, as currently it would
425 need to be stored in plaintext. RBAC is still enforced on the admin API of the
426 main deployment when using the ingress controller, as that admin API *is*
427 accessible outside the Pod.
428
429 ### Sessions
430
431 Login sessions for Kong Manager and the Developer Portal make use of
432 [the Kong Sessions plugin](https://docs.konghq.com/enterprise/latest/kong-manager/authentication/sessions).
433 Their configuration must be stored in Secrets, as it contains an HMAC key.
434 If using either RBAC or the Portal, create a Secret with `admin_gui_session_conf`
435 and `portal_session_conf` keys.
436
437 ```
438 $ cat admin_gui_session_conf
439 {"cookie_name":"admin_session","cookie_samesite":"off","secret":"admin-secret-CHANGEME","cookie_secure":true,"storage":"kong"}
440 $ cat portal_session_conf
441 {"cookie_name":"portal_session","cookie_samesite":"off","secret":"portal-secret-CHANGEME","cookie_secure":true,"storage":"kong"}
442 $ kubectl create secret generic kong-session-config --from-file=admin_gui_session_conf --from-file=portal_session_conf
443 secret/kong-session-config created
444 ```
445 The exact plugin settings may vary in your environment. The `secret` should
446 always be changed for both configurations.
447
448 After creating your secret, set its name in values.yaml, in the
449 `.enterprise.rbac.session_conf_secret` and
450 `.enterprise.portal.session_conf_secret` keys.
451
452 ### Email/SMTP
453
454 Email is used to send invitations for
455 [Kong Admins](https://docs.konghq.com/enterprise/latest/kong-manager/networking/email)
456 and [Developers](https://docs.konghq.com/enterprise/latest/developer-portal/configuration/smtp).
457
458 Email invitations rely on setting a number of SMTP settings at once. For
459 convenience, these are grouped under the `.enterprise.smtp` key in values.yaml.
460 Setting `.enterprise.smtp.disabled: true` will set `KONG_SMTP_MOCK=on` and
461 allow Admin/Developer invites to proceed without sending email. Note, however,
462 that these have limited functionality without sending email.
463
464 If your SMTP server requires authentication, you should the `username` and
465 `smtp_password_secret` keys under `.enterprise.smtp.auth`.
466 `smtp_password_secret` must be a Secret containing an `smtp_password` key whose
467 value is your SMTP password.
468
469 ## Changelog
470
471 ### 0.36.6
472
473 This version has no code changes and Kong's chart is now deprecated in this
474 repository. Please use Kong's official
475 [chart repository](https://github.com/kong/charts).
476
477 ### 0.36.5
478
479 > PR https://github.com/helm/charts/pull/20099
480
481 #### Improvements
482
483 - Allow `grpc` protocol for KongPlugins
484
485 ### 0.36.4
486
487 > PR https://github.com/helm/charts/pull/20051
488
489 #### Fixed
490
491 - Issue: [`Ingress Controller errors when chart is redeployed with Admission
492   Webhook enabled`](https://github.com/helm/charts/issues/20050)
493
494 ### 0.36.3
495
496 > PR https://github.com/helm/charts/pull/19992
497
498 #### Fixed
499
500 - Fix spacing in ServiceMonitor when label is specified in config
501
502 ### 0.36.2
503
504 > PR https://github.com/helm/charts/pull/19955
505
506 #### Fixed
507
508 - Set `sideEffects` and `admissionReviewVersions` for Admission Webhook
509 - timeouts for liveness and readiness probes has been changed from `1s` to `5s`
510
511 ### 0.36.1
512
513 > PR https://github.com/helm/charts/pull/19946
514
515 #### Fixed
516
517 - Added missing watch permission to custom resources
518
519 ### 0.36.0
520
521 > PR https://github.com/helm/charts/pull/19916
522
523 #### Upgrade Instructions
524
525 - When upgrading from <0.35.0, in-place chart upgrades will fail.
526   It is necessary to delete the helm release with `helm del --purge $RELEASE` and redeploy from scratch.
527   Note that this will cause downtime for the kong proxy. 
528
529 #### Improvements 
530
531 - Fixed Deployment's label selector that prevented in-place chart upgrades.
532
533 ### 0.35.1
534
535 > PR https://github.com/helm/charts/pull/19914
536
537 #### Improvements
538
539 - Update CRDs to Ingress Controller 0.7
540 - Optimize readiness and liveness probes for more responsive health checks
541 - Fixed incorrect space in NOTES.txt
542
543 ### 0.35.0
544
545 > PR [#19856](https://github.com/helm/charts/pull/19856)
546
547 #### Improvements
548
549 - Labels on all resources have been updated to adhere to the Helm Chart
550   guideline here:
551   https://v2.helm.sh/docs/developing_charts/#syncing-your-chart-repository
552
553 ### 0.34.2
554
555 > PR [#19854](https://github.com/helm/charts/pull/19854)
556
557 This release contains no user-visible changes
558
559 #### Under the hood
560
561  - Various tests have been consolidated to speed up CI.
562
563 ### 0.34.1
564
565 > PR [#19887](https://github.com/helm/charts/pull/19887)
566
567 #### Fixed
568
569 - Correct indentation for Job securityContexts.
570
571 ### 0.34.0
572
573 > PR [#19885](https://github.com/helm/charts/pull/19885)
574
575 #### New features
576
577 - Update default version of Ingress Controller to 0.7.0
578
579 ### 0.33.1
580
581 > PR [#19852](https://github.com/helm/charts/pull/19852)
582
583 #### Fixed
584
585 - Correct an issue with white space handling within `final_env` helper.
586
587 ### 0.33.0
588
589 > PR [#19840](https://github.com/helm/charts/pull/19840)
590
591 #### Dependencies
592
593 - Postgres sub-chart has been bumped up to 8.1.2
594
595 #### Fixed
596
597 - Removed podDisruption budge for Ingress Controller. Ingress Controller and
598   Kong run in the same pod so this was no longer applicable
599 - Migration job now receives the same environment variable and configuration
600   as that of the Kong pod.
601 - If Kong is configured to run with Postgres, the Kong pods now always wait
602   for Postgres to start. Previously this was done only when the sub-chart
603   Postgres was deployed.
604 - A hard-coded container name is used for kong: `proxy`. Previously this
605   was auto-generated by Helm. This deterministic naming allows for simpler
606   scripts and documentation.
607
608 #### Under the hood
609
610 Following changes have no end user visible effects:
611
612 - All Custom Resource Definitions have been consolidated into a single
613   template file
614 - All RBAC resources have been consolidated into a single template file
615 - `wait-for-postgres` container has been refactored and de-duplicated
616
617 ### 0.32.1
618
619 #### Improvements
620
621 - This is a doc only release. No code changes have been done.
622 - Post installation steps have been simplified and now point to a getting
623   started page
624 - Misc updates to README:
625   - Document missing variables
626   - Remove outdated variables
627   - Revamp and rewrite major portions of the README
628   - Added a table of content to make the content navigable
629
630 ### 0.32.0
631
632 #### Improvements
633
634 - Create and mount emptyDir volumes for `/tmp` and `/kong_prefix` to allow
635   for read-only root filesystem securityContexts and PodSecurityPolicys.
636 - Use read-only mounts for custom plugin volumes.
637 - Update stock PodSecurityPolicy to allow emptyDir access.
638 - Override the standard `/usr/local/kong` prefix to the mounted emptyDir
639   at `/kong_prefix` in `.Values.env`.
640 - Add securityContext injection points to template. By default,
641   it sets Kong pods to run with UID 1000.
642
643 #### Fixes
644
645 - Correct behavior for the Vitals toggle.
646   Vitals defaults to on in all current Kong Enterprise releases, and
647   the existing template only created the Vitals environment variable
648   if `.Values.enterprise.enabled == true`. Inverted template to create
649   it (and set it to "off") if that setting is instead disabled.
650 - Correct an issue where custom plugin configurations would block Kong
651   from starting.
652
653 ### 0.31.0
654
655 #### Breaking changes
656
657 - Admin Service is disabled by default (`admin.enabled`)
658 - Default for `proxy.type` has been changed to `LoadBalancer`
659
660 #### New features
661
662 - Update default version of Kong to 1.4
663 - Update default version of Ingress Controller to 0.6.2
664 - Add support to disable kong-admin service via `admin.enabled` flag.
665
666 ### 0.31.2
667
668 #### Fixes
669
670 - Do not remove white space between documents when rendering
671   `migrations-pre-upgrade.yaml`
672
673 ### 0.30.1
674
675 #### New Features
676
677 - Add support for specifying Proxy service ClusterIP
678
679 ### 0.30.0
680
681 #### Breaking changes
682
683 - `admin_gui_auth_conf_secret` is now required for Kong Manager
684   authentication methods other than `basic-auth`.
685   Users defining values for `admin_gui_auth_conf` should migrate them to
686   an externally-defined secret with a key of `admin_gui_auth_conf` and
687   reference the secret name in `admin_gui_auth_conf_secret`.
688
689 ### 0.29.0
690
691 #### New Features
692
693 - Add support for specifying Ingress Controller environment variables.
694
695 ### 0.28.0
696
697 #### New Features
698
699 - Added support for the Validating Admission Webhook with the Ingress Controller.
700
701 ### 0.27.2
702
703 #### Fixes
704
705 - Do not create a ServiceAccount if it is not necessary.
706 - If a configuration change requires creating a ServiceAccount,
707   create a temporary ServiceAccount to allow pre-upgrade tasks to
708   complete before the regular ServiceAccount is created.
709
710 ### 0.27.1
711
712 #### Documentation updates
713 - Retroactive changelog update for 0.24 breaking changes.
714
715 ### 0.27.0
716
717 #### Breaking changes
718
719 - DB-less mode is enabled by default.
720 - Kong is installed as an Ingress Controller for the cluster by default.
721
722 ### 0.25.0
723
724 #### New features
725
726 - Add support for PodSecurityPolicy
727 - Require creation of a ServiceAccount
728
729 ### 0.24.0
730
731 #### Breaking changes
732
733 - The configuration format for ingresses in values.yaml has changed. 
734 Previously, all ingresses accepted an array of hostnames, and would create
735 ingress rules for each. Ingress configuration for services other than the proxy
736 now accepts a single hostname, which allows simpler TLS configuration and
737 automatic population of `admin_api_uri` and similar settings. Configuration for
738 the proxy ingress is unchanged, but its documentation now accurately reflects
739 the TLS configuration needed.
740
741 ## Seeking help
742
743 If you run into an issue, bug or have a question, please reach out to the Kong
744 community via [Kong Nation](https://discuss.konghq.com).
745 Please do not open issues in [this](https://github.com/helm/charts) repository
746 as the maintainers will not be notified and won't respond.