github.com/nginxinc/kubernetes-ingress@v1.12.5/CHANGELOG.md (about)

     1  # Changelog
     2  
     3  ### 1.12.5
     4  
     5  An automatically generated list of changes can be found on Github at: [1.12.5 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.12.5)
     6  
     7  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
     8  
     9  ### 1.12.4
    10  
    11  An automatically generated list of changes can be found on Github at: [1.12.4 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.12.4)
    12  
    13  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    14  
    15  ### 1.12.3
    16  
    17  An automatically generated list of changes can be found on Github at: [1.12.3 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.12.3)
    18  
    19  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    20  
    21  ### 1.12.2
    22  
    23  An automatically generated list of changes can be found on Github at: [1.12.2 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.12.2)
    24  
    25  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    26  
    27  ### 1.12.1
    28  
    29  An automatically generated list of changes can be found on Github at: [1.12.1 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.12.1)
    30  
    31  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    32  
    33  ### 1.12.0
    34  
    35  An automatically generated list of changes can be found on Github at: [1.12.0 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.12.0)
    36  
    37  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    38  
    39  ### 1.11.3
    40  
    41  An automatically generated list of changes can be found on Github at: [1.11.3 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.11.3)
    42  
    43  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    44  
    45  ### 1.11.2
    46  
    47  An automatically generated list of changes can be found on Github at: [1.11.2 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.11.2)
    48  
    49  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    50  
    51  ### 1.11.1
    52  
    53  An automatically generated list of changes can be found on Github at: [1.11.1 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.11.1)
    54  
    55  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    56  
    57  ### 1.11.0
    58  
    59  An automatically generated list of changes can be found on Github at: [1.11.0 Release](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v1.11.0)
    60  
    61  A curated list of changes can be found in the [Releases](http://docs.nginx.com/nginx-ingress-controller/releases/) page on NGINX Documentation website.
    62  
    63  ### 1.10.1
    64  
    65  CHANGES:
    66  * Update NGINX version to 1.19.8.
    67  * Add Kubernetes 1.20 support.
    68  * [1373](https://github.com/nginxinc/kubernetes-ingress/pull/1373), [1439](https://github.com/nginxinc/kubernetes-ingress/pull/1439), [1440](https://github.com/nginxinc/kubernetes-ingress/pull/1440): Fix various issues in the Makefile. In 1.10.0, a bug was introduced that prevented building Ingress Controller images on versions of make < 4.1.
    69  
    70  HELM CHART:
    71  * The version of the Helm chart is now 0.8.1.
    72  
    73  UPGRADE:
    74  * For NGINX, use the 1.10.1 image from our DockerHub: `nginx/nginx-ingress:1.10.1`, `nginx/nginx-ingress:1.10.1-alpine` or `nginx/nginx-ingress:1.10.1-ubi`
    75  * For NGINX Plus, please build your own image using the 1.10.1 source code.
    76  * For Helm, use version 0.8.1 of the chart.
    77  
    78  ### 1.10.0
    79  
    80  OVERVIEW:
    81  
    82  Release 1.10.0 includes:
    83  * Open ID Connect authentication policy.
    84  * Improved handling of Secret resources with extended validation and error reporting.
    85  * Improved visibility with Prometheus metrics for the configuration workqueue and the ability to annotate NGINX logs with the metadata of Kubernetes resources.
    86  * NGINX App Protect User-Defined signatures support.
    87  * Improved validation of Ingress annotations.
    88  
    89  You will find the complete changelog for release 1.10.0, including bug fixes, improvements, and changes below.
    90  
    91  FEATURES FOR POLICY RESOURCE:
    92  * [1304](https://github.com/nginxinc/kubernetes-ingress/pull/1304) Add Open ID Connect policy.
    93  
    94  FEATURES FOR NGINX APP PROTECT:
    95  * [1281](https://github.com/nginxinc/kubernetes-ingress/pull/1281) Add support for App Protect User Defined Signatures.
    96  
    97  FEATURES:
    98  * [1266](https://github.com/nginxinc/kubernetes-ingress/pull/1266) Add workqueue metrics to Prometheus metrics.
    99  * [1233](https://github.com/nginxinc/kubernetes-ingress/pull/1233) Annotate tcp metrics with k8s object labels.
   100  * [1231](https://github.com/nginxinc/kubernetes-ingress/pull/1231) Support k8s objects variables in log format.
   101  
   102  IMPROVEMENTS:
   103  * [1270](https://github.com/nginxinc/kubernetes-ingress/pull/1270) and [1277](https://github.com/nginxinc/kubernetes-ingress/pull/1277) Improve validation of Ingress annotations.
   104  * [1265](https://github.com/nginxinc/kubernetes-ingress/pull/1265) Report warnings for misconfigured TLS and JWK secrets.
   105  * [1262](https://github.com/nginxinc/kubernetes-ingress/pull/1262) Use setcap(8) only once. [1263](https://github.com/nginxinc/kubernetes-ingress/pull/1263) Use chown(8) only once. [1264](https://github.com/nginxinc/kubernetes-ingress/pull/1264) Use mkdir(1) only once. Thanks to [Sergey A. Osokin](https://github.com/osokin).
   106  * [1256](https://github.com/nginxinc/kubernetes-ingress/pull/1256) and [1260](https://github.com/nginxinc/kubernetes-ingress/pull/1260) Improve handling of secret resources.
   107  * [1240](https://github.com/nginxinc/kubernetes-ingress/pull/1240) Validate TLS and CA secrets.
   108  * [1235](https://github.com/nginxinc/kubernetes-ingress/pull/1235) Use buildkit secret flag for NGINX plus images.
   109  * Documentation improvements: [1282](https://github.com/nginxinc/kubernetes-ingress/pull/1282), [1293](https://github.com/nginxinc/kubernetes-ingress/pull/1293), [1303](https://github.com/nginxinc/kubernetes-ingress/pull/1303), [1315](https://github.com/nginxinc/kubernetes-ingress/pull/1315).
   110  
   111  HELM CHART:
   112  * The version of the helm chart is now 0.8.0.
   113  * [1290](https://github.com/nginxinc/kubernetes-ingress/pull/1290) Add new preview policies parameter to chart. `controller.enablePreviewPolicies` was added.
   114  * [1232](https://github.com/nginxinc/kubernetes-ingress/pull/1232) Replace deprecated imagePullSecrets helm setting. `controller.serviceAccount.imagePullSecrets` was removed. `controller.serviceAccount.imagePullSecretName` was added.
   115  * [1228](https://github.com/nginxinc/kubernetes-ingress/pull/1228) Fix installation of ingressclass on Kubernetes versions `v1.18.x-*`
   116  
   117  CHANGES:
   118  * [1299](https://github.com/nginxinc/kubernetes-ingress/pull/1299) Update NGINX App Protect version to 2.3 and debian distribution to `debian:buster-slim`.
   119  * [1291](https://github.com/nginxinc/kubernetes-ingress/pull/1291) Update NGINX OSS to `1.19.6`. Update NGINX Plus to `R23`.
   120  * [1290](https://github.com/nginxinc/kubernetes-ingress/pull/1290) Graduate policy resource and accessControl policy to generally available.
   121  * [1225](https://github.com/nginxinc/kubernetes-ingress/pull/1225) Require secrets to have types.
   122  * [1237](https://github.com/nginxinc/kubernetes-ingress/pull/1237) Deprecate support for helm2 clients.
   123  
   124  UPGRADE:
   125  * For NGINX, use the 1.10.0 image from our DockerHub: `nginx/nginx-ingress:1.10.0`, `nginx/nginx-ingress:1.10.0-alpine` or `nginx-ingress:1.10.0-ubi`
   126  * For NGINX Plus, please build your own image using the 1.10.0 source code.
   127  * For Helm, use version 0.8.0 of the chart.
   128  * As a result of [1270](https://github.com/nginxinc/kubernetes-ingress/pull/1270) and [1277](https://github.com/nginxinc/kubernetes-ingress/pull/1277), the Ingress Controller improved validation of Ingress annotations: more annotations are validated and validation errors are reported via events for Ingress resources. Additionally, the default behavior for invalid annotation values was changed: instead of using the default values, the Ingress Controller will reject a resource with an invalid annotation value, which will make clients see `404` responses from NGINX. See this [document](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/#validation) to learn more. Before upgrading, ensure the Ingress resources don't have annotations with invalid values. Otherwise, after the upgrade, the Ingress Controller will reject such resources.
   129  * In [1232](https://github.com/nginxinc/kubernetes-ingress/pull/1232) `controller.serviceAccount.imagePullSecrets` was removed. Use the new `controller.serviceAccount.imagePullSecretName` instead.
   130  * The Policy resource was promoted to `v1`. If you used the `alpha1` version, the policies are needed to be recreated with the `v1` version. Before upgrading the Ingress Controller, run the following command to remove the `alpha1` policies CRD (that will also remove all existing `alpha1` policies):
   131      ```
   132       kubectl delete crd policies.k8s.nginx.org
   133      ```
   134    As part of the upgrade, make sure to create the `v1` policies CRD. See the corresponding instructions for the [manifests](https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/#create-custom-resources) and [Helm](https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-helm/#upgrading-the-crds) installations.
   135  
   136    Also note that all policies except for `accessControl` are still in preview. To enable them, run the Ingress Controller with `- -enable-preview-policies` command-line argument (`controller.enablePreviewPolicies` Helm parameter).
   137  * It is necessary to update secret resources. See the section UPDATING SECRETS below.
   138  
   139  UPDATING SECRETS:
   140  
   141  In [1225](https://github.com/nginxinc/kubernetes-ingress/pull/1225), as part of improving how the Ingress Controller handles secret resources, we added a requirement for secrets to be of one of the following types:
   142  - `kubernetes.io/tls` for TLS secrets.
   143  - `nginx.org/jwk` for JWK secrets.
   144  - `nginx.org/ca` for CA secrets.
   145  
   146  The Ingress Controller now ignores secrets that are not of a supported type. As a consequence, special upgrade steps are required.
   147  
   148  Before upgrading, ensure that the secrets referenced in Ingress, VirtualServer or Policies resources are of a supported type, which is configured via the `type` field. Because that field is immutable, it is necessary to either:
   149  * Recreate the secrets. Note that in this case, the client traffic for the affected resources will be rejected for the period during which a secret doesn't exist in the cluster.
   150  * Create copies of the secrets and update the affected resources to reference the copies. The copies need to be of a supported type. In contrast with the previous options, this will not make NGINX reject the client traffic.
   151  
   152  It is also necessary to update the default server secret and the wildcard secret (if it was configured) in case their type is not `kubernetes.io/tls`. The steps depend on how you installed the Ingress Controller: via manifests or Helm. Performing the steps will not lead to a disruption of the client traffic, as the Ingress Controller retains the default and wildcard secrets if they are removed.
   153  
   154  For *manifests installation*:
   155  1. Recreate the default server secret and the wildcard secret with the type `kubernetes.io/tls`.
   156  1. Upgrade the Ingress Controller.
   157  
   158  For *Helm installation*, there two cases:
   159  1. If Helm created the secrets (you configured `controller.defaultTLS.cert` and `controller.defaultTLS.key` for the default secret and `controller.wildcardTLS.cert` and `controller.wildcardTLS.key` for the wildcard secret), then no special upgrade steps are required: during the upgrade, the Helm will remove the existing default and wildcard secrets and create new ones with different names with the type `kubernetes.io/tls`.
   160  1.  If you created the secrets separately from Helm (you configured `controller.defaultTLS.secret` for the default secret and `controller.wildcardTLS.secret` for the wildcard secret):
   161      1. Recreate the secrets with the type `kubernetes.io/tls`.
   162      1. Upgrade to the new Helm release.
   163  
   164  NOTES:
   165  * Helm 2 clients are no longer supported due to reaching End of Life: https://helm.sh/blog/helm-2-becomes-unsupported/
   166  
   167  ### 1.9.1
   168  
   169  CHANGES:
   170  * Fix deployment of ingressclass resource via helm on some versions of Kubernetes.
   171  * Update the base ubi images to 8.3.
   172  * Renew CA cert for egress-mtls example.
   173  * Add imagePullSecretName support to helm chart.
   174  
   175  HELM CHART:
   176  * The version of the Helm chart is now 0.7.1.
   177  
   178  UPGRADE:
   179  * For NGINX, use the 1.9.1 image from our DockerHub: `nginx/nginx-ingress:1.9.1`, `nginx/nginx-ingress:1.9.1-alpine` or `nginx/nginx-ingress:1.9.1-ubi`
   180  * For NGINX Plus, please build your own image using the 1.9.1 source code.
   181  * For Helm, use version 0.7.1 of the chart.
   182  
   183  ### 1.9.0
   184  
   185  OVERVIEW:
   186  
   187  Release 1.9.0 includes:
   188  * Support for new Prometheus metrics and enhancements of the existing ones, including configuration reload reason, NGINX worker processes count, upstream latency, and more.
   189  * Support for rate limiting, JWT authentication, ingress(client) and egress(upstream) mutual TLS via the Policy resource.
   190  * Support for the latest Ingress resource features and the IngressClass resource.
   191  * Support for NGINX Service Mesh.
   192  
   193  You will find the complete changelog for release 1.9.0, including bug fixes, improvements, and changes below.
   194  
   195  FEATURES FOR POLICY RESOURCE:
   196  * [1180](https://github.com/nginxinc/kubernetes-ingress/pull/1180) Add support for EgressMTLS.
   197  * [1166](https://github.com/nginxinc/kubernetes-ingress/pull/1166) Add IngressMTLS policy support.
   198  * [1154](https://github.com/nginxinc/kubernetes-ingress/pull/1154) Add JWT policy support.
   199  * [1120](https://github.com/nginxinc/kubernetes-ingress/pull/1120) Add RateLimit policy support.
   200  * [1058](https://github.com/nginxinc/kubernetes-ingress/pull/1058) Support policies in VS routes and VSR subroutes.
   201  
   202  FEATURES FOR NGINX APP PROTECT:
   203  * [1147](https://github.com/nginxinc/kubernetes-ingress/pull/1147) Add option to specify other log destinations in AppProtect.
   204  * [1131](https://github.com/nginxinc/kubernetes-ingress/pull/1131) Update packages and CRDs to AppProtect 2.0. This update includes features such as: [JSON Schema Validation](https://docs.nginx.com/nginx-app-protect/configuration#applying-a-json-schema), [User-Defined URLs](https://docs.nginx.com/nginx-app-protect/configuration/#user-defined-urls) and [User-Defined Parameters](https://docs.nginx.com/nginx-app-protect/configuration/#user-defined-parameters). See the [release notes](https://docs.nginx.com/nginx-app-protect/releases/#release-2-0) for a complete feature list.
   205  * [1100](https://github.com/nginxinc/kubernetes-ingress/pull/1100) Add external references to AppProtect.
   206  * [1085](https://github.com/nginxinc/kubernetes-ingress/pull/1085) Add installation of threat campaigns package.
   207  
   208  FEATURES:
   209  * [1133](https://github.com/nginxinc/kubernetes-ingress/pull/1133) Add support for IngressClass resources.
   210  * [1130](https://github.com/nginxinc/kubernetes-ingress/pull/1130) Add prometheus latency collector.
   211  * [1076](https://github.com/nginxinc/kubernetes-ingress/pull/1076) Add prometheus worker process metrics.
   212  * [1075](https://github.com/nginxinc/kubernetes-ingress/pull/1075) Add support for NGINX Service Mesh internal routes.
   213  
   214  IMPROVEMENTS:
   215  * [1178](https://github.com/nginxinc/kubernetes-ingress/pull/1178) Resolve host collisions in VirtualServer and Ingresses.
   216  * [1158](https://github.com/nginxinc/kubernetes-ingress/pull/1158) Support variables in action proxy headers.
   217  * [1137](https://github.com/nginxinc/kubernetes-ingress/pull/1137) Add pod_owner label to metrics when -spire-agent-address is set.
   218  * [1107](https://github.com/nginxinc/kubernetes-ingress/pull/1107) Extend Upstream Servers with pod_name label.
   219  * [1099](https://github.com/nginxinc/kubernetes-ingress/pull/1099) Add reason label to total_reload metrics.
   220  * [1088](https://github.com/nginxinc/kubernetes-ingress/pull/1088) Extend Upstream Servers and Server Zones metrics, thanks to [Raúl](https://github.com/Rulox).
   221  * [1080](https://github.com/nginxinc/kubernetes-ingress/pull/1080) Support pathType field in the Ingress resource.
   222  * [1078](https://github.com/nginxinc/kubernetes-ingress/pull/1078) Remove trailing blank lines in vs/vsr snippets.
   223  * Documentation improvements: [1083](https://github.com/nginxinc/kubernetes-ingress/pull/1083), [1092](https://github.com/nginxinc/kubernetes-ingress/pull/1092), [1089](https://github.com/nginxinc/kubernetes-ingress/pull/1089), [1174](https://github.com/nginxinc/kubernetes-ingress/pull/1174), [1175](https://github.com/nginxinc/kubernetes-ingress/pull/1175), [1171](https://github.com/nginxinc/kubernetes-ingress/pull/1171).
   224  
   225  BUGFIXES:
   226  * [1179](https://github.com/nginxinc/kubernetes-ingress/pull/1179) Fix TransportServers in debian AppProtect image.
   227  * [1129](https://github.com/nginxinc/kubernetes-ingress/pull/1129) Support real-ip in default server.
   228  * [1110](https://github.com/nginxinc/kubernetes-ingress/pull/1110) Add missing threat campaigns key to AppProtect CRD.
   229  
   230  HELM CHART:
   231  * The version of the helm chart is now 0.7.0
   232  * [1105](https://github.com/nginxinc/kubernetes-ingress/pull/1105) Fix GlobalConfiguration support in helm chart.
   233  * Add new parameters to the Chart: `controller.setAsDefaultIngress`, `controller.enableLatencyMetrics`. Added in [1133](https://github.com/nginxinc/kubernetes-ingress/pull/1133) and [1148](https://github.com/nginxinc/kubernetes-ingress/pull/1148).
   234  
   235  CHANGES:
   236  * [1182](https://github.com/nginxinc/kubernetes-ingress/pull/1182) Update NGINX version to 1.19.3.
   237  
   238  UPGRADE:
   239  * For NGINX, use the 1.9.0 image from our DockerHub: `nginx/nginx-ingress:1.9.0`, `nginx/nginx-ingress:1.9.0-alpine` or `nginx-ingress:1.9.0-ubi`
   240  * For NGINX Plus, please build your own image using the 1.9.0 source code.
   241  * For Helm, use version 0.7.0 of the chart.
   242  
   243  For Kubernetes >= 1.18, when upgrading using the [manifests](https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/), make sure to update the [ClusterRole](deployments/rbac/rbac.yaml) and create the [IngressClass resource](deployments/common/ingress-class.yaml), which is required for Kubernetes >= 1.18. Otherwise, the Ingress Controller will fail to start. If you run multiple NGINX Ingress Controllers in the cluster, each Ingress Controller has to have its own IngressClass resource. As the `-use-ingress-class-only` argument is now ignored (see NOTES), make sure your Ingress resources have the `ingressClassName` field or the `kubernetes.io/ingress.class` annotation set to the name of the IngressClass resource. Otherwise, the Ingress Controller will ignore them.
   244  
   245  HELM UPGRADE:
   246  * If you're using custom resources like VirtualServer and TransportServer (`controller.enableCustomResources` is set to `true`), after you run the `helm upgrade` command, the CRDs will not be upgraded. After running the `helm upgrade` command, run `kubectl apply -f deployments/helm-chart/crds` to upgrade the CRDs.
   247  * For Kubernetes >= 1.18, a dedicated IngressClass resource, which is configured by `controller.ingressClass`, is required per helm release. Ensure `controller.ingressClass` is not set to the name of the IngressClass of other releases or Ingress Controllers. As the `controller.useIngressClassOnly` parameter is now ignored (see NOTES), make sure your Ingress resources have the `ingressClassName` field or the `kubernetes.io/ingress.class` annotation set to the value of `controller.ingressClass`. Otherwise, the Ingress Controller will ignore them.
   248  
   249  NOTES:
   250  * When using Kubernetes >= 1.18, the `-use-ingress-class-only` command-line argument is now ignored, and the Ingress Controller will only process resources that belong to its class. See [IngressClass doc](https://docs.nginx.com/nginx-ingress-controller/installation/running-multiple-ingress-controllers/#ingress-class) to learn more.
   251  * For Kubernetes >= 1.18, a dedicated IngressClass resource, which is configured by `controller.ingressClass`, is required per helm release. When upgrading or installing releases, ensure `controller.ingressClass` is not set to the name of the IngressClass of other releases or Ingress Controllers.
   252  
   253  ### 1.8.1
   254  
   255  CHANGES:
   256  * Update NGINX version to 1.19.2.
   257  
   258  HELM CHART:
   259  * The version of the Helm chart is now 0.6.1.
   260  
   261  UPGRADE:
   262  * For NGINX, use the 1.8.1 image from our DockerHub: `nginx/nginx-ingress:1.8.1`, `nginx/nginx-ingress:1.8.1-alpine` or `nginx/nginx-ingress:1.8.1-ubi`
   263  * For NGINX Plus, please build your own image using the 1.8.1 source code.
   264  * For Helm, use version 0.6.1 of the chart.
   265  
   266  
   267  ### 1.8.0
   268  
   269  OVERVIEW:
   270  
   271  Release 1.8.0 includes:
   272  * Support for NGINX App Protect Web Application Firewall.
   273  * Support for configuration snippets and custom template for VirtualServer and VirtualServerRoute resources.
   274  * Support for request/response header manipulation and request URI rewriting for VirtualServer/VirtualServerRoute.
   275  * Introducing a new configuration resource - Policy - with the first policy for IP-based access control.
   276  
   277  You will find the complete changelog for release 1.8.0, including bug fixes, improvements, and changes below.
   278  
   279  FEATURES FOR VIRTUALSERVER AND VIRTUALSERVERROUTE RESOURCES:
   280  * [1036](https://github.com/nginxinc/kubernetes-ingress/pull/1036): Add VirtualServer custom template support.
   281  * [1028](https://github.com/nginxinc/kubernetes-ingress/pull/1028): Add access control policy.
   282  * [1019](https://github.com/nginxinc/kubernetes-ingress/pull/1019): Add VirtualServer/VirtualServerRoute snippets support.
   283  * [1006](https://github.com/nginxinc/kubernetes-ingress/pull/1006): Add request/response modifiers to VS and VSR.
   284  * [994](https://github.com/nginxinc/kubernetes-ingress/pull/994): Support Class Field in VS/VSR.
   285  * [973](https://github.com/nginxinc/kubernetes-ingress/pull/973): Add status to VirtualServer and VirtualServerRoute.
   286  
   287  FEATURES:
   288  * [1035](https://github.com/nginxinc/kubernetes-ingress/pull/1035): Support for App Protect module.
   289  * [1029](https://github.com/nginxinc/kubernetes-ingress/pull/1029): Add readiness endpoint.
   290  
   291  IMPROVEMENTS:
   292  * [995](https://github.com/nginxinc/kubernetes-ingress/pull/995): Emit event for orphaned VirtualServerRoutes.
   293  * Documentation improvements: [946](https://github.com/nginxinc/kubernetes-ingress/pull/946) thanks to [谭九鼎](https://github.com/imba-tjd), [948](https://github.com/nginxinc/kubernetes-ingress/pull/948), [972](https://github.com/nginxinc/kubernetes-ingress/pull/972), [965](https://github.com/nginxinc/kubernetes-ingress/pull/965).
   294  
   295  BUGFIXES:
   296  * [1030](https://github.com/nginxinc/kubernetes-ingress/pull/1030): Fix port range validation in cli arguments.
   297  * [953](https://github.com/nginxinc/kubernetes-ingress/pull/953): Fix error logging of master/minion ingresses.
   298  
   299  HELM CHART:
   300  * The version of the helm chart is now 0.6.0.
   301  * Add new parameters to the Chart: `controller.appprotect.enable`, `controller.globalConfiguration.create`, `controller.globalConfiguration.spec`, `controller.readyStatus.enable`, `controller.readyStatus.port`, `controller.config.annotations`, `controller.reportIngressStatus.annotations`. Added in  [1035](https://github.com/nginxinc/kubernetes-ingress/pull/1035), [1034](https://github.com/nginxinc/kubernetes-ingress/pull/1034), [1029](https://github.com/nginxinc/kubernetes-ingress/pull/1029), [1003](https://github.com/nginxinc/kubernetes-ingress/pull/1003) thanks to [RubyLangdon](https://github.com/RubyLangdon).
   302  * [1047](https://github.com/nginxinc/kubernetes-ingress/pull/1047) and [1009](https://github.com/nginxinc/kubernetes-ingress/pull/1009): Change how Helm manages the custom resource defintions (CRDs) to support installing multiple Ingress Controller releases. **Note**: If you're using the custom resources (`controller.enableCustomResources` is set to `true`), this is a breaking change. See the HELM UPGRADE section below for the upgrade instructions.
   303  
   304  CHANGES:
   305  * Update NGINX version to 1.19.1.
   306  * Update NGINX Plus to R22.
   307  * [1029](https://github.com/nginxinc/kubernetes-ingress/pull/1029): Add readiness endpoint. The Ingress Controller now exposes a readiness endpoint on port `8081` and the path `/nginx-ready`. The endpoint returns a `200` response after the Ingress Controller finishes the initial configuration of NGINX at the start. The pod template was updated to use that endpoint in a readiness probe.
   308  * [980](https://github.com/nginxinc/kubernetes-ingress/pull/980): Enable leader election by default.
   309  
   310  UPGRADE:
   311  * For NGINX, use the 1.8.0 image from our DockerHub: `nginx/nginx-ingress:1.8.0`, `nginx/nginx-ingress:1.8.0-alpine` or `nginx-ingress:1.8.0-ubi`
   312  * For NGINX Plus, please build your own image using the 1.8.0 source code.
   313  * For Helm, use version 0.6.0 of the chart.
   314  
   315  HELM UPGRADE:
   316  
   317  If you're using custom resources like VirtualServer and TransportServer (`controller.enableCustomResources` is set to `true`), after you run the `helm upgrade` command, the CRDs and the corresponding custom resources will be removed from the cluster. Before upgrading, make sure to back up the custom resources. After running the `helm upgrade` command, run `kubectl apply -f deployments/helm-chart/crds` to re-install the CRDs and then restore the custom resources.
   318  
   319  NOTES:
   320  * As part of installing a release, Helm will install the CRDs unless that step is disabled (see the [corresponding doc](https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-helm/)). The installed CRDs include the CRDs for all Ingress Controller features, including the ones disabled by default (like App Protect with `aplogconfs.appprotect.f5.com` and `appolicies.appprotect.f5.com` CRDs).
   321  
   322  ### 1.7.2
   323  
   324  CHANGES:
   325  * Update NGINX Plus version to R22.
   326  
   327  HELM CHART:
   328  * The version of the Helm chart is now 0.5.2.
   329  
   330  UPGRADE:
   331  * For NGINX, use the 1.7.2 image from our DockerHub: `nginx/nginx-ingress:1.7.2`, `nginx/nginx-ingress:1.7.2-alpine` or `nginx/nginx-ingress:1.7.2-ubi`
   332  * For NGINX Plus, please build your own image using the 1.7.2 source code.
   333  * For Helm, use version 0.5.2 of the chart.
   334  
   335  ### 1.7.1
   336  
   337  CHANGES:
   338  * Update NGINX version to 1.19.0.
   339  
   340  HELM CHART:
   341  * The version of the Helm chart is now 0.5.1.
   342  
   343  UPGRADE:
   344  * For NGINX, use the 1.7.1 image from our DockerHub: `nginx/nginx-ingress:1.7.1`, `nginx/nginx-ingress:1.7.1-alpine` or `nginx/nginx-ingress:1.7.1-ubi`
   345  * For NGINX Plus, please build your own image using the 1.7.1 source code.
   346  * For Helm, use version 0.5.1 of the chart.
   347  
   348  ### 1.7.0
   349  
   350  OVERVIEW:
   351  
   352  Release 1.7.0 includes:
   353  * Support for TCP, UDP, and TLS Passthrough load balancing with the new configuration resources: TransportServer and GlobalConfiguration. The resources allow users to deliver complex, non-HTTP-based applications from Kubernetes using the NGINX Ingress Controller.
   354  * Support for error pages in VirtualServer and VirtualServerRoute resources. A user can now specify custom error responses for errors returned by backend applications or generated by NGINX, such as a 502 response.
   355  * Improved validation of VirtualServer and VirtualServerRoute resources. kubectl and the Kubernetes API server can now detect violations of the structure of VirtualServer/VirtualServerRoute resources and return an error.
   356  * Support for an operator which manages the lifecycle of the Ingress Controller on Kubernetes or OpenShift. See the [NGINX Ingress Operator GitHub repo](https://github.com/nginxinc/nginx-ingress-operator).
   357  
   358  See the [1.7.0 release announcement blog post](https://www.nginx.com/blog/announcing-nginx-ingress-controller-for-kubernetes-release-1-7-0/), which includes an overview of each feature.
   359  
   360  You will find the complete changelog for release 1.7.0, including bug fixes, improvements, and changes below.
   361  
   362  FEATURES FOR VIRTUALSERVER AND VIRTUALSERVERROUTE RESOURCES:
   363  * [868](https://github.com/nginxinc/kubernetes-ingress/pull/868): Add OpenAPI CRD schema validation.
   364  * [847](https://github.com/nginxinc/kubernetes-ingress/pull/847): Add support for error pages for VS/VSR.
   365  
   366  FEATURES:
   367  * [902](https://github.com/nginxinc/kubernetes-ingress/pull/902): Add TransportServer and GlobalConfiguration Resources.
   368  * [894](https://github.com/nginxinc/kubernetes-ingress/pull/894): Add Dockerfile for NGINX Open Source for Openshift.
   369  * [857](https://github.com/nginxinc/kubernetes-ingress/pull/857): Add Openshift Dockerfile for NGINX Plus.
   370  * [852](https://github.com/nginxinc/kubernetes-ingress/pull/852): Add default-server-access-log-off to configmap.
   371  * [845](https://github.com/nginxinc/kubernetes-ingress/pull/845): Add log-format-escaping and stream-log-format-escaping configmap keys. Thanks to [Alexey Maslov](https://github.com/alxmsl).
   372  * [827](https://github.com/nginxinc/kubernetes-ingress/pull/827): Add ingress class label to all Prometheus metrics.
   373  
   374  
   375  IMPROVEMENTS:
   376  * [850](https://github.com/nginxinc/kubernetes-ingress/pull/850): Extend redirect URI validation with protocol check in VS/VSR.
   377  * [832](https://github.com/nginxinc/kubernetes-ingress/pull/832): Update the examples to run the `nginxdemos/nginx-hello:plain-text` image, that doesn't require root user.
   378  * [825](https://github.com/nginxinc/kubernetes-ingress/pull/825): Add multi-stage docker builds.
   379  
   380  BUGFIXES:
   381  * [828](https://github.com/nginxinc/kubernetes-ingress/pull/828): Fix error messages for actions of the type return.
   382  
   383  HELM CHART:
   384  * The version of the helm chart is now 0.5.0.
   385  * Add new parameters to the Chart: `controller.enableTLSPassthrough`, `controller.volumes`, `controller.volumeMounts`, `controller.priorityClassName`. Added in [921](https://github.com/nginxinc/kubernetes-ingress/pull/921), [878](https://github.com/nginxinc/kubernetes-ingress/pull/878), [807](https://github.com/nginxinc/kubernetes-ingress/pull/807) thanks to [Greg Snow](https://github.com/gsnegovskiy).
   386  
   387  CHANGES:
   388  * Update NGINX version to 1.17.10.
   389  * Update NGINX Plus to R21.
   390  * [854](https://github.com/nginxinc/kubernetes-ingress/pull/854): Update the Debian base images for NGINX Plus to `debian:buster-slim`.
   391  * [852](https://github.com/nginxinc/kubernetes-ingress/pull/852): Add default-server-access-log-off to configmap. The access logs for the default server are now enabled by default.
   392  * [847](https://github.com/nginxinc/kubernetes-ingress/pull/847): Add support for error pages for VS/VSR. The PR affects how the Ingress Controller generates configuration for VirtualServer and VirtualServerRoutes. See [this comment](https://github.com/nginxinc/kubernetes-ingress/pull/847) for more details.
   393  * [827](https://github.com/nginxinc/kubernetes-ingress/pull/827): Add ingress class label to all Prometheus metrics. Every Prometheus metric exposed by the Ingress Controller now includes the label `class` with the value of the Ingress Controller class (by default `nginx`),
   394  * [825](https://github.com/nginxinc/kubernetes-ingress/pull/825): Add multi-stage docker builds. When building the Ingress Controller image in Docker, we now use a multi-stage docker build.
   395  
   396  UPGRADE:
   397  * For NGINX, use the 1.7.0 image from our DockerHub: `nginx/nginx-ingress:1.7.0`, `nginx/nginx-ingress:1.7.0-alpine` or `nginx-ingress:1.7.0-ubi`
   398  * For NGINX Plus, please build your own image using the 1.7.0 source code.
   399  * For Helm, use version 0.5.0 of the chart.
   400  
   401  When upgrading using the [manifests](https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/), make sure to deploy the new TransportServer CRD (`common/ts-definition.yaml`), as it is required by the Ingress Controller. Otherwise, you will get error messages in the Ingress Controller logs.
   402  
   403  ### 1.6.3
   404  
   405  CHANGES:
   406  * Update NGINX version to 1.17.9.
   407  
   408  HELM CHART:
   409  * The version of the Helm chart is now 0.4.3.
   410  
   411  UPGRADE:
   412  * For NGINX, use the 1.6.3 image from our DockerHub: `nginx/nginx-ingress:1.6.3` or `nginx/nginx-ingress:1.6.3-alpine`
   413  * For NGINX Plus, please build your own image using the 1.6.3 source code.
   414  * For Helm, use version 0.4.3 of the chart.
   415  
   416  ### 1.6.2
   417  
   418  CHANGES:
   419  * Update NGINX version to 1.17.8.
   420  
   421  HELM CHART:
   422  * The version of the Helm chart is now 0.4.2.
   423  
   424  UPGRADE:
   425  * For NGINX, use the 1.6.2 image from our DockerHub: `nginx/nginx-ingress:1.6.2` or `nginx/nginx-ingress:1.6.2-alpine`
   426  * For NGINX Plus, please build your own image using the 1.6.2 source code.
   427  * For Helm, use version 0.4.2 of the chart.
   428  
   429  ### 1.6.1
   430  
   431  CHANGES:
   432  * Update NGINX version to 1.17.7.
   433  
   434  HELM CHART:
   435  * The version of the Helm chart is now 0.4.1.
   436  
   437  UPGRADE:
   438  * For NGINX, use the 1.6.1 image from our DockerHub: `nginx/nginx-ingress:1.6.1` or `nginx/nginx-ingress:1.6.1-alpine`
   439  * For NGINX Plus, please build your own image using the 1.6.1 source code.
   440  * For Helm, use version 0.4.1 of the chart.
   441  
   442  ### 1.6.0
   443  
   444  OVERVIEW:
   445  
   446  Release 1.6.0 includes:
   447  * Improvements to VirtualServer and VirtualServerRoute resources, adding support for richer load balancing behavior, more sophisticated request routing, redirects, direct responses, and blue-green and circuit breaker patterns. The VirtualServer and VirtualServerRoute resources are enabled by default and are ready for production use.
   448  * Support for OpenTracing, helping you to monitor and debug complex transactions.
   449  * An improved security posture, with support to run the Ingress Controller as a non-root user.
   450  
   451  The release announcement blog post includes the overview for each feature. See https://www.nginx.com/blog/announcing-nginx-ingress-controller-for-kubernetes-release-1-6-0/
   452  
   453  You will find the complete changelog for release 1.6.0, including bug fixes, improvements, and changes below.
   454  
   455  FEATURES FOR VIRTUALSERVER AND VIRTUALSERVERROUTE RESOURCES:
   456  * [780](https://github.com/nginxinc/kubernetes-ingress/pull/780): Add support for canned responses to VS/VSR.
   457  * [778](https://github.com/nginxinc/kubernetes-ingress/pull/778): Add redirect support in VS/VSR.
   458  * [766](https://github.com/nginxinc/kubernetes-ingress/pull/766): Add exact matches and regex support to location paths in VS/VSR.
   459  * [748](https://github.com/nginxinc/kubernetes-ingress/pull/748): Add TLS redirect support in Virtualserver.
   460  * [745](https://github.com/nginxinc/kubernetes-ingress/pull/745): Improve routing rules in VS/VSR
   461  * [728](https://github.com/nginxinc/kubernetes-ingress/pull/728): Add session persistence in VS/VSR.
   462  * [724](https://github.com/nginxinc/kubernetes-ingress/pull/724): Add VS/VSR Prometheus metrics.
   463  * [712](https://github.com/nginxinc/kubernetes-ingress/pull/712): Add service subselector support in vs/vsr.
   464  * [707](https://github.com/nginxinc/kubernetes-ingress/pull/707): Emit warning events in VS/VSR.
   465  * [701](https://github.com/nginxinc/kubernetes-ingress/pull/701): Add support queue in upstreams for plus in VS/VSR.
   466  * [693](https://github.com/nginxinc/kubernetes-ingress/pull/693): Add ServerStatusZones support in vs/vsr.
   467  * [670](https://github.com/nginxinc/kubernetes-ingress/pull/670): Add buffering support for vs/vsr.
   468  * [660](https://github.com/nginxinc/kubernetes-ingress/pull/660): Add ClientBodyMaxSize support in vs/vsr.
   469  * [659](https://github.com/nginxinc/kubernetes-ingress/pull/659): Support configuring upstream zone sizes in VS/VSR.
   470  * [655](https://github.com/nginxinc/kubernetes-ingress/pull/655): Add slow-start support in vs/vsr.
   471  * [653](https://github.com/nginxinc/kubernetes-ingress/pull/653): Add websockets support for vs/vsr upstreams.
   472  * [641](https://github.com/nginxinc/kubernetes-ingress/pull/641): Add support for ExternalName Services for vs/vsr.
   473  * [635](https://github.com/nginxinc/kubernetes-ingress/pull/635): Add HealthChecks support for vs/vsr.
   474  * [634](https://github.com/nginxinc/kubernetes-ingress/pull/634): Add Active Connections support to vs/vsr.
   475  * [628](https://github.com/nginxinc/kubernetes-ingress/pull/628): Add retries support for vs/vsr.
   476  * [621](https://github.com/nginxinc/kubernetes-ingress/pull/621): Add TLS support for vs/vsr upstreams.
   477  * [617](https://github.com/nginxinc/kubernetes-ingress/pull/617): Add keepalive support to vs/vsr.
   478  * [612](https://github.com/nginxinc/kubernetes-ingress/pull/612): Add timeouts support to vs/vsr.
   479  * [607](https://github.com/nginxinc/kubernetes-ingress/pull/607): Add fail-timeout and max-fails support to vs/vsr.
   480  * [596](https://github.com/nginxinc/kubernetes-ingress/pull/596): Add lb-method support in vs and vsr.
   481  
   482  FEATURES:
   483  * [750](https://github.com/nginxinc/kubernetes-ingress/pull/750): Add support for health status uri customisation.
   484  * [691](https://github.com/nginxinc/kubernetes-ingress/pull/691): Helper Functions for custom annotations.
   485  * [631](https://github.com/nginxinc/kubernetes-ingress/pull/631): Add max_conns support for NGINX plus.
   486  * [629](https://github.com/nginxinc/kubernetes-ingress/pull/629): Added upstream zone directive annotation. Thanks to [Victor Regalado](https://github.com/vrrs).
   487  * [616](https://github.com/nginxinc/kubernetes-ingress/pull/616): Add proxy-send-timeout to configmap key and annotation.
   488  * [615](https://github.com/nginxinc/kubernetes-ingress/pull/615): Add support for Opentracing.
   489  * [614](https://github.com/nginxinc/kubernetes-ingress/pull/614): Add max-conns annotation. Thanks to [Victor Regalado](https://github.com/vrrs).
   490  
   491  
   492  IMPROVEMENTS:
   493  * [678](https://github.com/nginxinc/kubernetes-ingress/pull/678): Increase defaults for server-names-hash-max-size and servers-names-hash-bucket-size ConfigMap keys.
   494  * [694](https://github.com/nginxinc/kubernetes-ingress/pull/694): Reject VS/VSR resources with enabled plus features for OSS.
   495  * Documentation improvements: [713](https://github.com/nginxinc/kubernetes-ingress/pull/713) thanks to [Matthew Wahner](https://github.com/mattwahner).
   496  
   497  BUGFIXES:
   498  * [788](https://github.com/nginxinc/kubernetes-ingress/pull/788): Fix VSR updates when namespace is set implicitly.
   499  * [736](https://github.com/nginxinc/kubernetes-ingress/pull/736): Init Ingress labeled metrics on start.
   500  * [686](https://github.com/nginxinc/kubernetes-ingress/pull/686): Check if config map created for leader-election.
   501  * [664](https://github.com/nginxinc/kubernetes-ingress/pull/664): Fix reporting events for Ingress minions.
   502  * [632](https://github.com/nginxinc/kubernetes-ingress/pull/632): Fix hsts support when not using SSL. Thanks to [Martín Fernández](https://github.com/bilby91).
   503  
   504  HELM CHART:
   505  * The version of the helm chart is now 0.4.0.
   506  * Add new parameters to the Chart: `controller.healthCheckURI`, `controller.resources`, `controller.logLevel`, `controller.customPorts`, `controller.service.customPorts`. Added in [750](https://github.com/nginxinc/kubernetes-ingress/pull/750), [636](https://github.com/nginxinc/kubernetes-ingress/pull/636) thanks to [Guilherme Oki](https://github.com/guilhermeoki), [600](https://github.com/nginxinc/kubernetes-ingress/pull/600), [581](https://github.com/nginxinc/kubernetes-ingress/pull/581) thanks to [Alex Meijer](https://github.com/ameijer-corsha).
   507  * [722](https://github.com/nginxinc/kubernetes-ingress/pull/722): Fix trailing leader election cm when using helm. This change might lead to a failed upgrade. See the helm upgrade instruction below.
   508  * [573](https://github.com/nginxinc/kubernetes-ingress/pull/573): Use Controller name value for app selectors.
   509  
   510  CHANGES:
   511  * Update NGINX versions to 1.17.6.
   512  * Update NGINX Plus version to R20.
   513  * [799](https://github.com/nginxinc/kubernetes-ingress/pull/779): Enable CRDs by default. VirtualServer and VirtualServerRoute resources are now enabled by default.
   514  * [772](https://github.com/nginxinc/kubernetes-ingress/pull/772): Update VS/VSR version from v1alpha1 to v1. Make sure to update the `apiVersion` of your VirtualServer and VirtualServerRoute resources.
   515  * [748](https://github.com/nginxinc/kubernetes-ingress/pull/748): Add TLS redirect support in VirtualServer. The `redirect-to-https` and `ssl-redirect` ConfigMap keys no longer have any effect on generated configs for VirtualServer resources.
   516  * [745](https://github.com/nginxinc/kubernetes-ingress/pull/745): Improve routing rules. Update the spec of VirtualServer and VirtualServerRoute accordingly. See YAML examples of the changes [here](https://github.com/nginxinc/kubernetes-ingress/pull/745).
   517  * [710](https://github.com/nginxinc/kubernetes-ingress/pull/710): Run IC as non-root. Make sure to use the updated manifests to install/upgrade the Ingress Controller.
   518  * [603](https://github.com/nginxinc/kubernetes-ingress/pull/603): Update apiVersion in Deployments and DaemonSets to apps/v1.
   519  
   520  UPGRADE:
   521  * For NGINX, use the 1.6.0 image from our DockerHub: `nginx/nginx-ingress:1.6.0` or `nginx/nginx-ingress:1.6.0-alpine`
   522  * For NGINX Plus, please build your own image using the 1.6.0 source code.
   523  * For Helm, use version 0.4.0 of the chart.
   524  
   525  HELM UPGRADE:
   526  
   527  If leader election (the `controller.reportIngressStatus.enableLeaderElection` parameter) is enabled, when upgrading to the new version of the Helm chart:
   528  1. Make sure to specify a new ConfigMap lock name (`controller.reportIngressStatus.leaderElectionLockName`) different from the one that was created by the current version. To find out the current name, check ConfigMap resources in the namespace where the Ingress Controller is running.
   529  1. After the upgrade, delete the old ConfigMap.
   530  
   531  Otherwise, the helm upgrade will not succeed.
   532  
   533  ### 1.5.8
   534  
   535  CHANGES:
   536  * Update NGINX version to 1.17.6.
   537  * Update deployment and daemonset manifests to apps/v1.
   538  
   539  HELM CHART:
   540  * The version of the Helm chart is now 0.3.8.
   541  
   542  UPGRADE:
   543  * For NGINX, use the 1.5.8 image from our DockerHub: `nginx/nginx-ingress:1.5.8` or `nginx/nginx-ingress:1.5.8-alpine`
   544  * For NGINX Plus, please build your own image using the 1.5.8 source code.
   545  * For Helm, use version 0.3.8 of the chart.
   546  
   547  ### 1.5.7
   548  
   549  CHANGES:
   550  * Update NGINX version to 1.17.5.
   551  
   552  HELM CHART:
   553  * The version of the Helm chart is now 0.3.7.
   554  
   555  UPGRADE:
   556  * For NGINX, use the 1.5.7 image from our DockerHub: `nginx/nginx-ingress:1.5.7` or `nginx/nginx-ingress:1.5.7-alpine`
   557  * For NGINX Plus, please build your own image using the 1.5.7 source code.
   558  * For Helm, use version 0.3.7 of the chart.
   559  
   560  ### 1.5.6
   561  
   562  CHANGES:
   563  * Update NGINX version to 1.17.4.
   564  
   565  HELM CHART:
   566  * The version of the Helm chart is now 0.3.6.
   567  
   568  UPGRADE:
   569  * For NGINX, use the 1.5.6 image from our DockerHub: `nginx/nginx-ingress:1.5.6` or `nginx/nginx-ingress:1.5.6-alpine`
   570  * For NGINX Plus, please build your own image using the 1.5.6 source code.
   571  * For Helm, use version 0.3.6 of the chart.
   572  
   573  ### 1.5.5
   574  
   575  CHANGES:
   576  * Update NGINX Plus version to R19.
   577  
   578  HELM CHART:
   579  * The version of the Helm chart is now 0.3.5.
   580  
   581  UPGRADE:
   582  * For NGINX, use the 1.5.5 image from our DockerHub: `nginx/nginx-ingress:1.5.5` or `nginx/nginx-ingress:1.5.5-alpine`
   583  * For NGINX Plus, please build your own image using the 1.5.5 source code.
   584  * For Helm, use version 0.3.5 of the chart.
   585  
   586  ### 1.5.4
   587  
   588  CHANGES:
   589  * Update NGINX version to 1.17.3.
   590  
   591  HELM CHART:
   592  * The version of the Helm chart is now 0.3.4.
   593  
   594  UPGRADE:
   595  * For NGINX, use the 1.5.4 image from our DockerHub: `nginx/nginx-ingress:1.5.4` or `nginx/nginx-ingress:1.5.4-alpine`
   596  * For NGINX Plus, please build your own image using the 1.5.4 source code.
   597  * For Helm, use version 0.3.4 of the chart.
   598  
   599  ### 1.5.3
   600  
   601  CHANGES:
   602  * Update NGINX Plus version to R18p1.
   603  
   604  HELM CHART:
   605  * The version of the Helm chart is now 0.3.3.
   606  
   607  UPGRADE:
   608  * For NGINX, use the 1.5.3 image from our DockerHub: `nginx/nginx-ingress:1.5.3` or `nginx/nginx-ingress:1.5.3-alpine`
   609  * For NGINX Plus, please build your own image using the 1.5.3 source code.
   610  * For Helm, use version 0.3.3 of the chart.
   611  
   612  ### 1.5.2
   613  
   614  CHANGES:
   615  * Update NGINX version to 1.17.2.
   616  
   617  HELM CHART:
   618  * The version of the Helm chart is now 0.3.2.
   619  
   620  UPGRADE:
   621  * For NGINX, use the 1.5.2 image from our DockerHub: `nginx/nginx-ingress:1.5.2` or `nginx/nginx-ingress:1.5.2-alpine`
   622  * For NGINX Plus, please build your own image using the 1.5.2 source code.
   623  * For Helm, use version 0.3.2 of the chart.
   624  
   625  ### 1.5.1
   626  
   627  CHANGES:
   628  * Update NGINX version to 1.17.1.
   629  
   630  HELM CHART:
   631  * The version of the Helm chart is now 0.3.1.
   632  * [593](https://github.com/nginxinc/kubernetes-ingress/pull/593): Fix the selector in the Ingress Controller service when the `controller.name` parameter is set. This introduces a change, see the HELM UPGRADE section.
   633  
   634  UPGRADE:
   635  * For NGINX, use the 1.5.1 image from our DockerHub: `nginx/nginx-ingress:1.5.1` or `nginx/nginx-ingress:1.5.1-alpine`
   636  * For NGINX Plus, please build your own image using the 1.5.1 source code.
   637  * For Helm, use version 0.3.1 of the chart.
   638  
   639  HELM UPGRADE:
   640  
   641  In the changelog of Release 1.5.0, we advised not to upgrade the helm chart from `0.2.1` to `0.3.0` unless the mentioned in the changelog problems were acceptable. This release we provide mitigation instructions on how to upgrade from `0.2.1` to `0.3.1` without disruptions.
   642  
   643  When you upgrade from `0.2.1` to `0.3.1`, make sure to configure the following parameters:
   644  * `controller.name` is set to `nginx-ingress` or the previously used value in case you customized it. This ensures the Deployment/Daemonset will not be recreated.
   645  * `controller.service.name` is set to `nginx-ingress`. This ensures the service will not be recreated.
   646  * `controller.config.name` is set to `nginx-config`. This ensures the ConfigMap will not be recreated.
   647  
   648  Upgrading from `0.3.0` to `0.3.1`: Upgrading is not affected unless you customized `controller.name`. In that case, because of the fix [593](https://github.com/nginxinc/kubernetes-ingress/pull/593), the upgraded service will have a new selector, and the upgraded pod spec will have a new label. As a result, during an upgrade, the old pods will be immediately excluded from the service. Also, for the Deployment, the old pods will not terminate but continue to run. To terminate the old pods, manually remove the corresponding ReplicaSet.
   649  
   650  ### 1.5.0
   651  
   652  FEATURES:
   653  * [560](https://github.com/nginxinc/kubernetes-ingress/pull/560): Add new configuration resources -- VirtualServer and VirtualServerRoute.
   654  * [554](https://github.com/nginxinc/kubernetes-ingress/pull/554): Add new Prometheus metrics related to the Ingress Controller's operation (as opposed to NGINX/NGINX Plus metrics).
   655  * [496](https://github.com/nginxinc/kubernetes-ingress/pull/496): Support a wildcard TLS certificate for TLS-enabled Ingress resources.
   656  * [485](https://github.com/nginxinc/kubernetes-ingress/pull/485): Support ExternalName services in Ingress backends.
   657  
   658  IMPROVEMENTS:
   659  * Add new ConfigMap keys: `keepalive-timeout`, `keepalive-requests`, `access-log-off`, `variables-hash-bucket-size`, `variables-hash-max-size`. Added in [565](https://github.com/nginxinc/kubernetes-ingress/pull/565), [511](https://github.com/nginxinc/kubernetes-ingress/pull/511).
   660  * [504](https://github.com/nginxinc/kubernetes-ingress/pull/504): Run the Prometheus exporter inside the Ingress Controller process instead of a sidecar container.
   661  
   662  BUGFIXES:
   663  * [520](https://github.com/nginxinc/kubernetes-ingress/pull/520): Fix the type of the Prometheus port annotation in manifests.
   664  * [481](https://github.com/nginxinc/kubernetes-ingress/pull/481): Fix the HSTS support.
   665  * [439](https://github.com/nginxinc/kubernetes-ingress/pull/439): Fix the validation of the `lb-method` ConfigMap key and `nginx.org/lb-method` annotation.
   666  
   667  HELM CHART:
   668  * The version of the helm chart is now 0.3.0.
   669  * The helm chart is now available in our helm chart repo `helm.nginx.com/stable`.
   670  * Add new parameters to the Chart: `controller.service.httpPort.targetPort`, `controller.service.httpsPort.targetPort`, `controller.service.name`, `controller.pod.annotations`, `controller.config.name`, `controller.reportIngressStatus.leaderElectionLockName`, `controller.service.httpPort`, `controller.service.httpsPort`, `controller.service.loadBalancerIP`, `controller.service.loadBalancerSourceRanges`, `controller.tolerations`, `controller.affinity`. Added in [562](https://github.com/nginxinc/kubernetes-ingress/pull/562), [561](https://github.com/nginxinc/kubernetes-ingress/pull/561), [553](https://github.com/nginxinc/kubernetes-ingress/pull/553), [534](https://github.com/nginxinc/kubernetes-ingress/pull/534) thanks to [Paulo Ribeiro](https://github.com/paigr), [479](https://github.com/nginxinc/kubernetes-ingress/pull/479) thanks to [Alejandro Llanes](https://github.com/sombralibre),  [468](https://github.com/nginxinc/kubernetes-ingress/pull/468), [456](https://github.com/nginxinc/kubernetes-ingress/pull/456).
   671  * [546](https://github.com/nginxinc/kubernetes-ingress/pull/546): Support deploying multiple Ingress Controllers in a cluster. **Note**: The generated resources have new names that are unique for each Ingress Controller. As a consequence, the name change affects the upgrade. See the HELM UPGRADE section for more information.
   672  * [542](https://github.com/nginxinc/kubernetes-ingress/pull/542): Reduce the required privileges in the RBAC manifests.
   673  
   674  CHANGES:
   675  * Update NGINX version to 1.15.12.
   676  * Prometheus metrics for NGINX/NGINX Plus have new namespace `nginx_ingress`. Examples: `nginx_http_requests_total` -> `nginx_ingress_http_requests_total`, `nginxplus_http_requests_total` -> `nginx_ingress_nginxplus_http_requests_total`.
   677  
   678  UPGRADE:
   679  * For NGINX, use the 1.5.0 image from our DockerHub: `nginx/nginx-ingress:1.5.0` or `nginx/nginx-ingress:1.5.0-alpine`
   680  * For NGINX Plus, please build your own image using the 1.5.0 source code.
   681  * For Helm, use version 0.3.0 of the chart.
   682  
   683  HELM UPGRADE:
   684  
   685  The new version of the helm chart uses different names for the generated resources. This makes it possible to deploy multiple Ingress Controllers in a cluster. However, as a side effect, during the upgrade from the previous version, helm will recreate the resources, instead of updating the existing ones. This, in turn, might cause problems for the following resources:
   686  * Service: If the service was created with the type LoadBalancer, the public IP of the new service might change. Additionally, helm updates the selector of the service, so that the old pods will be immediately excluded from the service.
   687  * Deployment/DaemonSet: Because the resource is recreated, the old pods will be removed and the new ones will be launched, instead of the default Deployment/Daemonset upgrade strategy.
   688  * ConfigMap: After the helm removes the resource, the old Ingress Controller pods will be immediately reconfigured to use the default values of the ConfigMap keys. During a small window between the reconfiguration and the shutdown of the old pods, NGINX will use the configuration with the default values.
   689  
   690  We advise not to upgrade to the new version of the helm chart unless the mentioned problems are acceptable for your case. We will provide special upgrade instructions for helm that mitigate the problems for the next minor release of the Ingress Controller (1.5.1).
   691  
   692  ### 1.4.6
   693  
   694  CHANGES:
   695  * Update NGINX version to 1.15.11.
   696  * Update NGINX Plus version to R18.
   697  
   698  HELM CHART:
   699  * The version of the Helm chart is now 0.2.1.
   700  
   701  UPGRADE:
   702  * For NGINX, use the 1.4.6 image from our DockerHub: `nginx/nginx-ingress:1.4.6` or `nginx/nginx-ingress:1.4.6-alpine`
   703  * For NGINX Plus, please build your own image using the 1.4.6 source code.
   704  * For Helm, use version 0.2.1 of the chart.
   705  
   706  ### 1.4.5
   707  
   708  CHANGES:
   709  * Update NGINX version to 1.15.10.
   710  
   711  UPGRADE:
   712  * For NGINX, use the 1.4.5 image from our DockerHub: `nginx/nginx-ingress:1.4.5` or `nginx/nginx-ingress:1.4.5-alpine`
   713  * For NGINX Plus, please build your own image using the 1.4.5 source code.
   714  
   715  ### 1.4.4
   716  
   717  CHANGES:
   718  * Update NGINX version to 1.15.9.
   719  
   720  UPGRADE:
   721  * For NGINX, use the 1.4.4 image from our DockerHub: `nginx/nginx-ingress:1.4.4` or `nginx/nginx-ingress:1.4.4-alpine`
   722  * For NGINX Plus, please build your own image using the 1.4.4 source code.
   723  
   724  ### 1.4.3
   725  
   726  CHANGES:
   727  * Update NGINX version to 1.15.8.
   728  
   729  UPGRADE:
   730  * For NGINX, use the 1.4.3 image from our DockerHub: `nginx/nginx-ingress:1.4.3` or `nginx/nginx-ingress:1.4.3-alpine`
   731  * For NGINX Plus, please build your own image using the 1.4.3 source code.
   732  
   733  ### 1.4.2
   734  
   735  CHANGES:
   736  * Update NGINX Plus version to R17.
   737  
   738   UPGRADE:
   739  * For NGINX, use the 1.4.2 image from our DockerHub: `nginx/nginx-ingress:1.4.2` or `nginx/nginx-ingress:1.4.2-alpine`
   740  * For NGINX Plus, please build your own image using the 1.4.2 source code.
   741  
   742  ### 1.4.1
   743  
   744  CHANGES:
   745  * Update NGINX version to 1.15.7.
   746  
   747  UPGRADE:
   748  * For NGINX, use the 1.4.1 image from our DockerHub: `nginx/nginx-ingress:1.4.1` or `nginx/nginx-ingress:1.4.1-alpine`
   749  * For NGINX Plus, please build your own image using the 1.4.1 source code.
   750  
   751  ### 1.4.0
   752  
   753  FEATURES:
   754  * [401](https://github.com/nginxinc/kubernetes-ingress/pull/401): Add the `-nginx-debug` flag for enabling debugging of NGINX using the `nginx-debug` binary.
   755  * [387](https://github.com/nginxinc/kubernetes-ingress/pull/387): Add the `-nginx-status-allow-cidrs` command-line argument for white listing IPv4 IP/CIDR blocks to allow access to NGINX stub_status or the NGINX Plus API. Thanks to [Jasmine Hegman](https://github.com/r4j4h).
   756  * [376](https://github.com/nginxinc/kubernetes-ingress/pull/376): Support the [random](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#random) load balancing method.
   757  * [375](https://github.com/nginxinc/kubernetes-ingress/pull/375): Support custom annotations.
   758  * [346](https://github.com/nginxinc/kubernetes-ingress/pull/346): Support the Prometheus exporter for NGINX (the stub_status metrics).
   759  * [344](https://github.com/nginxinc/kubernetes-ingress/pull/344): Expose NGINX Plus API/NGINX stub_status on a custom port via the `-nginx-status-port` command-line argument. See also the CHANGES section.
   760  * [342](https://github.com/nginxinc/kubernetes-ingress/pull/342): Add the `error-log-level` configmap key. Thanks to [boran seref](https://github.com/boranx).
   761  * [320](https://github.com/nginxinc/kubernetes-ingress/pull/340): Support TCP/UDP load balancing via the `stream-snippets` configmap key.
   762  
   763  IMPROVEMENTS:
   764  * [434](https://github.com/nginxinc/kubernetes-ingress/pull/434): Improve consistency of templates.
   765  * [432](https://github.com/nginxinc/kubernetes-ingress/pull/432): Fix cli-docs and Improve main test.
   766  * [419](https://github.com/nginxinc/kubernetes-ingress/pull/419): Refactor config writing. Thanks to [feifeiiiiiiiiii](https://github.com/feifeiiiiiiiiiii).
   767  * [403](https://github.com/nginxinc/kubernetes-ingress/pull/403): Improve NGINX start.
   768  * [400](https://github.com/nginxinc/kubernetes-ingress/pull/400): Fix error message in internal/controller/controller.go. Thanks to [Alex O Regan](https://github.com/aaaaaaaalex).
   769  * [399](https://github.com/nginxinc/kubernetes-ingress/pull/399): Improve secret handling. See also the CHANGES section.
   770  * [391](https://github.com/nginxinc/kubernetes-ingress/pull/391): Update default lb-method to be random two least_conn. See also the CHANGES section.
   771  * [389](https://github.com/nginxinc/kubernetes-ingress/pull/389): Improve parsing nginx.org/rewrites annotation.
   772  * [380](https://github.com/nginxinc/kubernetes-ingress/pull/380): Verify reloads & cache secrets.
   773  * [362](https://github.com/nginxinc/kubernetes-ingress/pull/362): Reduce reloads.
   774  * [357](https://github.com/nginxinc/kubernetes-ingress/pull/357): Improve Project Layout and Refactor Controller Package. See also the CHANGES section.
   775  * [351](https://github.com/nginxinc/kubernetes-ingress/pull/351): Make socket address obvious.
   776  
   777  BUGFIXES:
   778  * [429](https://github.com/nginxinc/kubernetes-ingress/pull/429): Fix panic with health checks.
   779  * [386](https://github.com/nginxinc/kubernetes-ingress/pull/386): Fix Configmap/Mergeable Ingress Add/Update event logging.
   780  * [379](https://github.com/nginxinc/kubernetes-ingress/pull/379): Fix configmap update.
   781  * [365](https://github.com/nginxinc/kubernetes-ingress/pull/365): Don't enqueue ingress for some service changes.
   782  * [348](https://github.com/nginxinc/kubernetes-ingress/pull/348): Fix Configurator error check.
   783  
   784  HELM CHART:
   785  * [430](https://github.com/nginxinc/kubernetes-ingress/pull/430): Add the `controller.serviceAccount.imagePullSecrets` parameter to the helm chart. See also the CHANGES section.
   786  * [420](https://github.com/nginxinc/kubernetes-ingress/pull/420): Simplify values files for Helm Chart.
   787  * [398](https://github.com/nginxinc/kubernetes-ingress/pull/398): Add the `controller.nginxStatus.allowCidrs` and `controller.service.externalIPs` parameters to helm chart.
   788  * [393](https://github.com/nginxinc/kubernetes-ingress/pull/393): Refactor Helm Chart templates.
   789  * [390](https://github.com/nginxinc/kubernetes-ingress/pull/390): Add the `controller.service.loadBalancerIP` parameter to the helm chat.
   790  * [377](https://github.com/nginxinc/kubernetes-ingress/pull/377): Add the `controller.nginxStatus` parameters to the helm chart.
   791  * [335](https://github.com/nginxinc/kubernetes-ingress/pull/335): Add the `controller.reportIngressStatus` parameters to the helm chart.
   792  * The version of the Helm chart is now 0.2.0.
   793  
   794  CHANGES:
   795  * Update NGINX version to 1.15.6.
   796  * Update NGINX Plus version to R16p1.
   797  * Update NGINX Prometheus Exporter to 0.2.0.
   798  * [430](https://github.com/nginxinc/kubernetes-ingress/pull/430): Add the `controller.serviceAccount.imagePullSecrets` parameter to the helm chart. **Note**: the `controller.serviceAccountName` parameter has been changed to `controller.serviceAccount.name`.
   799  * [399](https://github.com/nginxinc/kubernetes-ingress/pull/399): Improve secret handling. **Note**: the PR changed how the Ingress Controller processes Ingress resources with TLS termination enabled but without any referenced (or with invalid) secrets and Ingress resources with JWT validation enabled but without any referenced (or with invalid) JWK. Please read [here](https://github.com/nginxinc/kubernetes-ingress/pull/399) for more details.
   800  * [357](https://github.com/nginxinc/kubernetes-ingress/pull/357): Improve Project Layout and Refactor Controller Package. **Note**: the PR significantly changed the layout of the project to follow best practices.
   801  * [347](https://github.com/nginxinc/kubernetes-ingress/pull/347): Use edge version in manifests and Helm chart. **Note**: the manifests and the helm chart in the master branch now reference the edge version of the Ingress Controller instead of the latest stable version used previously.
   802  * [391](https://github.com/nginxinc/kubernetes-ingress/pull/391): Update default lb-method to be random two least_conn. **Note**: the default load balancing method is now the power of two choices as it better suits the Ingress Controller use case. Please read the [blog post](https://www.nginx.com/blog/nginx-power-of-two-choices-load-balancing-algorithm/) about the method for more details.
   803  * [344](https://github.com/nginxinc/kubernetes-ingress/pull/344): Expose NGINX Plus API/NGINX stub_status on a custom port via the `-nginx-status-port` command-line argument. **Note**: For NGINX the stub_status is now exposed on port 8080 at the /stub_status URL by default. Previously, the stub_status was not exposed on any port. The stub_status can be disabled via the `-nginx-status` flag.
   804  
   805  DOC AND EXAMPLES FIXES/IMPROVEMENTS: [435](https://github.com/nginxinc/kubernetes-ingress/pull/435), [433](https://github.com/nginxinc/kubernetes-ingress/pull/433), [432](https://github.com/nginxinc/kubernetes-ingress/pull/432), [418](https://github.com/nginxinc/kubernetes-ingress/pull/418) (Thanks to [Hal Deadman](https://github.com/hdeadman)), [406](https://github.com/nginxinc/kubernetes-ingress/pull/406),  [381](https://github.com/nginxinc/kubernetes-ingress/pull/381), [349](https://github.com/nginxinc/kubernetes-ingress/pull/349) (Thanks to [Artur Geraschenko](https://github.com/arturgspb)), [343](https://github.com/nginxinc/kubernetes-ingress/pull/343)
   806  
   807  UPGRADE:
   808  * For NGINX, use the 1.4.0 image from our DockerHub: `nginx/nginx-ingress:1.4.0` or `nginx/nginx-ingress:1.4.0-alpine`
   809  * For NGINX Plus, please build your own image using the 1.4.0 source code.
   810  
   811  ### 1.3.2
   812  
   813  CHANGES:
   814  * Update NGINX version to 1.15.6.
   815  
   816  UPGRADE:
   817  * For NGINX, use the 1.3.2 image from our DockerHub: `nginx/nginx-ingress:1.3.2` or `nginx/nginx-ingress:1.3.2-alpine`
   818  * For NGINX Plus, please build your own image using the 1.3.2 source code.
   819  
   820  ### 1.3.1
   821  
   822  CHANGES:
   823  * Update NGINX Plus version to R15p2.
   824  
   825  UPGRADE:
   826  * For NGINX, use the 1.3.1 image from our DockerHub: `nginx/nginx-ingress:1.3.1` or `nginx/nginx-ingress:1.3.1-alpine`
   827  * For NGINX Plus, please build your own image using the 1.3.1 source code.
   828  
   829  ### 1.3.0
   830  
   831  IMPROVEMENTS:
   832  * [325](https://github.com/nginxinc/kubernetes-ingress/pull/325): Report ingress status.
   833  * [311](https://github.com/nginxinc/kubernetes-ingress/pull/311): Support JWT auth in mergeable minions.
   834  * [310](https://github.com/nginxinc/kubernetes-ingress/pull/310): NGINX configuration template custom path support.
   835  * [308](https://github.com/nginxinc/kubernetes-ingress/pull/308): Add prometheus exporter support to helm chart.
   836  * [303](https://github.com/nginxinc/kubernetes-ingress/pull/303): Add fetch custom NGINX template from ConfigMap.
   837  * [301](https://github.com/nginxinc/kubernetes-ingress/pull/301): Update prometheus exporter image for Plus.
   838  * [298](https://github.com/nginxinc/kubernetes-ingress/pull/298): Prefetch ConfigMap before initial NGINX Config generation.
   839  * [296](https://github.com/nginxinc/kubernetes-ingress/pull/296): Improve Helm Chart.
   840  * [295](https://github.com/nginxinc/kubernetes-ingress/pull/295): Report version information.
   841  * [294](https://github.com/nginxinc/kubernetes-ingress/pull/294): Support dynamic reconfiguration in mergeable ingresses for Plus.
   842  * [287](https://github.com/nginxinc/kubernetes-ingress/pull/287): Support slow-start for Plus.
   843  * [286](https://github.com/nginxinc/kubernetes-ingress/pull/286): Add support for active health checks for Plus.
   844  
   845  CHANGES:
   846  * [330](https://github.com/nginxinc/kubernetes-ingress/pull/330): Update NGINX version to 1.15.2.
   847  * [329](https://github.com/nginxinc/kubernetes-ingress/pull/329): Enforce annotations inheritance in minions.
   848  
   849  BUGFIXES:
   850  * [326](https://github.com/nginxinc/kubernetes-ingress/pull/326): Fix find ingress for secret ns bug.
   851  * [284](https://github.com/nginxinc/kubernetes-ingress/pull/284): Correct Logs for Mergeable Types with Duplicate Location. Thanks to [Fernando Diaz](https://github.com/diazjf).
   852  
   853  
   854  UPGRADE:
   855  * For NGINX, use the 1.3.0 image from our DockerHub: `nginx/nginx-ingress:1.3.0`
   856  * For NGINX Plus, please build your own image using the 1.3.0 source code.
   857  
   858  ### 1.2.0
   859  
   860  * [279](https://github.com/nginxinc/kubernetes-ingress/pull/279): Update dependencies.
   861  * [278](https://github.com/nginxinc/kubernetes-ingress/pull/278): Fix mergeable Ingress types.
   862  * [277](https://github.com/nginxinc/kubernetes-ingress/pull/277): Support grpc error responses.
   863  * [276](https://github.com/nginxinc/kubernetes-ingress/pull/276): Add gRPC support.
   864  * [274](https://github.com/nginxinc/kubernetes-ingress/pull/274): Change the default load balancing method to least_conn.
   865  * [272](https://github.com/nginxinc/kubernetes-ingress/pull/272): Move nginx-ingress image to the official nginx DockerHub.
   866  * [268](https://github.com/nginxinc/kubernetes-ingress/pull/268): Correct Mergeable Types misspelling and optimize blacklists. Thanks to [Fernando Diaz](https://github.com/diazjf).
   867  * [266](https://github.com/nginxinc/kubernetes-ingress/pull/266): Add support for passive health checks.
   868  * [261](https://github.com/nginxinc/kubernetes-ingress/pull/261): Update Customization Example.
   869  * [258](https://github.com/nginxinc/kubernetes-ingress/pull/258): Handle annotations and conflicting paths for MergeableTypes. Thanks to [Fernando Diaz](https://github.com/diazjf).
   870  * [256](https://github.com/nginxinc/kubernetes-ingress/pull/256): Add helm chart support.
   871  * [249](https://github.com/nginxinc/kubernetes-ingress/pull/249): Add support for prometheus for Plus.
   872  * [241](https://github.com/nginxinc/kubernetes-ingress/pull/241): Update the doc about building the Docker image.
   873  * [240](https://github.com/nginxinc/kubernetes-ingress/pull/240): Use new NGINX Plus API.
   874  * [239](https://github.com/nginxinc/kubernetes-ingress/pull/239): Fix a typo in a variable name. Thanks to [Tony Li](https://github.com/mysterytony).
   875  * [238](https://github.com/nginxinc/kubernetes-ingress/pull/238): Remove apt-get upgrade from Plus Dockerfile.
   876  * [237](https://github.com/nginxinc/kubernetes-ingress/pull/237): Add unit test for ingress-class handling.
   877  * [236](https://github.com/nginxinc/kubernetes-ingress/pull/236): Always respect `-ingress-class` option. Thanks to [Nick Novitski](https://github.com/nicknovitski).
   878  * [235](https://github.com/nginxinc/kubernetes-ingress/pull/235): Change the base image to Debian Stretch for Plus controller.
   879  * [234](https://github.com/nginxinc/kubernetes-ingress/pull/234): Update installation manifests and instructions.
   880  * [233](https://github.com/nginxinc/kubernetes-ingress/pull/233): Add docker build options to Makefile.
   881  * [231](https://github.com/nginxinc/kubernetes-ingress/pull/231): Prevent a possible failure of building Plus image.
   882  * Documentation Fixes: [248](https://github.com/nginxinc/kubernetes-ingress/pull/248), thanks to [zariye](https://github.com/zariye). [252](https://github.com/nginxinc/kubernetes-ingress/pull/252). [270](https://github.com/nginxinc/kubernetes-ingress/pull/270).
   883  * Update NGINX version to 1.13.12.
   884  * Update NGINX Plus version to R15 P1.
   885  
   886  
   887  ### 1.1.1
   888  
   889  * [228](https://github.com/nginxinc/kubernetes-ingress/pull/228): Add worker-rlimit-nofile configmap key. Thanks to [Aleksandr Lysenko](https://github.com/Sarga).
   890  * [223](https://github.com/nginxinc/kubernetes-ingress/pull/223): Add worker-connections configmap key. Thanks to [Aleksandr Lysenko](https://github.com/Sarga).
   891  * Update NGINX version to 1.13.8.
   892  
   893  ### 1.1.0
   894  
   895  * [221](https://github.com/nginxinc/kubernetes-ingress/pull/221): Add git commit info to the IC log.
   896  * [220](https://github.com/nginxinc/kubernetes-ingress/pull/220): Update dependencies.
   897  * [213](https://github.com/nginxinc/kubernetes-ingress/pull/213): Add main snippets to allow Main context customization. Thanks to [Dewen Kong](https://github.com/kongdewen).
   898  * [211](https://github.com/nginxinc/kubernetes-ingress/pull/211): Minimize the number of configuration reloads when the Ingress controller starts; fix a problem with endpoints updates for Plus.
   899  * [208](https://github.com/nginxinc/kubernetes-ingress/pull/208): Add worker-shutdown-timeout configmap key. Thanks to [Aleksandr Lysenko](https://github.com/Sarga).
   900  * [199](https://github.com/nginxinc/kubernetes-ingress/pull/199): Add support for Kubernetes ssl-redirect annotation. Thanks to [Luke Seelenbinder](https://github.com/lseelenbinder).
   901  * [194](https://github.com/nginxinc/kubernetes-ingress/pull/194) Add keepalive configmap key and annotation.
   902  * [193](https://github.com/nginxinc/kubernetes-ingress/pull/193): Add worker-cpu-affinity configmap key.
   903  * [192](https://github.com/nginxinc/kubernetes-ingress/pull/192): Add worker-processes configmap key.
   904  * [186](https://github.com/nginxinc/kubernetes-ingress/pull/186): Fix hardcoded controller class. Thanks to [Serhii M](https://github.com/SiriusRed).
   905  * [184](https://github.com/nginxinc/kubernetes-ingress/pull/184): Return a meaningful error when there is no cert and key for the default server.
   906  * Update NGINX version to 1.13.7.
   907  * Makefile updates: golang container was updated to 1.9.
   908  
   909  ### 1.0.0
   910  
   911  * [175](https://github.com/nginxinc/kubernetes-ingress/pull/175): Add support for JWT for NGINX Plus.
   912  * [171](https://github.com/nginxinc/kubernetes-ingress/pull/171): Allow NGINX to listen on non-standard ports. Thanks to [Stanislav Seletskiy](https://github.com/seletskiy).
   913  * [170](https://github.com/nginxinc/kubernetes-ingress/pull/170): Add the default server. **Note**: The Ingress controller will fail to start if there are no cert and key for the default server. You can pass a TLS Secret for the default server as an argument to the Ingress controller or add a cert and a key to the Docker image.
   914  * [169](https://github.com/nginxinc/kubernetes-ingress/pull/169): Ignore Ingress resources with empty hostnames.
   915  * [168](https://github.com/nginxinc/kubernetes-ingress/pull/168): Add the `nginx.org/lb-method` annotation. Thanks to [Sajal Kayan](https://github.com/sajal).
   916  * [166](https://github.com/nginxinc/kubernetes-ingress/pull/166): Watch Secret resources for updates. **Note**: If a Secret referenced by one or more Ingress resources becomes invalid or gets removed, the configuration for those Ingress resources will be disabled until there is a valid Secret.
   917  * [160](https://github.com/nginxinc/kubernetes-ingress/pull/160): Add support for events. See the details [here](https://github.com/nginxinc/kubernetes-ingress/pull/160).
   918  * [157](https://github.com/nginxinc/kubernetes-ingress/pull/157): Add graceful termination - when the Ingress controller receives `SIGTERM`, it shutdowns itself as well as NGINX, using `nginx -s quit`.
   919  
   920  ### 0.9.0
   921  
   922  * [156](https://github.com/nginxinc/kubernetes-ingress/pull/156): Write a pem file with an SSL certificate and key atomically.
   923  * [155](https://github.com/nginxinc/kubernetes-ingress/pull/155): Remove http2 annotation (http/2 can be enabled globally in the ConfigMap).
   924  * [154](https://github.com/nginxinc/kubernetes-ingress/pull/154): Merge NGINX and NGINX Plus Ingress controller implementations.
   925  * [151](https://github.com/nginxinc/kubernetes-ingress/pull/151): Use k8s.io/client-go.
   926  * [146](https://github.com/nginxinc/kubernetes-ingress/pull/146): Fix health status.
   927  * [141](https://github.com/nginxinc/kubernetes-ingress/pull/141): Set `worker_processes` to `auto` in NGINX configuration. Thanks to [Andreas Krüger](https://github.com/woopstar).
   928  * [140](https://github.com/nginxinc/kubernetes-ingress/pull/140): Fix an error message. Thanks to [Andreas Krüger](https://github.com/woopstar).
   929  * Update NGINX to version 1.13.3.
   930  
   931  ### 0.8.1
   932  
   933  * Update NGINX version to 1.13.0.
   934  
   935  ### 0.8.0
   936  
   937  * [117](https://github.com/nginxinc/kubernetes-ingress/pull/117): Add a customization option: location-snippets, server-snippets and http-snippets. Thanks to [rchicoli](https://github.com/rchicoli).
   938  * [116](https://github.com/nginxinc/kubernetes-ingress/pull/116): Add support for the 301 redirect to https based on the `http_x_forwarded_proto` header. Thanks to [Chris](https://github.com/cwhenderson20).
   939  * Update NGINX version to 1.11.13.
   940  * Makefile updates: gcloud docker push command; golang container was updated to 1.8.
   941  * Documentation fixes: [113](https://github.com/nginxinc/kubernetes-ingress/pull/113). Thanks to [Linus Lewandowski](https://github.com/LEW21).
   942  
   943  ### 0.7.0
   944  
   945  * [108](https://github.com/nginxinc/kubernetes-ingress/pull/108): Support for the `server_tokens` directive via the annotation and in the configmap. Thanks to [David Radcliffe](https://github.com/dwradcliffe).
   946  * [103](https://github.com/nginxinc/kubernetes-ingress/pull/103): Improve error reporting when NGINX fails to start.
   947  * [100](https://github.com/nginxinc/kubernetes-ingress/pull/100): Add the health check location. Thanks to [Julian](https://github.com/jmastr).
   948  * [95](https://github.com/nginxinc/kubernetes-ingress/pull/95): Fix the runtime.TypeAssertionError issue, which sometimes occurred when deleting resources. Thanks to [Tang Le](https://github.com/tangle329).
   949  * [93](https://github.com/nginxinc/kubernetes-ingress/pull/93): Fix overwriting of Secrets with the same name from different namespaces.
   950  * [92](https://github.com/nginxinc/kubernetes-ingress/pull/92/files): Add overwriting of the HSTS header. Previously, when HSTS was enabled, if a backend issued the HSTS header, the controller would add the second HSTS header. Now the controller overwrites the HSTS header, if a backend also issues it.
   951  * [91](https://github.com/nginxinc/kubernetes-ingress/pull/91):
   952  Fix the issue with single service Ingress resources without any Ingress rules: the controller didn't pick up any updates of the endpoints of the service of such an Ingress resource. Thanks to [Tang Le](https://github.com/tangle329).
   953  * [88](https://github.com/nginxinc/kubernetes-ingress/pull/88): Support for the `proxy_hide_header` and the `proxy_pass_header` directives via annotations and in the configmap. Thanks to [Nico Schieder](https://github.com/thetechnick).
   954  * [85](https://github.com/nginxinc/kubernetes-ingress/pull/85): Add the configmap settings to support perfect forward secrecy. Thanks to [Nico Schieder](https://github.com/thetechnick).
   955  * [84](https://github.com/nginxinc/kubernetes-ingress/pull/84): Secret retry: If a certificate Secret referenced in an Ingress object is not found,
   956  the Ingress controller will reject the Ingress object. but retries every 5s. Thanks to [Nico Schieder](https://github.com/thetechnick).
   957  * [81](https://github.com/nginxinc/kubernetes-ingress/pull/81): Add configmap options to turn on the PROXY protocol. Thanks to [Nico Schieder](https://github.com/thetechnick).
   958  * Update NGINX version to 1.11.8.
   959  * Documentation fixes: [104](https://github.com/nginxinc/kubernetes-ingress/pull/104/files) and [97](https://github.com/nginxinc/kubernetes-ingress/pull/97/files). Thanks to [Ruilin Huang](https://github.com/hrl) and [Justin Garrison](https://github.com/rothgar).
   960  
   961  ### 0.6.0
   962  
   963  * [75](https://github.com/nginxinc/kubernetes-ingress/pull/75): Add the HSTS settings in the configmap and annotations. Thanks to [Nico Schieder](https://github.com/thetechnick).
   964  * [74](https://github.com/nginxinc/kubernetes-ingress/pull/74): Fix the issue of the `kubernetes.io/ingress.class` annotation handling. Thanks to [Tang Le](https://github.com/tangle329).
   965  * [70](https://github.com/nginxinc/kubernetes-ingress/pull/70): Add support for the alpine-based image for the NGINX controller.
   966  * [68](https://github.com/nginxinc/kubernetes-ingress/pull/68): Support for proxy-buffering settings in the configmap and annotations. Thanks to [Mark Daniel Reidel](https://github.com/df-mreidel).
   967  * [66](https://github.com/nginxinc/kubernetes-ingress/pull/66): Support for custom log-format in the configmap. Thanks to [Mark Daniel Reidel](https://github.com/df-mreidel).
   968  * [65](https://github.com/nginxinc/kubernetes-ingress/pull/65): Add HTTP/2 as an option in the configmap and annotations. Thanks to [Nico Schieder](https://github.com/thetechnick).
   969  * The NGINX Plus controller image is now based on Ubuntu Xenial.
   970  
   971  ### 0.5.0
   972  
   973  * Update NGINX version to 1.11.5.
   974  * [64](https://github.com/nginxinc/kubernetes-ingress/pull/64): Add the `nginx.org/rewrites` annotation, which allows to rewrite the URI of a request before sending it to the application. Thanks to [Julian](https://github.com/jmastr).
   975  * [62](https://github.com/nginxinc/kubernetes-ingress/pull/62): Add the `nginx.org/ssl-services` annotation, which allows load balancing of HTTPS applications. Thanks to [Julian](https://github.com/jmastr).
   976  
   977  ### 0.4.0
   978  
   979  * [54](https://github.com/nginxinc/kubernetes-ingress/pull/54): Previously, when specifying the port of a service in an Ingress rule, you had to use the value of the target port of that port of the service, which was incorrect. Now you must use the port value or the name of the port of the service instead of the target port value. **Note**: Please make necessary changes to your Ingress resources, if ports of your services have different values of the port and the target port fields.
   980  * [55](https://github.com/nginxinc/kubernetes-ingress/pull/55): Add support for the `kubernetes.io/ingress.class` annotation in Ingress resources.
   981  * [58](https://github.com/nginxinc/kubernetes-ingress/pull/58): Add the version information to the controller. For each version of the NGINX controller, you can find a corresponding image on [DockerHub](https://hub.docker.com/r/nginxdemos/nginx-ingress/tags/) with a tag equal to the version. The latest version is available through the `latest` tag.
   982  
   983  The previous version was 0.3
   984  
   985  
   986  ### Notes
   987  
   988  * Except when mentioned otherwise, the controller refers both to the NGINX and the NGINX Plus Ingress controllers.