mirror of
https://github.com/openappsec/openappsec.git
synced 2025-11-16 09:21:54 +03:00
Compare commits
49 Commits
orianelou-
...
Dec-24-202
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a7c2402a5 | ||
|
|
c4d7ab54a6 | ||
|
|
1eee88cba5 | ||
|
|
d91a1c4ca5 | ||
|
|
596033391b | ||
|
|
eb1bc9227b | ||
|
|
3084641737 | ||
|
|
3282774432 | ||
|
|
de31400712 | ||
|
|
8d0a44acac | ||
|
|
d526a070a4 | ||
|
|
b71d772e7a | ||
|
|
62e75b8739 | ||
|
|
16ad370409 | ||
|
|
7bf05192b3 | ||
|
|
287cef8c36 | ||
|
|
2649b84207 | ||
|
|
a3014ab381 | ||
|
|
9d848264f3 | ||
|
|
cfcf7b883e | ||
|
|
2da3dc4052 | ||
|
|
4084cb4f6d | ||
|
|
3eb17167cb | ||
|
|
b2781d63d4 | ||
|
|
7f712b21e4 | ||
|
|
331c24acb0 | ||
|
|
bc3359a1c1 | ||
|
|
cec0276df1 | ||
|
|
3061342b45 | ||
|
|
0869b8f24d | ||
|
|
1a4ab5f0d7 | ||
|
|
4a2d25ab65 | ||
|
|
f2ca7301b9 | ||
|
|
3d11ead170 | ||
|
|
39b8c5a5ff | ||
|
|
de6f1033bd | ||
|
|
58958b2436 | ||
|
|
59e7f00b3e | ||
|
|
e102b25b7d | ||
|
|
0386431eee | ||
|
|
fd1a77628e | ||
|
|
da911582a5 | ||
|
|
798dd2a7d1 | ||
|
|
6bda60ae84 | ||
|
|
5b9769e94e | ||
|
|
6693176131 | ||
|
|
c2ced075eb | ||
|
|
0b4bdd3677 | ||
|
|
4db7a54c27 |
@@ -1,7 +1,12 @@
|
|||||||
cmake_minimum_required (VERSION 2.8.4)
|
cmake_minimum_required (VERSION 2.8.4)
|
||||||
project (ngen)
|
project (ngen)
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-terminate -Dalpine")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall -Wno-terminate")
|
||||||
|
|
||||||
|
execute_process(COMMAND grep -c "Alpine Linux" /etc/os-release OUTPUT_VARIABLE IS_ALPINE)
|
||||||
|
if(NOT IS_ALPINE EQUAL "0")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dalpine")
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(Boost REQUIRED)
|
find_package(Boost REQUIRED)
|
||||||
find_package(ZLIB REQUIRED)
|
find_package(ZLIB REQUIRED)
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ For Linux (NGINX or Kong) using the installer (list of supported/pre-compiled NG
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install
|
$ wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install
|
||||||
$ ./open-appsec-install –auto
|
$ ./open-appsec-install --auto
|
||||||
```
|
```
|
||||||
|
|
||||||
For Linux, if you’ve built your own package use the following commands:
|
For Linux, if you’ve built your own package use the following commands:
|
||||||
@@ -104,13 +104,14 @@ Before compiling the services, you'll need to ensure the latest development vers
|
|||||||
* GTest
|
* GTest
|
||||||
* GMock
|
* GMock
|
||||||
* cURL
|
* cURL
|
||||||
|
* Redis
|
||||||
* Hiredis
|
* Hiredis
|
||||||
|
|
||||||
An example of installing the packages on Alpine:
|
An example of installing the packages on Alpine:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ apk update
|
$ apk update
|
||||||
$ apk add boost-dev openssl-dev pcre2-dev libxml2-dev gtest-dev curl-dev hiredis-dev
|
$ apk add boost-dev openssl-dev pcre2-dev libxml2-dev gtest-dev curl-dev hiredis-dev redis
|
||||||
```
|
```
|
||||||
|
|
||||||
## Compiling and packaging the agent code
|
## Compiling and packaging the agent code
|
||||||
|
|||||||
@@ -32,5 +32,6 @@ DEFINE_KDEBUG_FLAG(statelessValidation)
|
|||||||
DEFINE_KDEBUG_FLAG(kernelMetric)
|
DEFINE_KDEBUG_FLAG(kernelMetric)
|
||||||
DEFINE_KDEBUG_FLAG(tproxy)
|
DEFINE_KDEBUG_FLAG(tproxy)
|
||||||
DEFINE_KDEBUG_FLAG(tenantStats)
|
DEFINE_KDEBUG_FLAG(tenantStats)
|
||||||
|
DEFINE_KDEBUG_FLAG(uuidTranslation)
|
||||||
|
|
||||||
#endif // DEFINE_KDEBUG_FLAG
|
#endif // DEFINE_KDEBUG_FLAG
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
annotations:
|
annotations:
|
||||||
artifacthub.io/changes: |
|
artifacthub.io/changes: '- "Update Ingress-Nginx version controller-v1.9.4"'
|
||||||
- "Added a doc line to the missing helm value service.internal.loadBalancerIP (#9406)"
|
|
||||||
- "feat(helm): Add loadBalancerClass (#9562)"
|
|
||||||
- "added helmshowvalues example (#10019)"
|
|
||||||
- "Update Ingress-Nginx version controller-v1.8.1"
|
|
||||||
artifacthub.io/prerelease: "false"
|
artifacthub.io/prerelease: "false"
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: 1.8.1
|
appVersion: latest
|
||||||
keywords:
|
keywords:
|
||||||
- ingress
|
- ingress
|
||||||
- nginx
|
- nginx
|
||||||
@@ -14,4 +10,4 @@ kubeVersion: '>=1.20.0-0'
|
|||||||
name: open-appsec-k8s-nginx-ingress
|
name: open-appsec-k8s-nginx-ingress
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/kubernetes/ingress-nginx
|
- https://github.com/kubernetes/ingress-nginx
|
||||||
version: 4.7.1
|
version: 4.8.3
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[ingress-nginx](https://github.com/kubernetes/ingress-nginx) Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer
|
[ingress-nginx](https://github.com/kubernetes/ingress-nginx) Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer
|
||||||
|
|
||||||
 
|
 
|
||||||
|
|
||||||
To use, add `ingressClassName: nginx` spec field or the `kubernetes.io/ingress.class: nginx` annotation to your Ingress resources.
|
To use, add `ingressClassName: nginx` spec field or the `kubernetes.io/ingress.class: nginx` annotation to your Ingress resources.
|
||||||
|
|
||||||
@@ -249,14 +249,13 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.admissionWebhooks.key | string | `"/usr/local/certificates/key"` | |
|
| controller.admissionWebhooks.key | string | `"/usr/local/certificates/key"` | |
|
||||||
| controller.admissionWebhooks.labels | object | `{}` | Labels to be added to admission webhooks |
|
| controller.admissionWebhooks.labels | object | `{}` | Labels to be added to admission webhooks |
|
||||||
| controller.admissionWebhooks.namespaceSelector | object | `{}` | |
|
| controller.admissionWebhooks.namespaceSelector | object | `{}` | |
|
||||||
| controller.admissionWebhooks.networkPolicyEnabled | bool | `false` | |
|
|
||||||
| controller.admissionWebhooks.objectSelector | object | `{}` | |
|
| controller.admissionWebhooks.objectSelector | object | `{}` | |
|
||||||
| controller.admissionWebhooks.patch.enabled | bool | `true` | |
|
| controller.admissionWebhooks.patch.enabled | bool | `true` | |
|
||||||
| controller.admissionWebhooks.patch.image.digest | string | `"sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b"` | |
|
| controller.admissionWebhooks.patch.image.digest | string | `"sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80"` | |
|
||||||
| controller.admissionWebhooks.patch.image.image | string | `"ingress-nginx/kube-webhook-certgen"` | |
|
| controller.admissionWebhooks.patch.image.image | string | `"ingress-nginx/kube-webhook-certgen"` | |
|
||||||
| controller.admissionWebhooks.patch.image.pullPolicy | string | `"IfNotPresent"` | |
|
| controller.admissionWebhooks.patch.image.pullPolicy | string | `"IfNotPresent"` | |
|
||||||
| controller.admissionWebhooks.patch.image.registry | string | `"registry.k8s.io"` | |
|
| controller.admissionWebhooks.patch.image.registry | string | `"registry.k8s.io"` | |
|
||||||
| controller.admissionWebhooks.patch.image.tag | string | `"v20230407"` | |
|
| controller.admissionWebhooks.patch.image.tag | string | `"v20231011-8b53cabe0"` | |
|
||||||
| controller.admissionWebhooks.patch.labels | object | `{}` | Labels to be added to patch job resources |
|
| controller.admissionWebhooks.patch.labels | object | `{}` | Labels to be added to patch job resources |
|
||||||
| controller.admissionWebhooks.patch.nodeSelector."kubernetes.io/os" | string | `"linux"` | |
|
| controller.admissionWebhooks.patch.nodeSelector."kubernetes.io/os" | string | `"linux"` | |
|
||||||
| controller.admissionWebhooks.patch.podAnnotations | object | `{}` | |
|
| controller.admissionWebhooks.patch.podAnnotations | object | `{}` | |
|
||||||
@@ -274,7 +273,7 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.admissionWebhooks.service.servicePort | int | `443` | |
|
| controller.admissionWebhooks.service.servicePort | int | `443` | |
|
||||||
| controller.admissionWebhooks.service.type | string | `"ClusterIP"` | |
|
| controller.admissionWebhooks.service.type | string | `"ClusterIP"` | |
|
||||||
| controller.affinity | object | `{}` | Affinity and anti-affinity rules for server scheduling to nodes # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity # |
|
| controller.affinity | object | `{}` | Affinity and anti-affinity rules for server scheduling to nodes # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity # |
|
||||||
| controller.allowSnippetAnnotations | bool | `true` | This configuration defines if Ingress Controller should allow users to set their own *-snippet annotations, otherwise this is forbidden / dropped when users add those annotations. Global snippets in ConfigMap are still respected |
|
| controller.allowSnippetAnnotations | bool | `false` | This configuration defines if Ingress Controller should allow users to set their own *-snippet annotations, otherwise this is forbidden / dropped when users add those annotations. Global snippets in ConfigMap are still respected |
|
||||||
| controller.annotations | object | `{}` | Annotations to be added to the controller Deployment or DaemonSet # |
|
| controller.annotations | object | `{}` | Annotations to be added to the controller Deployment or DaemonSet # |
|
||||||
| controller.autoscaling.annotations | object | `{}` | |
|
| controller.autoscaling.annotations | object | `{}` | |
|
||||||
| controller.autoscaling.behavior | object | `{}` | |
|
| controller.autoscaling.behavior | object | `{}` | |
|
||||||
@@ -294,8 +293,9 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.dnsConfig | object | `{}` | Optionally customize the pod dnsConfig. |
|
| controller.dnsConfig | object | `{}` | Optionally customize the pod dnsConfig. |
|
||||||
| controller.dnsPolicy | string | `"ClusterFirst"` | Optionally change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true'. By default, while using host network, name resolution uses the host's DNS. If you wish nginx-controller to keep resolving names inside the k8s network, use ClusterFirstWithHostNet. |
|
| controller.dnsPolicy | string | `"ClusterFirst"` | Optionally change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true'. By default, while using host network, name resolution uses the host's DNS. If you wish nginx-controller to keep resolving names inside the k8s network, use ClusterFirstWithHostNet. |
|
||||||
| controller.electionID | string | `""` | Election ID to use for status update, by default it uses the controller name combined with a suffix of 'leader' |
|
| controller.electionID | string | `""` | Election ID to use for status update, by default it uses the controller name combined with a suffix of 'leader' |
|
||||||
|
| controller.enableAnnotationValidations | bool | `false` | |
|
||||||
| controller.enableMimalloc | bool | `true` | Enable mimalloc as a drop-in replacement for malloc. # ref: https://github.com/microsoft/mimalloc # |
|
| controller.enableMimalloc | bool | `true` | Enable mimalloc as a drop-in replacement for malloc. # ref: https://github.com/microsoft/mimalloc # |
|
||||||
| controller.enableTopologyAwareRouting | bool | `false` | This configuration enables Topology Aware Routing feature, used together with service annotation service.kubernetes.io/topology-aware-hints="auto" Defaults to false |
|
| controller.enableTopologyAwareRouting | bool | `false` | This configuration enables Topology Aware Routing feature, used together with service annotation service.kubernetes.io/topology-mode="auto" Defaults to false |
|
||||||
| controller.existingPsp | string | `""` | Use an existing PSP instead of creating one |
|
| controller.existingPsp | string | `""` | Use an existing PSP instead of creating one |
|
||||||
| controller.extraArgs | object | `{}` | Additional command line arguments to pass to Ingress-Nginx Controller E.g. to specify the default SSL certificate you can use |
|
| controller.extraArgs | object | `{}` | Additional command line arguments to pass to Ingress-Nginx Controller E.g. to specify the default SSL certificate you can use |
|
||||||
| controller.extraContainers | list | `[]` | Additional containers to be added to the controller pod. See https://github.com/lemonldap-ng-controller/lemonldap-ng-controller as example. |
|
| controller.extraContainers | list | `[]` | Additional containers to be added to the controller pod. See https://github.com/lemonldap-ng-controller/lemonldap-ng-controller as example. |
|
||||||
@@ -306,6 +306,7 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.extraVolumes | list | `[]` | Additional volumes to the controller pod. |
|
| controller.extraVolumes | list | `[]` | Additional volumes to the controller pod. |
|
||||||
| controller.healthCheckHost | string | `""` | Address to bind the health check endpoint. It is better to set this option to the internal node address if the Ingress-Nginx Controller is running in the `hostNetwork: true` mode. |
|
| controller.healthCheckHost | string | `""` | Address to bind the health check endpoint. It is better to set this option to the internal node address if the Ingress-Nginx Controller is running in the `hostNetwork: true` mode. |
|
||||||
| controller.healthCheckPath | string | `"/healthz"` | Path of the health check endpoint. All requests received on the port defined by the healthz-port parameter are forwarded internally to this path. |
|
| controller.healthCheckPath | string | `"/healthz"` | Path of the health check endpoint. All requests received on the port defined by the healthz-port parameter are forwarded internally to this path. |
|
||||||
|
| controller.hostAliases | list | `[]` | Optionally customize the pod hostAliases. |
|
||||||
| controller.hostNetwork | bool | `false` | Required for use with CNI based kubernetes installations (such as ones set up by kubeadm), since CNI and hostport don't mix yet. Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920 is merged |
|
| controller.hostNetwork | bool | `false` | Required for use with CNI based kubernetes installations (such as ones set up by kubeadm), since CNI and hostport don't mix yet. Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920 is merged |
|
||||||
| controller.hostPort.enabled | bool | `false` | Enable 'hostPort' or not |
|
| controller.hostPort.enabled | bool | `false` | Enable 'hostPort' or not |
|
||||||
| controller.hostPort.ports.http | int | `80` | 'hostPort' http port |
|
| controller.hostPort.ports.http | int | `80` | 'hostPort' http port |
|
||||||
@@ -313,13 +314,13 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.hostname | object | `{}` | Optionally customize the pod hostname. |
|
| controller.hostname | object | `{}` | Optionally customize the pod hostname. |
|
||||||
| controller.image.allowPrivilegeEscalation | bool | `true` | |
|
| controller.image.allowPrivilegeEscalation | bool | `true` | |
|
||||||
| controller.image.chroot | bool | `false` | |
|
| controller.image.chroot | bool | `false` | |
|
||||||
| controller.image.digest | string | `"sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bd"` | |
|
| controller.image.digest | string | `"sha256:5b161f051d017e55d358435f295f5e9a297e66158f136321d9b04520ec6c48a3"` | |
|
||||||
| controller.image.digestChroot | string | `"sha256:e0d4121e3c5e39de9122e55e331a32d5ebf8d4d257227cb93ab54a1b912a7627"` | |
|
| controller.image.digestChroot | string | `"sha256:5976b1067cfbca8a21d0ba53d71f83543a73316a61ea7f7e436d6cf84ddf9b26"` | |
|
||||||
| controller.image.image | string | `"ingress-nginx/controller"` | |
|
| controller.image.image | string | `"ingress-nginx/controller"` | |
|
||||||
| controller.image.pullPolicy | string | `"IfNotPresent"` | |
|
| controller.image.pullPolicy | string | `"IfNotPresent"` | |
|
||||||
| controller.image.registry | string | `"registry.k8s.io"` | |
|
| controller.image.registry | string | `"registry.k8s.io"` | |
|
||||||
| controller.image.runAsUser | int | `101` | |
|
| controller.image.runAsUser | int | `101` | |
|
||||||
| controller.image.tag | string | `"v1.8.1"` | |
|
| controller.image.tag | string | `"v1.9.4"` | |
|
||||||
| controller.ingressClass | string | `"nginx"` | For backwards compatibility with ingress.class annotation, use ingressClass. Algorithm is as follows, first ingressClassName is considered, if not present, controller looks for ingress.class annotation |
|
| controller.ingressClass | string | `"nginx"` | For backwards compatibility with ingress.class annotation, use ingressClass. Algorithm is as follows, first ingressClassName is considered, if not present, controller looks for ingress.class annotation |
|
||||||
| controller.ingressClassByName | bool | `false` | Process IngressClass per name (additionally as per spec.controller). |
|
| controller.ingressClassByName | bool | `false` | Process IngressClass per name (additionally as per spec.controller). |
|
||||||
| controller.ingressClassResource.controllerValue | string | `"k8s.io/ingress-nginx"` | Controller-value of the controller that is processing this ingressClass |
|
| controller.ingressClassResource.controllerValue | string | `"k8s.io/ingress-nginx"` | Controller-value of the controller that is processing this ingressClass |
|
||||||
@@ -372,10 +373,12 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.minAvailable | int | `1` | Minimum available pods set in PodDisruptionBudget. Define either 'minAvailable' or 'maxUnavailable', never both. |
|
| controller.minAvailable | int | `1` | Minimum available pods set in PodDisruptionBudget. Define either 'minAvailable' or 'maxUnavailable', never both. |
|
||||||
| controller.minReadySeconds | int | `0` | `minReadySeconds` to avoid killing pods before we are ready # |
|
| controller.minReadySeconds | int | `0` | `minReadySeconds` to avoid killing pods before we are ready # |
|
||||||
| controller.name | string | `"controller"` | |
|
| controller.name | string | `"controller"` | |
|
||||||
|
| controller.networkPolicy.enabled | bool | `false` | Enable 'networkPolicy' or not |
|
||||||
| controller.nodeSelector | object | `{"kubernetes.io/os":"linux"}` | Node labels for controller pod assignment # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ # |
|
| controller.nodeSelector | object | `{"kubernetes.io/os":"linux"}` | Node labels for controller pod assignment # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ # |
|
||||||
| controller.opentelemetry.containerSecurityContext.allowPrivilegeEscalation | bool | `false` | |
|
| controller.opentelemetry.containerSecurityContext.allowPrivilegeEscalation | bool | `false` | |
|
||||||
| controller.opentelemetry.enabled | bool | `false` | |
|
| controller.opentelemetry.enabled | bool | `false` | |
|
||||||
| controller.opentelemetry.image | string | `"registry.k8s.io/ingress-nginx/opentelemetry:v20230527@sha256:fd7ec835f31b7b37187238eb4fdad4438806e69f413a203796263131f4f02ed0"` | |
|
| controller.opentelemetry.image | string | `"registry.k8s.io/ingress-nginx/opentelemetry:v20230721-3e2062ee5@sha256:13bee3f5223883d3ca62fee7309ad02d22ec00ff0d7033e3e9aca7a9f60fd472"` | |
|
||||||
|
| controller.opentelemetry.resources | object | `{}` | |
|
||||||
| controller.podAnnotations | object | `{}` | Annotations to be added to controller pods # |
|
| controller.podAnnotations | object | `{}` | Annotations to be added to controller pods # |
|
||||||
| controller.podLabels | object | `{}` | Labels to add to the pod container metadata |
|
| controller.podLabels | object | `{}` | Labels to add to the pod container metadata |
|
||||||
| controller.podSecurityContext | object | `{}` | Security Context policies for controller pods |
|
| controller.podSecurityContext | object | `{}` | Security Context policies for controller pods |
|
||||||
@@ -399,14 +402,14 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| controller.scope.enabled | bool | `false` | Enable 'scope' or not |
|
| controller.scope.enabled | bool | `false` | Enable 'scope' or not |
|
||||||
| controller.scope.namespace | string | `""` | Namespace to limit the controller to; defaults to $(POD_NAMESPACE) |
|
| controller.scope.namespace | string | `""` | Namespace to limit the controller to; defaults to $(POD_NAMESPACE) |
|
||||||
| controller.scope.namespaceSelector | string | `""` | When scope.enabled == false, instead of watching all namespaces, we watching namespaces whose labels only match with namespaceSelector. Format like foo=bar. Defaults to empty, means watching all namespaces. |
|
| controller.scope.namespaceSelector | string | `""` | When scope.enabled == false, instead of watching all namespaces, we watching namespaces whose labels only match with namespaceSelector. Format like foo=bar. Defaults to empty, means watching all namespaces. |
|
||||||
| controller.service.annotations | object | `{}` | |
|
| controller.service.annotations | object | `{}` | Annotations are mandatory for the load balancer to come up. Varies with the cloud service. Values passed through helm tpl engine. |
|
||||||
| controller.service.appProtocol | bool | `true` | If enabled is adding an appProtocol option for Kubernetes service. An appProtocol field replacing annotations that were using for setting a backend protocol. Here is an example for AWS: service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http It allows choosing the protocol for each backend specified in the Kubernetes service. See the following GitHub issue for more details about the purpose: https://github.com/kubernetes/kubernetes/issues/40244 Will be ignored for Kubernetes versions older than 1.20 # |
|
| controller.service.appProtocol | bool | `true` | If enabled is adding an appProtocol option for Kubernetes service. An appProtocol field replacing annotations that were using for setting a backend protocol. Here is an example for AWS: service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http It allows choosing the protocol for each backend specified in the Kubernetes service. See the following GitHub issue for more details about the purpose: https://github.com/kubernetes/kubernetes/issues/40244 Will be ignored for Kubernetes versions older than 1.20 # |
|
||||||
| controller.service.enableHttp | bool | `true` | |
|
| controller.service.enableHttp | bool | `true` | |
|
||||||
| controller.service.enableHttps | bool | `true` | |
|
| controller.service.enableHttps | bool | `true` | |
|
||||||
| controller.service.enabled | bool | `true` | |
|
| controller.service.enabled | bool | `true` | |
|
||||||
| controller.service.external.enabled | bool | `true` | |
|
| controller.service.external.enabled | bool | `true` | |
|
||||||
| controller.service.externalIPs | list | `[]` | List of IP addresses at which the controller services are available # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips # |
|
| controller.service.externalIPs | list | `[]` | List of IP addresses at which the controller services are available # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips # |
|
||||||
| controller.service.internal.annotations | object | `{}` | Annotations are mandatory for the load balancer to come up. Varies with the cloud service. |
|
| controller.service.internal.annotations | object | `{}` | Annotations are mandatory for the load balancer to come up. Varies with the cloud service. Values passed through helm tpl engine. |
|
||||||
| controller.service.internal.enabled | bool | `false` | Enables an additional internal load balancer (besides the external one). |
|
| controller.service.internal.enabled | bool | `false` | Enables an additional internal load balancer (besides the external one). |
|
||||||
| controller.service.internal.loadBalancerIP | string | `""` | Used by cloud providers to connect the resulting internal LoadBalancer to a pre-existing static IP. Make sure to add to the service the needed annotation to specify the subnet which the static IP belongs to. For instance, `networking.gke.io/internal-load-balancer-subnet` for GCP and `service.beta.kubernetes.io/aws-load-balancer-subnets` for AWS. |
|
| controller.service.internal.loadBalancerIP | string | `""` | Used by cloud providers to connect the resulting internal LoadBalancer to a pre-existing static IP. Make sure to add to the service the needed annotation to specify the subnet which the static IP belongs to. For instance, `networking.gke.io/internal-load-balancer-subnet` for GCP and `service.beta.kubernetes.io/aws-load-balancer-subnets` for AWS. |
|
||||||
| controller.service.internal.loadBalancerSourceRanges | list | `[]` | Restrict access For LoadBalancer service. Defaults to 0.0.0.0/0. |
|
| controller.service.internal.loadBalancerSourceRanges | list | `[]` | Restrict access For LoadBalancer service. Defaults to 0.0.0.0/0. |
|
||||||
@@ -469,6 +472,7 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| defaultBackend.minAvailable | int | `1` | |
|
| defaultBackend.minAvailable | int | `1` | |
|
||||||
| defaultBackend.minReadySeconds | int | `0` | `minReadySeconds` to avoid killing pods before we are ready # |
|
| defaultBackend.minReadySeconds | int | `0` | `minReadySeconds` to avoid killing pods before we are ready # |
|
||||||
| defaultBackend.name | string | `"defaultbackend"` | |
|
| defaultBackend.name | string | `"defaultbackend"` | |
|
||||||
|
| defaultBackend.networkPolicy.enabled | bool | `false` | Enable 'networkPolicy' or not |
|
||||||
| defaultBackend.nodeSelector | object | `{"kubernetes.io/os":"linux"}` | Node labels for default backend pod assignment # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ # |
|
| defaultBackend.nodeSelector | object | `{"kubernetes.io/os":"linux"}` | Node labels for default backend pod assignment # Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ # |
|
||||||
| defaultBackend.podAnnotations | object | `{}` | Annotations to be added to default backend pods # |
|
| defaultBackend.podAnnotations | object | `{}` | Annotations to be added to default backend pods # |
|
||||||
| defaultBackend.podLabels | object | `{}` | Labels to add to the pod container metadata |
|
| defaultBackend.podLabels | object | `{}` | Labels to add to the pod container metadata |
|
||||||
@@ -494,6 +498,7 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu
|
|||||||
| defaultBackend.updateStrategy | object | `{}` | The update strategy to apply to the Deployment or DaemonSet # |
|
| defaultBackend.updateStrategy | object | `{}` | The update strategy to apply to the Deployment or DaemonSet # |
|
||||||
| dhParam | string | `""` | A base64-encoded Diffie-Hellman parameter. This can be generated with: `openssl dhparam 4096 2> /dev/null | base64` # Ref: https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/ssl-dh-param |
|
| dhParam | string | `""` | A base64-encoded Diffie-Hellman parameter. This can be generated with: `openssl dhparam 4096 2> /dev/null | base64` # Ref: https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/ssl-dh-param |
|
||||||
| imagePullSecrets | list | `[]` | Optional array of imagePullSecrets containing private registry credentials # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ |
|
| imagePullSecrets | list | `[]` | Optional array of imagePullSecrets containing private registry credentials # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ |
|
||||||
|
| namespaceOverride | string | `""` | Override the deployment namespace; defaults to .Release.Namespace |
|
||||||
| podSecurityPolicy.enabled | bool | `false` | |
|
| podSecurityPolicy.enabled | bool | `false` | |
|
||||||
| portNamePrefix | string | `""` | Prefix for TCP and UDP ports names in ingress controller service # Some cloud providers, like Yandex Cloud may have a requirements for a port name regex to support cloud load balancer integration |
|
| portNamePrefix | string | `""` | Prefix for TCP and UDP ports names in ingress controller service # Some cloud providers, like Yandex Cloud may have a requirements for a port name regex to support cloud load balancer integration |
|
||||||
| rbac.create | bool | `true` | |
|
| rbac.create | bool | `true` | |
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
|
### 4.7.2
|
||||||
|
|
||||||
|
* Update Ingress-Nginx version controller-v1.8.2
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.1...helm-chart-4.7.2
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
|
### 4.8.0-beta.0
|
||||||
|
|
||||||
|
* ci(helm): fix Helm Chart release action 422 error (#10237)
|
||||||
|
* helm: Use .Release.Namespace as default for ServiceMonitor namespace (#10249)
|
||||||
|
* [helm] configure allow to configure hostAliases (#10180)
|
||||||
|
* [helm] pass service annotations through helm tpl engine (#10084)
|
||||||
|
* Update Ingress-Nginx version controller-v1.9.0-beta.0
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.2...helm-chart-4.8.0-beta.0
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
|
### 4.8.0
|
||||||
|
|
||||||
|
* ci(helm): fix Helm Chart release action 422 error (#10237)
|
||||||
|
* helm: Use .Release.Namespace as default for ServiceMonitor namespace (#10249)
|
||||||
|
* [helm] configure allow to configure hostAliases (#10180)
|
||||||
|
* [helm] pass service annotations through helm tpl engine (#10084)
|
||||||
|
* Update Ingress-Nginx version controller-v1.9.0
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.7.2...helm-chart-4.8.0
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
|
### 4.8.1
|
||||||
|
|
||||||
|
* Update Ingress-Nginx version controller-v1.9.1
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.0...helm-chart-4.8.1
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
|
### 4.8.2
|
||||||
|
|
||||||
|
* - "update nginx base, httpbun, e2e, helm webhook cert gen (#10506)"
|
||||||
|
* - "Update Ingress-Nginx version controller-v1.9.3"
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.1...helm-chart-4.8.2
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
This file documents all notable changes to [ingress-nginx](https://github.com/kubernetes/ingress-nginx) Helm Chart. The release numbering uses [semantic versioning](http://semver.org).
|
||||||
|
|
||||||
|
### 4.8.3
|
||||||
|
* Update Ingress-Nginx version controller-v1.9.4
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/kubernetes/ingress-nginx/compare/helm-chart-4.8.2...helm-chart-4.8.3
|
||||||
@@ -30,6 +30,17 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
|
||||||
|
*/}}
|
||||||
|
{{- define "ingress-nginx.namespace" -}}
|
||||||
|
{{- if .Values.namespaceOverride -}}
|
||||||
|
{{- .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Release.Namespace -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Container SecurityContext.
|
Container SecurityContext.
|
||||||
@@ -198,7 +209,6 @@ IngressClass parameters.
|
|||||||
Extra modules.
|
Extra modules.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "extraModules" -}}
|
{{- define "extraModules" -}}
|
||||||
|
|
||||||
- name: {{ .name }}
|
- name: {{ .name }}
|
||||||
image: {{ .image }}
|
image: {{ .image }}
|
||||||
{{- if .distroless | default false }}
|
{{- if .distroless | default false }}
|
||||||
@@ -209,8 +219,10 @@ Extra modules.
|
|||||||
{{- if .containerSecurityContext }}
|
{{- if .containerSecurityContext }}
|
||||||
securityContext: {{ .containerSecurityContext | toYaml | nindent 4 }}
|
securityContext: {{ .containerSecurityContext | toYaml | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .resources }}
|
||||||
|
resources: {{ .resources | toYaml | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: {{ toYaml "modules"}}
|
- name: {{ toYaml "modules"}}
|
||||||
mountPath: {{ toYaml "/modules_mount"}}
|
mountPath: {{ toYaml "/modules_mount"}}
|
||||||
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{{- define "ingress-nginx.params" -}}
|
{{- define "ingress-nginx.params" -}}
|
||||||
- /nginx-ingress-controller
|
- /nginx-ingress-controller
|
||||||
|
{{- if .Values.controller.enableAnnotationValidations }}
|
||||||
|
- --enable-annotation-validation=true
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.defaultBackend.enabled }}
|
{{- if .Values.defaultBackend.enabled }}
|
||||||
- --default-backend-service=$(POD_NAMESPACE)/{{ include "ingress-nginx.defaultBackend.fullname" . }}
|
- --default-backend-service=$(POD_NAMESPACE)/{{ include "ingress-nginx.defaultBackend.fullname" . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ apiVersion: cert-manager.io/v1
|
|||||||
kind: Issuer
|
kind: Issuer
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-self-signed-issuer
|
name: {{ include "ingress-nginx.fullname" . }}-self-signed-issuer
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
selfSigned: {}
|
selfSigned: {}
|
||||||
---
|
---
|
||||||
@@ -15,7 +15,7 @@ apiVersion: cert-manager.io/v1
|
|||||||
kind: Certificate
|
kind: Certificate
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-root-cert
|
name: {{ include "ingress-nginx.fullname" . }}-root-cert
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
secretName: {{ include "ingress-nginx.fullname" . }}-root-cert
|
secretName: {{ include "ingress-nginx.fullname" . }}-root-cert
|
||||||
duration: {{ .Values.controller.admissionWebhooks.certManager.rootCert.duration | default "43800h0m0s" | quote }}
|
duration: {{ .Values.controller.admissionWebhooks.certManager.rootCert.duration | default "43800h0m0s" | quote }}
|
||||||
@@ -32,7 +32,7 @@ apiVersion: cert-manager.io/v1
|
|||||||
kind: Issuer
|
kind: Issuer
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-root-issuer
|
name: {{ include "ingress-nginx.fullname" . }}-root-issuer
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
ca:
|
ca:
|
||||||
secretName: {{ include "ingress-nginx.fullname" . }}-root-cert
|
secretName: {{ include "ingress-nginx.fullname" . }}-root-cert
|
||||||
@@ -43,7 +43,7 @@ apiVersion: cert-manager.io/v1
|
|||||||
kind: Certificate
|
kind: Certificate
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
secretName: {{ include "ingress-nginx.fullname" . }}-admission
|
secretName: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
duration: {{ .Values.controller.admissionWebhooks.certManager.admissionCert.duration | default "8760h0m0s" | quote }}
|
duration: {{ .Values.controller.admissionWebhooks.certManager.admissionCert.duration | default "8760h0m0s" | quote }}
|
||||||
@@ -55,8 +55,8 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
dnsNames:
|
dnsNames:
|
||||||
- {{ include "ingress-nginx.controller.fullname" . }}-admission
|
- {{ include "ingress-nginx.controller.fullname" . }}-admission
|
||||||
- {{ include "ingress-nginx.controller.fullname" . }}-admission.{{ .Release.Namespace }}
|
- {{ include "ingress-nginx.controller.fullname" . }}-admission.{{ include "ingress-nginx.namespace" . }}
|
||||||
- {{ include "ingress-nginx.controller.fullname" . }}-admission.{{ .Release.Namespace }}.svc
|
- {{ include "ingress-nginx.controller.fullname" . }}-admission.{{ include "ingress-nginx.namespace" . }}.svc
|
||||||
subject:
|
subject:
|
||||||
organizations:
|
organizations:
|
||||||
- ingress-nginx-admission
|
- ingress-nginx-admission
|
||||||
|
|||||||
@@ -19,5 +19,5 @@ roleRef:
|
|||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
namespace: {{ (include "ingress-nginx.namespace" .) | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: batch/v1
|
|||||||
kind: Job
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission-create
|
name: {{ include "ingress-nginx.fullname" . }}-admission-create
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": pre-install,pre-upgrade
|
"helm.sh/hook": pre-install,pre-upgrade
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: batch/v1
|
|||||||
kind: Job
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission-patch
|
name: {{ include "ingress-nginx.fullname" . }}-admission-patch
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": post-install,post-upgrade
|
"helm.sh/hook": post-install,post-upgrade
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.networkPolicyEnabled }}
|
{{- if and .Values.controller.admissionWebhooks.enabled .Values.controller.admissionWebhooks.patch.enabled (not .Values.controller.admissionWebhooks.certManager.enabled) -}}
|
||||||
apiVersion: networking.k8s.io/v1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: NetworkPolicy
|
kind: NetworkPolicy
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
@@ -16,11 +16,11 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
podSelector:
|
podSelector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
{{- include "ingress-nginx.labels" . | nindent 6 }}
|
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
||||||
app.kubernetes.io/component: admission-webhook
|
app.kubernetes.io/component: admission-webhook
|
||||||
policyTypes:
|
policyTypes:
|
||||||
- Ingress
|
- Ingress
|
||||||
- Egress
|
- Egress
|
||||||
egress:
|
egress:
|
||||||
- {}
|
- {}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: Role
|
kind: Role
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: rbac.authorization.k8s.io/v1
|
|||||||
kind: RoleBinding
|
kind: RoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
@@ -20,5 +20,5 @@ roleRef:
|
|||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
namespace: {{ (include "ingress-nginx.namespace" .) | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ apiVersion: v1
|
|||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-admission
|
name: {{ include "ingress-nginx.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
"helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
|
||||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ webhooks:
|
|||||||
- v1
|
- v1
|
||||||
clientConfig:
|
clientConfig:
|
||||||
service:
|
service:
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
namespace: {{ (include "ingress-nginx.namespace" .) | quote }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
|
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
|
||||||
path: /networking/v1/ingresses
|
path: /networking/v1/ingresses
|
||||||
{{- if .Values.controller.admissionWebhooks.timeoutSeconds }}
|
{{- if .Values.controller.admissionWebhooks.timeoutSeconds }}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- if .Values.controller.annotations }}
|
{{- if .Values.controller.annotations }}
|
||||||
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -27,7 +27,7 @@ spec:
|
|||||||
matchLabels:
|
matchLabels:
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
{{- if not .Values.controller.autoscaling.enabled }}
|
{{- if not (or .Values.controller.autoscaling.enabled .Values.controller.keda.enabled) }}
|
||||||
{{- if eq .Values.kind "AppSecStateful" }}
|
{{- if eq .Values.kind "AppSecStateful" }}
|
||||||
serviceName: "open-appsec-stateful-set"
|
serviceName: "open-appsec-stateful-set"
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -38,11 +38,10 @@ spec:
|
|||||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||||
{{- if .Values.controller.updateStrategy }}
|
{{- if .Values.controller.updateStrategy }}
|
||||||
{{- if (and (not (eq .Values.kind "AppSecStateful")) (eq .Values.controller.kind "DaemonSet")) }}
|
{{- if (and (not (eq .Values.kind "AppSecStateful")) (eq .Values.controller.kind "DaemonSet")) }}
|
||||||
updateStrategy:
|
updateStrategy: {{ toYaml .Values.controller.updateStrategy | nindent 4 }}:
|
||||||
{{- else }}
|
{{- else }}
|
||||||
strategy:
|
strategy: {{ toYaml .Values.controller.updateStrategy | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{ toYaml .Values.controller.updateStrategy | nindent 4 }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if (eq .Values.kind "AppSec") }}
|
{{- if (eq .Values.kind "AppSec") }}
|
||||||
minReadySeconds: {{ .Values.controller.minReadySeconds }}
|
minReadySeconds: {{ .Values.controller.minReadySeconds }}
|
||||||
@@ -68,6 +67,9 @@ spec:
|
|||||||
{{- if .Values.controller.dnsConfig }}
|
{{- if .Values.controller.dnsConfig }}
|
||||||
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .Values.controller.hostAliases }}
|
||||||
|
hostAliases: {{ tpl (toYaml .Values.controller.hostAliases) $ | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.controller.hostname }}
|
{{- if .Values.controller.hostname }}
|
||||||
hostname: {{ toYaml .Values.controller.hostname | nindent 8 }}
|
hostname: {{ toYaml .Values.controller.hostname | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -268,17 +270,14 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.extraModules }}
|
{{- if .Values.controller.extraModules }}
|
||||||
{{- range .Values.controller.extraModules }}
|
{{- range .Values.controller.extraModules }}
|
||||||
{{ $containerSecurityContext := .containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
{{- $containerSecurityContext := .containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
||||||
{{ include "extraModules" (dict "name" .name "image" .image "containerSecurityContext" $containerSecurityContext) | indent 8 }}
|
{{- include "extraModules" (dict "name" .name "image" .image "containerSecurityContext" $containerSecurityContext) | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.opentelemetry.enabled}}
|
{{- if .Values.controller.opentelemetry.enabled}}
|
||||||
{{ $otelContainerSecurityContext := $.Values.controller.opentelemetry.containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
{{- $otelContainerSecurityContext := $.Values.controller.opentelemetry.containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
||||||
{{- if (and (not (eq .Values.kind "AppSecStateful")) (eq .Values.controller.kind "DaemonSet")) }}
|
{{ $otelResources := $.Values.controller.opentelemetry.resources | default dict }}
|
||||||
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext ) | nindent 8}}
|
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext "distroless" true "resources" $otelResources) | nindent 8}}
|
||||||
{{ else }}
|
|
||||||
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext "distroless" false) | nindent 8}}
|
|
||||||
{{- end }}
|
|
||||||
{{- end}}
|
{{- end}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.hostNetwork }}
|
{{- if .Values.controller.hostNetwork }}
|
||||||
@@ -294,7 +293,7 @@ spec:
|
|||||||
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.topologySpreadConstraints }}
|
{{- if .Values.controller.topologySpreadConstraints }}
|
||||||
topologySpreadConstraints: {{ toYaml .Values.controller.topologySpreadConstraints | nindent 8 }}
|
topologySpreadConstraints: {{ tpl (toYaml .Values.controller.topologySpreadConstraints) $ | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
||||||
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
||||||
|
|||||||
@@ -15,5 +15,5 @@ roleRef:
|
|||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
namespace: {{ (include "ingress-nginx.namespace" .) | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-custom-add-headers
|
name: {{ include "ingress-nginx.fullname" . }}-custom-add-headers
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
data: {{ toYaml .Values.controller.addHeaders | nindent 2 }}
|
data: {{ toYaml .Values.controller.addHeaders | nindent 2 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-custom-proxy-headers
|
name: {{ include "ingress-nginx.fullname" . }}-custom-proxy-headers
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
data: {{ toYaml .Values.controller.proxySetHeaders | nindent 2 }}
|
data: {{ toYaml .Values.controller.proxySetHeaders | nindent 2 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ metadata:
|
|||||||
annotations: {{ toYaml .Values.controller.tcp.annotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.tcp.annotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-tcp
|
name: {{ include "ingress-nginx.fullname" . }}-tcp
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
data: {{ tpl (toYaml .Values.tcp) . | nindent 2 }}
|
data: {{ tpl (toYaml .Values.tcp) . | nindent 2 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ metadata:
|
|||||||
annotations: {{ toYaml .Values.controller.udp.annotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.udp.annotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-udp
|
name: {{ include "ingress-nginx.fullname" . }}-udp
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
data: {{ tpl (toYaml .Values.udp) . | nindent 2 }}
|
data: {{ tpl (toYaml .Values.udp) . | nindent 2 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -11,17 +11,17 @@ metadata:
|
|||||||
annotations: {{ toYaml .Values.controller.configAnnotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.configAnnotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
data:
|
data:
|
||||||
allow-snippet-annotations: "{{ .Values.controller.allowSnippetAnnotations }}"
|
allow-snippet-annotations: "{{ .Values.controller.allowSnippetAnnotations }}"
|
||||||
{{- if .Values.controller.addHeaders }}
|
{{- if .Values.controller.addHeaders }}
|
||||||
add-headers: {{ .Release.Namespace }}/{{ include "ingress-nginx.fullname" . }}-custom-add-headers
|
add-headers: {{ include "ingress-nginx.namespace" . }}/{{ include "ingress-nginx.fullname" . }}-custom-add-headers
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.proxySetHeaders }}
|
{{- if .Values.controller.proxySetHeaders }}
|
||||||
proxy-set-headers: {{ .Release.Namespace }}/{{ include "ingress-nginx.fullname" . }}-custom-proxy-headers
|
proxy-set-headers: {{ include "ingress-nginx.namespace" . }}/{{ include "ingress-nginx.fullname" . }}-custom-proxy-headers
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.dhParam }}
|
{{- if .Values.dhParam }}
|
||||||
ssl-dh-param: {{ .Release.Namespace }}/{{ include "ingress-nginx.controller.fullname" . }}
|
ssl-dh-param: {{ include "ingress-nginx.namespace" . }}/{{ include "ingress-nginx.controller.fullname" . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range $key, $value := .Values.controller.config }}
|
{{- range $key, $value := .Values.controller.config }}
|
||||||
{{- $key | nindent 2 }}: {{ $value | quote }}
|
{{- $key | nindent 2 }}: {{ $value | quote }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{- if and (eq .Values.kind "Vanilla") (or (eq .Values.controller.kind "DaemonSet") (eq .Values.controller.kind "Both")) -}}
|
{{- if and (eq .Values.kind "Vanilla") (eq .Values.controller.kind "DaemonSet") -}}
|
||||||
{{- include "isControllerTagValid" . -}}
|
{{- include "isControllerTagValid" . -}}
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: DaemonSet
|
kind: DaemonSet
|
||||||
@@ -10,7 +10,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- if .Values.controller.annotations }}
|
{{- if .Values.controller.annotations }}
|
||||||
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -45,6 +45,9 @@ spec:
|
|||||||
{{- if .Values.controller.dnsConfig }}
|
{{- if .Values.controller.dnsConfig }}
|
||||||
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .Values.controller.hostAliases }}
|
||||||
|
hostAliases: {{ tpl (toYaml .Values.controller.hostAliases) $ | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.controller.hostname }}
|
{{- if .Values.controller.hostname }}
|
||||||
hostname: {{ toYaml .Values.controller.hostname | nindent 8 }}
|
hostname: {{ toYaml .Values.controller.hostname | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -180,13 +183,14 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.extraModules }}
|
{{- if .Values.controller.extraModules }}
|
||||||
{{- range .Values.controller.extraModules }}
|
{{- range .Values.controller.extraModules }}
|
||||||
{{ $containerSecurityContext := .containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
{{- $containerSecurityContext := .containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
||||||
{{ include "extraModules" (dict "name" .name "image" .image "containerSecurityContext" $containerSecurityContext) | indent 8 }}
|
{{- include "extraModules" (dict "name" .name "image" .image "containerSecurityContext" $containerSecurityContext) | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.opentelemetry.enabled}}
|
{{- if .Values.controller.opentelemetry.enabled}}
|
||||||
{{ $otelContainerSecurityContext := $.Values.controller.opentelemetry.containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
{{- $otelContainerSecurityContext := $.Values.controller.opentelemetry.containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
||||||
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext) | nindent 8}}
|
{{ $otelResources := $.Values.controller.opentelemetry.resources | default dict }}
|
||||||
|
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext "distroless" true "resources" $otelResources) | nindent 8}}
|
||||||
{{- end}}
|
{{- end}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.hostNetwork }}
|
{{- if .Values.controller.hostNetwork }}
|
||||||
@@ -202,7 +206,7 @@ spec:
|
|||||||
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.topologySpreadConstraints }}
|
{{- if .Values.controller.topologySpreadConstraints }}
|
||||||
topologySpreadConstraints: {{ toYaml .Values.controller.topologySpreadConstraints | nindent 8 }}
|
topologySpreadConstraints: {{ tpl (toYaml .Values.controller.topologySpreadConstraints) $ | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
||||||
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{- if and (eq .Values.kind "Vanilla") (or (eq .Values.controller.kind "Deployment") (eq .Values.controller.kind "Both")) -}}
|
{{- if and (eq .Values.kind "Vanilla") (eq .Values.controller.kind "Deployment") -}}
|
||||||
{{- include "isControllerTagValid" . -}}
|
{{- include "isControllerTagValid" . -}}
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
@@ -10,7 +10,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- if .Values.controller.annotations }}
|
{{- if .Values.controller.annotations }}
|
||||||
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -19,13 +19,12 @@ spec:
|
|||||||
matchLabels:
|
matchLabels:
|
||||||
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
||||||
app.kubernetes.io/component: controller
|
app.kubernetes.io/component: controller
|
||||||
{{- if not .Values.controller.autoscaling.enabled }}
|
{{- if not (or .Values.controller.autoscaling.enabled .Values.controller.keda.enabled) }}
|
||||||
replicas: {{ .Values.controller.replicaCount }}
|
replicas: {{ .Values.controller.replicaCount }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||||
{{- if .Values.controller.updateStrategy }}
|
{{- if .Values.controller.updateStrategy }}
|
||||||
strategy:
|
strategy: {{ toYaml .Values.controller.updateStrategy | nindent 4 }}
|
||||||
{{ toYaml .Values.controller.updateStrategy | nindent 4 }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
minReadySeconds: {{ .Values.controller.minReadySeconds }}
|
minReadySeconds: {{ .Values.controller.minReadySeconds }}
|
||||||
template:
|
template:
|
||||||
@@ -49,6 +48,9 @@ spec:
|
|||||||
{{- if .Values.controller.dnsConfig }}
|
{{- if .Values.controller.dnsConfig }}
|
||||||
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
dnsConfig: {{ toYaml .Values.controller.dnsConfig | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .Values.controller.hostAliases }}
|
||||||
|
hostAliases: {{ tpl (toYaml .Values.controller.hostAliases) $ | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.controller.hostname }}
|
{{- if .Values.controller.hostname }}
|
||||||
hostname: {{ toYaml .Values.controller.hostname | nindent 8 }}
|
hostname: {{ toYaml .Values.controller.hostname | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -184,13 +186,14 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.extraModules }}
|
{{- if .Values.controller.extraModules }}
|
||||||
{{- range .Values.controller.extraModules }}
|
{{- range .Values.controller.extraModules }}
|
||||||
{{ $containerSecurityContext := .containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
{{- $containerSecurityContext := .containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
||||||
{{ include "extraModules" (dict "name" .name "image" .image "containerSecurityContext" $containerSecurityContext) | indent 8 }}
|
{{- include "extraModules" (dict "name" .name "image" .image "containerSecurityContext" $containerSecurityContext) | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.opentelemetry.enabled}}
|
{{- if .Values.controller.opentelemetry.enabled}}
|
||||||
{{ $otelContainerSecurityContext := $.Values.controller.opentelemetry.containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
{{- $otelContainerSecurityContext := $.Values.controller.opentelemetry.containerSecurityContext | default $.Values.controller.containerSecurityContext }}
|
||||||
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext "distroless" false) | nindent 8}}
|
{{ $otelResources := $.Values.controller.opentelemetry.resources | default dict }}
|
||||||
|
{{- include "extraModules" (dict "name" "opentelemetry" "image" .Values.controller.opentelemetry.image "containerSecurityContext" $otelContainerSecurityContext "distroless" true "resources" $otelResources) | nindent 8}}
|
||||||
{{- end}}
|
{{- end}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.hostNetwork }}
|
{{- if .Values.controller.hostNetwork }}
|
||||||
@@ -206,7 +209,7 @@ spec:
|
|||||||
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
affinity: {{ toYaml .Values.controller.affinity | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.topologySpreadConstraints }}
|
{{- if .Values.controller.topologySpreadConstraints }}
|
||||||
topologySpreadConstraints: {{ toYaml .Values.controller.topologySpreadConstraints | nindent 8 }}
|
topologySpreadConstraints: {{ tpl (toYaml .Values.controller.topologySpreadConstraints) $ | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
serviceAccountName: {{ template "ingress-nginx.serviceAccountName" . }}
|
||||||
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
terminationGracePeriodSeconds: {{ .Values.controller.terminationGracePeriodSeconds }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{- if and (or (eq .Values.controller.kind "Deployment") (eq .Values.controller.kind "Both")) .Values.controller.autoscaling.enabled (not .Values.controller.keda.enabled) -}}
|
{{- if and (eq .Values.controller.kind "Deployment") .Values.controller.autoscaling.enabled (not .Values.controller.keda.enabled) -}}
|
||||||
apiVersion: {{ ternary "autoscaling/v2" "autoscaling/v2beta2" (.Capabilities.APIVersions.Has "autoscaling/v2") }}
|
apiVersion: {{ ternary "autoscaling/v2" "autoscaling/v2beta2" (.Capabilities.APIVersions.Has "autoscaling/v2") }}
|
||||||
kind: HorizontalPodAutoscaler
|
kind: HorizontalPodAutoscaler
|
||||||
metadata:
|
metadata:
|
||||||
@@ -12,7 +12,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{- if and .Values.controller.keda.enabled (or (eq .Values.controller.kind "Deployment") (eq .Values.controller.kind "Both")) -}}
|
{{- if and .Values.controller.keda.enabled (eq .Values.controller.kind "Deployment") -}}
|
||||||
# https://keda.sh/docs/
|
# https://keda.sh/docs/
|
||||||
|
|
||||||
apiVersion: {{ .Values.controller.keda.apiVersion }}
|
apiVersion: {{ .Values.controller.keda.apiVersion }}
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
{{- if .Values.controller.networkPolicy.enabled }}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
{{- with .Values.controller.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: controller
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
- Egress
|
||||||
|
ingress:
|
||||||
|
- ports:
|
||||||
|
{{- range $key, $value := .Values.controller.containerPort }}
|
||||||
|
- protocol: TCP
|
||||||
|
port: {{ $value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.controller.metrics.enabled }}
|
||||||
|
- protocol: TCP
|
||||||
|
port: {{ .Values.controller.metrics.port }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.controller.admissionWebhooks.enabled }}
|
||||||
|
- protocol: TCP
|
||||||
|
port: {{ .Values.controller.admissionWebhooks.port }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.tcp }}
|
||||||
|
- protocol: TCP
|
||||||
|
port: {{ $key }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $key, $value := .Values.udp }}
|
||||||
|
- protocol: UDP
|
||||||
|
port: {{ $key }}
|
||||||
|
{{- end }}
|
||||||
|
egress:
|
||||||
|
- {}
|
||||||
|
{{- end }}
|
||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- if .Values.controller.annotations }}
|
{{- if .Values.controller.annotations }}
|
||||||
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
annotations: {{ toYaml .Values.controller.annotations | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
name: {{ include "ingress-nginx.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- ""
|
- ""
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}
|
name: {{ include "ingress-nginx.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: Role
|
kind: Role
|
||||||
@@ -17,5 +17,5 @@ roleRef:
|
|||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
namespace: {{ (include "ingress-nginx.namespace" .) | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
data:
|
data:
|
||||||
dhparam.pem: {{ .Values.dhParam }}
|
dhparam.pem: {{ .Values.dhParam }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ kind: Service
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
{{- range $key, $value := .Values.controller.service.internal.annotations }}
|
{{- range $key, $value := .Values.controller.service.internal.annotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ tpl ($value | toString) $ | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
||||||
@@ -13,7 +13,7 @@ metadata:
|
|||||||
{{- toYaml .Values.controller.service.labels | nindent 4 }}
|
{{- toYaml .Values.controller.service.labels | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-internal
|
name: {{ include "ingress-nginx.controller.fullname" . }}-internal
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
type: "{{ .Values.controller.service.type }}"
|
type: "{{ .Values.controller.service.type }}"
|
||||||
{{- if .Values.controller.service.internal.loadBalancerIP }}
|
{{- if .Values.controller.service.internal.loadBalancerIP }}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ metadata:
|
|||||||
{{- toYaml .Values.controller.metrics.service.labels | nindent 4 }}
|
{{- toYaml .Values.controller.metrics.service.labels | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-metrics
|
name: {{ include "ingress-nginx.controller.fullname" . }}-metrics
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ .Values.controller.metrics.service.type }}
|
type: {{ .Values.controller.metrics.service.type }}
|
||||||
{{- if .Values.controller.metrics.service.clusterIP }}
|
{{- if .Values.controller.metrics.service.clusterIP }}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
|
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ .Values.controller.admissionWebhooks.service.type }}
|
type: {{ .Values.controller.admissionWebhooks.service.type }}
|
||||||
{{- if .Values.controller.admissionWebhooks.service.clusterIP }}
|
{{- if .Values.controller.admissionWebhooks.service.clusterIP }}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ kind: Service
|
|||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
{{- range $key, $value := .Values.controller.service.annotations }}
|
{{- range $key, $value := .Values.controller.service.annotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ tpl ($value | toString) $ | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
||||||
@@ -13,7 +13,7 @@ metadata:
|
|||||||
{{- toYaml .Values.controller.service.labels | nindent 4 }}
|
{{- toYaml .Values.controller.service.labels | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ .Values.controller.service.type }}
|
type: {{ .Values.controller.service.type }}
|
||||||
{{- if .Values.controller.service.clusterIP }}
|
{{- if .Values.controller.service.clusterIP }}
|
||||||
|
|||||||
@@ -9,10 +9,9 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
name: {{ template "ingress-nginx.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- if .Values.serviceAccount.annotations }}
|
{{- if .Values.serviceAccount.annotations }}
|
||||||
annotations:
|
annotations: {{ toYaml .Values.serviceAccount.annotations | nindent 4 }}
|
||||||
{{- toYaml .Values.serviceAccount.annotations | nindent 4 }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ metadata:
|
|||||||
name: {{ include "ingress-nginx.controller.fullname" . }}
|
name: {{ include "ingress-nginx.controller.fullname" . }}
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.namespace }}
|
{{- if .Values.controller.metrics.serviceMonitor.namespace }}
|
||||||
namespace: {{ .Values.controller.metrics.serviceMonitor.namespace | quote }}
|
namespace: {{ .Values.controller.metrics.serviceMonitor.namespace | quote }}
|
||||||
|
{{- else }}
|
||||||
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
||||||
@@ -33,7 +35,7 @@ spec:
|
|||||||
{{- else }}
|
{{- else }}
|
||||||
namespaceSelector:
|
namespaceSelector:
|
||||||
matchNames:
|
matchNames:
|
||||||
- {{ .Release.Namespace }}
|
- {{ include "ingress-nginx.namespace" . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.controller.metrics.serviceMonitor.targetLabels }}
|
{{- if .Values.controller.metrics.serviceMonitor.targetLabels }}
|
||||||
targetLabels:
|
targetLabels:
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
{{- if .Values.controller.admissionWebhooks.enabled }}
|
|
||||||
{{- if .Values.controller.admissionWebhooks.networkPolicyEnabled }}
|
|
||||||
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: NetworkPolicy
|
|
||||||
metadata:
|
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-webhooks-allow
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
spec:
|
|
||||||
ingress:
|
|
||||||
- {}
|
|
||||||
podSelector:
|
|
||||||
matchLabels:
|
|
||||||
app.kubernetes.io/name: {{ include "ingress-nginx.name" . }}
|
|
||||||
policyTypes:
|
|
||||||
- Ingress
|
|
||||||
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{{- if and .Values.defaultBackend.enabled .Values.defaultBackend.networkPolicy.enabled }}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "ingress-nginx.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: default-backend
|
||||||
|
{{- with .Values.defaultBackend.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
||||||
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "ingress-nginx.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: default-backend
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
- Egress
|
||||||
|
ingress:
|
||||||
|
- ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: {{ .Values.defaultBackend.port }}
|
||||||
|
{{- end }}
|
||||||
@@ -10,7 +10,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-backend
|
name: {{ include "ingress-nginx.fullname" . }}-backend
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
rules:
|
rules:
|
||||||
- apiGroups: [{{ template "podSecurityPolicy.apiGroup" . }}]
|
- apiGroups: [{{ template "podSecurityPolicy.apiGroup" . }}]
|
||||||
resources: ['podsecuritypolicies']
|
resources: ['podsecuritypolicies']
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.fullname" . }}-backend
|
name: {{ include "ingress-nginx.fullname" . }}-backend
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: Role
|
kind: Role
|
||||||
@@ -17,5 +17,5 @@ roleRef:
|
|||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }}
|
name: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace | quote }}
|
namespace: {{ (include "ingress-nginx.namespace" .) | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
name: {{ include "ingress-nginx.defaultBackend.fullname" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
spec:
|
spec:
|
||||||
type: {{ .Values.defaultBackend.service.type }}
|
type: {{ .Values.defaultBackend.service.type }}
|
||||||
{{- if .Values.defaultBackend.service.clusterIP }}
|
{{- if .Values.defaultBackend.service.clusterIP }}
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ metadata:
|
|||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
name: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }}
|
name: {{ template "ingress-nginx.defaultBackend.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ include "ingress-nginx.namespace" . }}
|
||||||
automountServiceAccountToken: {{ .Values.defaultBackend.serviceAccount.automountServiceAccountToken }}
|
automountServiceAccountToken: {{ .Values.defaultBackend.serviceAccount.automountServiceAccountToken }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
# nameOverride:
|
# nameOverride:
|
||||||
# fullnameOverride:
|
# fullnameOverride:
|
||||||
|
|
||||||
|
# -- Override the deployment namespace; defaults to .Release.Namespace
|
||||||
|
namespaceOverride: ""
|
||||||
|
|
||||||
## Labels to apply to all resources
|
## Labels to apply to all resources
|
||||||
##
|
##
|
||||||
commonLabels: {}
|
commonLabels: {}
|
||||||
@@ -15,6 +18,7 @@ commonLabels: {}
|
|||||||
|
|
||||||
controller:
|
controller:
|
||||||
name: controller
|
name: controller
|
||||||
|
enableAnnotationValidations: false
|
||||||
image:
|
image:
|
||||||
## Keep false as default for now!
|
## Keep false as default for now!
|
||||||
chroot: false
|
chroot: false
|
||||||
@@ -23,9 +27,9 @@ controller:
|
|||||||
## for backwards compatibility consider setting the full image url via the repository value below
|
## for backwards compatibility consider setting the full image url via the repository value below
|
||||||
## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
|
## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
|
||||||
## repository:
|
## repository:
|
||||||
tag: "v1.8.1"
|
tag: "v1.9.4"
|
||||||
digest: sha256:e5c4824e7375fcf2a393e1c03c293b69759af37a9ca6abdb91b13d78a93da8bd
|
digest: sha256:5b161f051d017e55d358435f295f5e9a297e66158f136321d9b04520ec6c48a3
|
||||||
digestChroot: sha256:e0d4121e3c5e39de9122e55e331a32d5ebf8d4d257227cb93ab54a1b912a7627
|
digestChroot: sha256:5976b1067cfbca8a21d0ba53d71f83543a73316a61ea7f7e436d6cf84ddf9b26
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
# www-data -> uid 101
|
# www-data -> uid 101
|
||||||
runAsUser: 101
|
runAsUser: 101
|
||||||
@@ -48,6 +52,16 @@ controller:
|
|||||||
addHeaders: {}
|
addHeaders: {}
|
||||||
# -- Optionally customize the pod dnsConfig.
|
# -- Optionally customize the pod dnsConfig.
|
||||||
dnsConfig: {}
|
dnsConfig: {}
|
||||||
|
# -- Optionally customize the pod hostAliases.
|
||||||
|
hostAliases: []
|
||||||
|
# - ip: 127.0.0.1
|
||||||
|
# hostnames:
|
||||||
|
# - foo.local
|
||||||
|
# - bar.local
|
||||||
|
# - ip: 10.1.2.3
|
||||||
|
# hostnames:
|
||||||
|
# - foo.remote
|
||||||
|
# - bar.remote
|
||||||
# -- Optionally customize the pod hostname.
|
# -- Optionally customize the pod hostname.
|
||||||
hostname: {}
|
hostname: {}
|
||||||
# -- Optionally change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true'.
|
# -- Optionally change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true'.
|
||||||
@@ -63,14 +77,14 @@ controller:
|
|||||||
watchIngressWithoutClass: false
|
watchIngressWithoutClass: false
|
||||||
# -- Process IngressClass per name (additionally as per spec.controller).
|
# -- Process IngressClass per name (additionally as per spec.controller).
|
||||||
ingressClassByName: false
|
ingressClassByName: false
|
||||||
# -- This configuration enables Topology Aware Routing feature, used together with service annotation service.kubernetes.io/topology-aware-hints="auto"
|
# -- This configuration enables Topology Aware Routing feature, used together with service annotation service.kubernetes.io/topology-mode="auto"
|
||||||
# Defaults to false
|
# Defaults to false
|
||||||
enableTopologyAwareRouting: false
|
enableTopologyAwareRouting: false
|
||||||
# -- This configuration defines if Ingress Controller should allow users to set
|
# -- This configuration defines if Ingress Controller should allow users to set
|
||||||
# their own *-snippet annotations, otherwise this is forbidden / dropped
|
# their own *-snippet annotations, otherwise this is forbidden / dropped
|
||||||
# when users add those annotations.
|
# when users add those annotations.
|
||||||
# Global snippets in ConfigMap are still respected
|
# Global snippets in ConfigMap are still respected
|
||||||
allowSnippetAnnotations: true
|
allowSnippetAnnotations: false
|
||||||
# -- Required for use with CNI based kubernetes installations (such as ones set up by kubeadm),
|
# -- Required for use with CNI based kubernetes installations (such as ones set up by kubeadm),
|
||||||
# since CNI and hostport don't mix yet. Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920
|
# since CNI and hostport don't mix yet. Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920
|
||||||
# is merged
|
# is merged
|
||||||
@@ -85,6 +99,10 @@ controller:
|
|||||||
http: 80
|
http: 80
|
||||||
# -- 'hostPort' https port
|
# -- 'hostPort' https port
|
||||||
https: 443
|
https: 443
|
||||||
|
# NetworkPolicy for controller component.
|
||||||
|
networkPolicy:
|
||||||
|
# -- Enable 'networkPolicy' or not
|
||||||
|
enabled: false
|
||||||
# -- Election ID to use for status update, by default it uses the controller name combined with a suffix of 'leader'
|
# -- Election ID to use for status update, by default it uses the controller name combined with a suffix of 'leader'
|
||||||
electionID: ""
|
electionID: ""
|
||||||
## This section refers to the creation of the IngressClass resource
|
## This section refers to the creation of the IngressClass resource
|
||||||
@@ -245,12 +263,22 @@ controller:
|
|||||||
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
||||||
##
|
##
|
||||||
topologySpreadConstraints: []
|
topologySpreadConstraints: []
|
||||||
# - maxSkew: 1
|
# - labelSelector:
|
||||||
# topologyKey: topology.kubernetes.io/zone
|
|
||||||
# whenUnsatisfiable: DoNotSchedule
|
|
||||||
# labelSelector:
|
|
||||||
# matchLabels:
|
# matchLabels:
|
||||||
# app.kubernetes.io/instance: ingress-nginx-internal
|
# app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}'
|
||||||
|
# app.kubernetes.io/instance: '{{ .Release.Name }}'
|
||||||
|
# app.kubernetes.io/component: controller
|
||||||
|
# topologyKey: topology.kubernetes.io/zone
|
||||||
|
# maxSkew: 1
|
||||||
|
# whenUnsatisfiable: ScheduleAnyway
|
||||||
|
# - labelSelector:
|
||||||
|
# matchLabels:
|
||||||
|
# app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}'
|
||||||
|
# app.kubernetes.io/instance: '{{ .Release.Name }}'
|
||||||
|
# app.kubernetes.io/component: controller
|
||||||
|
# topologyKey: kubernetes.io/hostname
|
||||||
|
# maxSkew: 1
|
||||||
|
# whenUnsatisfiable: ScheduleAnyway
|
||||||
|
|
||||||
# -- `terminationGracePeriodSeconds` to avoid killing pods before we are ready
|
# -- `terminationGracePeriodSeconds` to avoid killing pods before we are ready
|
||||||
## wait up to five minutes for the drain of connections
|
## wait up to five minutes for the drain of connections
|
||||||
@@ -415,6 +443,7 @@ controller:
|
|||||||
# Will be ignored for Kubernetes versions older than 1.20
|
# Will be ignored for Kubernetes versions older than 1.20
|
||||||
##
|
##
|
||||||
appProtocol: true
|
appProtocol: true
|
||||||
|
# -- Annotations are mandatory for the load balancer to come up. Varies with the cloud service. Values passed through helm tpl engine.
|
||||||
annotations: {}
|
annotations: {}
|
||||||
labels: {}
|
labels: {}
|
||||||
# clusterIP: ""
|
# clusterIP: ""
|
||||||
@@ -476,7 +505,7 @@ controller:
|
|||||||
internal:
|
internal:
|
||||||
# -- Enables an additional internal load balancer (besides the external one).
|
# -- Enables an additional internal load balancer (besides the external one).
|
||||||
enabled: false
|
enabled: false
|
||||||
# -- Annotations are mandatory for the load balancer to come up. Varies with the cloud service.
|
# -- Annotations are mandatory for the load balancer to come up. Varies with the cloud service. Values passed through helm tpl engine.
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# -- Used by cloud providers to connect the resulting internal LoadBalancer to a pre-existing static IP. Make sure to add to the service the needed annotation to specify the subnet which the static IP belongs to. For instance, `networking.gke.io/internal-load-balancer-subnet` for GCP and `service.beta.kubernetes.io/aws-load-balancer-subnets` for AWS.
|
# -- Used by cloud providers to connect the resulting internal LoadBalancer to a pre-existing static IP. Make sure to add to the service the needed annotation to specify the subnet which the static IP belongs to. For instance, `networking.gke.io/internal-load-balancer-subnet` for GCP and `service.beta.kubernetes.io/aws-load-balancer-subnets` for AWS.
|
||||||
loadBalancerIP: ""
|
loadBalancerIP: ""
|
||||||
@@ -552,9 +581,10 @@ controller:
|
|||||||
|
|
||||||
opentelemetry:
|
opentelemetry:
|
||||||
enabled: false
|
enabled: false
|
||||||
image: registry.k8s.io/ingress-nginx/opentelemetry:v20230527@sha256:fd7ec835f31b7b37187238eb4fdad4438806e69f413a203796263131f4f02ed0
|
image: registry.k8s.io/ingress-nginx/opentelemetry:v20230721-3e2062ee5@sha256:13bee3f5223883d3ca62fee7309ad02d22ec00ff0d7033e3e9aca7a9f60fd472
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
allowPrivilegeEscalation: false
|
allowPrivilegeEscalation: false
|
||||||
|
resources: {}
|
||||||
admissionWebhooks:
|
admissionWebhooks:
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# ignore-check.kube-linter.io/no-read-only-rootfs: "This deployment needs write access to root filesystem".
|
# ignore-check.kube-linter.io/no-read-only-rootfs: "This deployment needs write access to root filesystem".
|
||||||
@@ -583,7 +613,6 @@ controller:
|
|||||||
labels: {}
|
labels: {}
|
||||||
# -- Use an existing PSP instead of creating one
|
# -- Use an existing PSP instead of creating one
|
||||||
existingPsp: ""
|
existingPsp: ""
|
||||||
networkPolicyEnabled: false
|
|
||||||
service:
|
service:
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# clusterIP: ""
|
# clusterIP: ""
|
||||||
@@ -614,8 +643,8 @@ controller:
|
|||||||
## for backwards compatibility consider setting the full image url via the repository value below
|
## for backwards compatibility consider setting the full image url via the repository value below
|
||||||
## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
|
## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
|
||||||
## repository:
|
## repository:
|
||||||
tag: v20230407
|
tag: v20231011-8b53cabe0
|
||||||
digest: sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b
|
digest: sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
# -- Provide a priority class name to the webhook patching job
|
# -- Provide a priority class name to the webhook patching job
|
||||||
##
|
##
|
||||||
@@ -673,7 +702,7 @@ controller:
|
|||||||
## jobLabel: "app.kubernetes.io/name"
|
## jobLabel: "app.kubernetes.io/name"
|
||||||
namespace: ""
|
namespace: ""
|
||||||
namespaceSelector: {}
|
namespaceSelector: {}
|
||||||
## Default: scrape .Release.Namespace only
|
## Default: scrape .Release.Namespace or namespaceOverride only
|
||||||
## To scrape all, use the following:
|
## To scrape all, use the following:
|
||||||
## namespaceSelector:
|
## namespaceSelector:
|
||||||
## any: true
|
## any: true
|
||||||
@@ -849,6 +878,10 @@ defaultBackend:
|
|||||||
maxReplicas: 2
|
maxReplicas: 2
|
||||||
targetCPUUtilizationPercentage: 50
|
targetCPUUtilizationPercentage: 50
|
||||||
targetMemoryUtilizationPercentage: 50
|
targetMemoryUtilizationPercentage: 50
|
||||||
|
# NetworkPolicy for default backend component.
|
||||||
|
networkPolicy:
|
||||||
|
# -- Enable 'networkPolicy' or not
|
||||||
|
enabled: false
|
||||||
service:
|
service:
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# clusterIP: ""
|
# clusterIP: ""
|
||||||
@@ -909,8 +942,8 @@ appsec:
|
|||||||
image:
|
image:
|
||||||
#registry:
|
#registry:
|
||||||
repository: ghcr.io/openappsec
|
repository: ghcr.io/openappsec
|
||||||
image: agent
|
image: "agent"
|
||||||
tag: latest
|
tag: "latest"
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
||||||
securityContext: {}
|
securityContext: {}
|
||||||
|
|||||||
@@ -1,5 +1,148 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
Nothing yet.
|
||||||
|
|
||||||
|
## 2.32.0
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Add new `deployment.hostname` value to make identifying instances in
|
||||||
|
controlplane/dataplane configurations easier.
|
||||||
|
[#943](https://github.com/Kong/charts/pull/943)
|
||||||
|
|
||||||
|
## 2.31.0
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Added controller's RBAC rules for `KongUpstreamPolicy` CRD.
|
||||||
|
[#917](https://github.com/Kong/charts/pull/917)
|
||||||
|
* Added services resource to admission webhook config for KIC >= 3.0.0.
|
||||||
|
[#919](https://github.com/Kong/charts/pull/919)
|
||||||
|
* Update default ingress controller version to v3.0
|
||||||
|
[#929](https://github.com/Kong/charts/pull/929)
|
||||||
|
[#930](https://github.com/Kong/charts/pull/930)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* The target port for cmetrics should only be applied if the ingress controller is enabled.
|
||||||
|
[#926](https://github.com/Kong/charts/pull/926)
|
||||||
|
* Fix RBAC for Gateway API v1.
|
||||||
|
[#928](https://github.com/Kong/charts/pull/928)
|
||||||
|
* Enable Admission webhook for Gateway API v1 resources.
|
||||||
|
[#928](https://github.com/Kong/charts/pull/928)
|
||||||
|
|
||||||
|
## 2.30.0
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Prevent installing PodDisruptionBudget for `replicaCount: 1` or `autoscaling.minReplicas: 1`.
|
||||||
|
[#896](https://github.com/Kong/charts/pull/896)
|
||||||
|
* The admission webhook now will be triggered on Secrets creation for KIC 2.12.1+.
|
||||||
|
[#907](https://github.com/Kong/charts/pull/907)
|
||||||
|
* Container security context defaults now comply with the restricted pod
|
||||||
|
security standard. This includes an enforced run as user ID set to 1000. UID
|
||||||
|
1000 is used for official Kong images other than Alpine images (which use UID
|
||||||
|
100) and for KIC images 3.0.0+ (older images use UID 65532). Images that do
|
||||||
|
not use UID 1000 can still run with this user, as static image files are
|
||||||
|
world-accessible and runtime-created files are created in temporary
|
||||||
|
directories created for the run as user.
|
||||||
|
[#911](https://github.com/Kong/charts/pull/911)
|
||||||
|
* Allow using templates (via `tpl`) when specifying `proxy.nameOverride`.
|
||||||
|
[#914](https://github.com/Kong/charts/pull/914)
|
||||||
|
|
||||||
|
## 2.29.0
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
* Make it possible to set the admission webhook's `timeoutSeconds`.
|
||||||
|
[#894](https://github.com/Kong/charts/pull/894)
|
||||||
|
|
||||||
|
## 2.28.1
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* The admission webhook now includes Gateway API resources and Ingress
|
||||||
|
resources for controller versions 2.12+. This version introduces new
|
||||||
|
validations for Kong's regex path implementation.
|
||||||
|
[#892](https://github.com/Kong/charts/pull/892)
|
||||||
|
|
||||||
|
## 2.28.0
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Bump default `kong` image tag to 3.4.
|
||||||
|
[#883](https://github.com/Kong/charts/pull/883)
|
||||||
|
* Bump default ingress controller image tag to 2.12.
|
||||||
|
* Added validation rule for `latency` upstream load balancing algorithm to
|
||||||
|
CRDs. [Upgrade your CRDs](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#updates-to-crds)
|
||||||
|
when installing this release.
|
||||||
|
|
||||||
|
## 2.27.0
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Listens now all support `.address` configuration. This was an existing
|
||||||
|
setting that was not applied properly for some listens.
|
||||||
|
[#881](https://github.com/Kong/charts/pull/881)
|
||||||
|
|
||||||
|
## 2.26.5
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Kuma ServiceAccount Token hints and volumes are also available in migrations
|
||||||
|
Pods.
|
||||||
|
[#877](https://github.com/Kong/charts/pull/877)
|
||||||
|
|
||||||
|
## 2.26.4
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* updated `admin_api_uri` to `admin_gui_api_url` as per [kong documentation](https://docs.konghq.com/gateway/3.4.x/reference/configuration/#admin_api_uri).
|
||||||
|
|
||||||
|
## 2.26.3
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Enabled Service and Ingress in Kong Manager for non enterprise users.
|
||||||
|
|
||||||
|
## 2.26.2
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Add missing CRD KongConsumerGroup and extend status subresource for CRDs
|
||||||
|
|
||||||
|
## 2.26.1
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Fix parsing enterprise tags (like e.g. `3.4.0.0`)
|
||||||
|
[#857](https://github.com/Kong/charts/pull/857)
|
||||||
|
|
||||||
|
## 2.26.0
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
2.26 changes the default proxy readiness endpoint for newer Kong versions. This
|
||||||
|
causes an issue in a narrow edge case. If all of the following are true:
|
||||||
|
|
||||||
|
* You use Kong 3.3 or newer.
|
||||||
|
* You use controller 2.10 or older.
|
||||||
|
* You run the controller and proxy in separate Deployments.
|
||||||
|
|
||||||
|
you are affected and should review [the 2.26 upgrade instructions](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md#2260).
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Use the Kong 3.3 `/status/ready` endpoint for readiness probes by default if
|
||||||
|
available. If not available, use the old `/status` default.
|
||||||
|
[#844](https://github.com/Kong/charts/pull/844)
|
||||||
|
* Add ArgoCD `Sync` and `BeforeHookCreation` [hook policies](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/)
|
||||||
|
to the the init and pre-upgrade migrations Jobs.
|
||||||
|
* Add controller's RBAC rules for `KongConsumerGroups` CRD.
|
||||||
|
[#850](https://github.com/Kong/charts/pull/850)
|
||||||
|
* Updated controller version to 2.11.
|
||||||
|
|
||||||
## 2.25.0
|
## 2.25.0
|
||||||
|
|
||||||
- Generate the `adminApiService.name` value from `.Release.Name` rather than
|
- Generate the `adminApiService.name` value from `.Release.Name` rather than
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
appVersion: "3.3"
|
appVersion: 1.1.1
|
||||||
dependencies:
|
dependencies:
|
||||||
- condition: postgresql.enabled
|
- condition: postgresql.enabled
|
||||||
name: postgresql
|
name: postgresql
|
||||||
@@ -9,11 +9,9 @@ description: The Cloud-Native Ingress and API-management
|
|||||||
home: https://konghq.com/
|
home: https://konghq.com/
|
||||||
icon: https://s3.amazonaws.com/downloads.kong/universe/assets/icon-kong-inc-large.png
|
icon: https://s3.amazonaws.com/downloads.kong/universe/assets/icon-kong-inc-large.png
|
||||||
maintainers:
|
maintainers:
|
||||||
- email: harry@konghq.com
|
- email: team-k8s@konghq.com
|
||||||
name: hbagdi
|
name: team-k8s-bot
|
||||||
- email: traines@konghq.com
|
|
||||||
name: rainest
|
|
||||||
name: open-appsec-kong
|
name: open-appsec-kong
|
||||||
sources:
|
sources:
|
||||||
- https://github.com/Kong/charts/tree/main/charts/kong
|
- https://github.com/Kong/charts/tree/main/charts/kong
|
||||||
version: 2.25.0
|
version: 2.32.0
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ This chart bootstraps all the components needed to run Kong on a
|
|||||||
## TL;DR;
|
## TL;DR;
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ helm repo add kong https://charts.konghq.com
|
helm repo add kong https://charts.konghq.com
|
||||||
$ helm repo update
|
helm repo update
|
||||||
|
|
||||||
$ helm install kong/kong --generate-name
|
helm install kong/kong --generate-name
|
||||||
```
|
```
|
||||||
|
|
||||||
## Table of contents
|
## Table of contents
|
||||||
@@ -71,6 +71,7 @@ $ helm install kong/kong --generate-name
|
|||||||
- [Sessions](#sessions)
|
- [Sessions](#sessions)
|
||||||
- [Email/SMTP](#emailsmtp)
|
- [Email/SMTP](#emailsmtp)
|
||||||
- [Prometheus Operator integration](#prometheus-operator-integration)
|
- [Prometheus Operator integration](#prometheus-operator-integration)
|
||||||
|
- [Argo CD considerations](#argo-cd-considerations)
|
||||||
- [Changelog](https://github.com/Kong/charts/blob/main/charts/kong/CHANGELOG.md)
|
- [Changelog](https://github.com/Kong/charts/blob/main/charts/kong/CHANGELOG.md)
|
||||||
- [Upgrading](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md)
|
- [Upgrading](https://github.com/Kong/charts/blob/main/charts/kong/UPGRADE.md)
|
||||||
- [Seeking help](#seeking-help)
|
- [Seeking help](#seeking-help)
|
||||||
@@ -90,10 +91,10 @@ $ helm install kong/kong --generate-name
|
|||||||
To install Kong:
|
To install Kong:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ helm repo add kong https://charts.konghq.com
|
helm repo add kong https://charts.konghq.com
|
||||||
$ helm repo update
|
helm repo update
|
||||||
|
|
||||||
$ helm install kong/kong --generate-name
|
helm install kong/kong --generate-name
|
||||||
```
|
```
|
||||||
|
|
||||||
## Uninstall
|
## Uninstall
|
||||||
@@ -101,7 +102,7 @@ $ helm install kong/kong --generate-name
|
|||||||
To uninstall/delete a Helm release `my-release`:
|
To uninstall/delete a Helm release `my-release`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ helm delete my-release
|
helm delete my-release
|
||||||
```
|
```
|
||||||
|
|
||||||
The command removes all the Kubernetes components associated with the
|
The command removes all the Kubernetes components associated with the
|
||||||
@@ -450,6 +451,11 @@ documentation on Service
|
|||||||
DNS](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/)
|
DNS](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/)
|
||||||
for more detail.
|
for more detail.
|
||||||
|
|
||||||
|
If you use multiple Helm releases to manage different data plane configurations
|
||||||
|
attached to the same control plane, setting the `deployment.hostname` field
|
||||||
|
will help you keep track of which is which in the `/clustering/data-plane`
|
||||||
|
endpoint.
|
||||||
|
|
||||||
### Cert Manager Integration
|
### Cert Manager Integration
|
||||||
|
|
||||||
By default, Kong will create self-signed certificates on start for its TLS
|
By default, Kong will create self-signed certificates on start for its TLS
|
||||||
@@ -507,9 +513,9 @@ event you need to recover from unintended CRD deletion.
|
|||||||
|
|
||||||
### InitContainers
|
### InitContainers
|
||||||
|
|
||||||
The chart is able to deploy initcontainers along with Kong. This can be very
|
The chart is able to deploy initContainers along with Kong. This can be very
|
||||||
useful when there's a requirement for custom initialization. The
|
useful when there's a requirement for custom initialization. The
|
||||||
`deployment.initcontainers` field in values.yaml takes an array of objects that
|
`deployment.initContainers` field in values.yaml takes an array of objects that
|
||||||
get appended as-is to the existing `spec.template.initContainers` array in the
|
get appended as-is to the existing `spec.template.initContainers` array in the
|
||||||
kong deployment resource.
|
kong deployment resource.
|
||||||
|
|
||||||
@@ -580,7 +586,11 @@ namespaces. Limiting access requires several changes to configuration:
|
|||||||
Setting `deployment.daemonset: true` deploys Kong using a [DaemonSet
|
Setting `deployment.daemonset: true` deploys Kong using a [DaemonSet
|
||||||
controller](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)
|
controller](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)
|
||||||
instead of a Deployment controller. This runs a Kong Pod on every kubelet in
|
instead of a Deployment controller. This runs a Kong Pod on every kubelet in
|
||||||
the Kubernetes cluster.
|
the Kubernetes cluster. For such configuration it may be desirable to configure
|
||||||
|
Pods to use the network of the host they run on instead of a dedicated network
|
||||||
|
namespace. The benefit of this approach is that the Kong can bind ports directly
|
||||||
|
to Kubernetes nodes' network interfaces, without the extra network translation
|
||||||
|
imposed by NodePort Services. It can be achieved by setting `deployment.hostNetwork: true`.
|
||||||
|
|
||||||
### Using dnsPolicy and dnsConfig
|
### Using dnsPolicy and dnsConfig
|
||||||
|
|
||||||
@@ -599,7 +609,8 @@ directory.
|
|||||||
| Parameter | Description | Default |
|
| Parameter | Description | Default |
|
||||||
| ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- |
|
| ---------------------------------- | ------------------------------------------------------------------------------------- | ------------------- |
|
||||||
| image.repository | Kong image | `kong` |
|
| image.repository | Kong image | `kong` |
|
||||||
| image.tag | Kong image version | `2.5` |
|
| image.tag | Kong image version | `3.4` |
|
||||||
|
| image.effectiveSemver | Semantic version to use for version-dependent features (if `tag` is not a semver) | |
|
||||||
| image.pullPolicy | Image pull policy | `IfNotPresent` |
|
| image.pullPolicy | Image pull policy | `IfNotPresent` |
|
||||||
| image.pullSecrets | Image pull secrets | `null` |
|
| image.pullSecrets | Image pull secrets | `null` |
|
||||||
| replicaCount | Kong instance count. It has no effect when `autoscaling.enabled` is set to true | `1` |
|
| replicaCount | Kong instance count. It has no effect when `autoscaling.enabled` is set to true | `1` |
|
||||||
@@ -723,7 +734,7 @@ section of `values.yaml` file:
|
|||||||
|--------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------|
|
|--------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------|
|
||||||
| enabled | Deploy the ingress controller, rbac and crd | true |
|
| enabled | Deploy the ingress controller, rbac and crd | true |
|
||||||
| image.repository | Docker image with the ingress controller | kong/kubernetes-ingress-controller |
|
| image.repository | Docker image with the ingress controller | kong/kubernetes-ingress-controller |
|
||||||
| image.tag | Version of the ingress controller | 2.0 |
|
| image.tag | Version of the ingress controller | `3.0` |
|
||||||
| image.effectiveSemver | Version of the ingress controller used for version-specific features when image.tag is not a valid semantic version | |
|
| image.effectiveSemver | Version of the ingress controller used for version-specific features when image.tag is not a valid semantic version | |
|
||||||
| readinessProbe | Kong ingress controllers readiness probe | |
|
| readinessProbe | Kong ingress controllers readiness probe | |
|
||||||
| livenessProbe | Kong ingress controllers liveness probe | |
|
| livenessProbe | Kong ingress controllers liveness probe | |
|
||||||
@@ -737,11 +748,13 @@ section of `values.yaml` file:
|
|||||||
| admissionWebhook.enabled | Whether to enable the validating admission webhook | true |
|
| admissionWebhook.enabled | Whether to enable the validating admission webhook | true |
|
||||||
| admissionWebhook.failurePolicy | How unrecognized errors from the admission endpoint are handled (Ignore or Fail) | Ignore |
|
| admissionWebhook.failurePolicy | How unrecognized errors from the admission endpoint are handled (Ignore or Fail) | Ignore |
|
||||||
| admissionWebhook.port | The port the ingress controller will listen on for admission webhooks | 8080 |
|
| admissionWebhook.port | The port the ingress controller will listen on for admission webhooks | 8080 |
|
||||||
|
| admissionWebhook.address | The address the ingress controller will listen on for admission webhooks, if not 0.0.0.0 | |
|
||||||
| admissionWebhook.annotations | Annotations for the Validation Webhook Configuration | |
|
| admissionWebhook.annotations | Annotations for the Validation Webhook Configuration | |
|
||||||
| admissionWebhook.certificate.provided | Use a provided certificate. When set to false, the chart will automatically generate a certificate. | false |
|
| admissionWebhook.certificate.provided | Use a provided certificate. When set to false, the chart will automatically generate a certificate. | false |
|
||||||
| admissionWebhook.certificate.secretName | Name of the TLS secret for the provided webhook certificate | |
|
| admissionWebhook.certificate.secretName | Name of the TLS secret for the provided webhook certificate | |
|
||||||
| admissionWebhook.certificate.caBundle | PEM encoded CA bundle which will be used to validate the provided webhook certificate | |
|
| admissionWebhook.certificate.caBundle | PEM encoded CA bundle which will be used to validate the provided webhook certificate | |
|
||||||
| admissionWebhook.namespaceSelector | Add namespaceSelector to the webhook. Please go to [Kubernetes doc for the specs](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector) | |
|
| admissionWebhook.namespaceSelector | Add namespaceSelector to the webhook. Please go to [Kubernetes doc for the specs](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector) | |
|
||||||
|
| admissionWebhook.timeoutSeconds | Kubernetes `apiserver`'s timeout when running this webhook. Default: 10 seconds. | |
|
||||||
| userDefinedVolumes | Create volumes. Please go to Kubernetes doc for the spec of the volumes | |
|
| userDefinedVolumes | Create volumes. Please go to Kubernetes doc for the spec of the volumes | |
|
||||||
| userDefinedVolumeMounts | Create volumeMounts. Please go to Kubernetes doc for the spec of the volumeMounts | |
|
| userDefinedVolumeMounts | Create volumeMounts. Please go to Kubernetes doc for the spec of the volumeMounts | |
|
||||||
| terminationGracePeriodSeconds | Sets the [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution) for Deployment pod | 30 |
|
| terminationGracePeriodSeconds | Sets the [termination grace period](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution) for Deployment pod | 30 |
|
||||||
@@ -787,6 +800,12 @@ Kong Ingress Controller v2.9 has introduced gateway discovery which allows
|
|||||||
the controller to discover Gateway instances that it should configure using
|
the controller to discover Gateway instances that it should configure using
|
||||||
an Admin API Kubernetes service.
|
an Admin API Kubernetes service.
|
||||||
|
|
||||||
|
Using this feature requires a split release installation of Gateways and Ingress Controller.
|
||||||
|
For exemplar `values.yaml` files which use this feature please see: [examples README.md](./example-values/README.md).
|
||||||
|
or use the [`ingress` chart](../ingress/README.md) which can handle this for you.
|
||||||
|
|
||||||
|
##### Configuration
|
||||||
|
|
||||||
You'll be able to configure this feature through configuration section under
|
You'll be able to configure this feature through configuration section under
|
||||||
`ingressController.gatewayDiscovery`:
|
`ingressController.gatewayDiscovery`:
|
||||||
|
|
||||||
@@ -809,12 +828,17 @@ You'll be able to configure this feature through configuration section under
|
|||||||
the chart will generate values for `name` and `namespace` based on the current release name and
|
the chart will generate values for `name` and `namespace` based on the current release name and
|
||||||
namespace. This is useful when consuming the `kong` chart as a subchart.
|
namespace. This is useful when consuming the `kong` chart as a subchart.
|
||||||
|
|
||||||
Using this feature requires a split release installation of Gateways and Ingress Controller.
|
Additionally, you can control the addresses that are generated for your Gateways
|
||||||
For exemplar `values.yaml` files which use this feature please see: [examples README.md](./example-values/README.md).
|
via the `--gateway-discovery-dns-strategy` CLI flag that can be set on the Ingress Controller
|
||||||
|
(or an equivalent environment variable: `CONTROLLER_GATEWAY_DISCOVERY_DNS_STRATEGY`).
|
||||||
|
It accepts 3 values which change the way that Gateway addresses are generated:
|
||||||
|
- `service` - for service scoped pod DNS names: `pod-ip-address.service-name.my-namespace.svc.cluster-domain.example`
|
||||||
|
- `pod` - for namespace scope pod DNS names: `pod-ip-address.my-namespace.pod.cluster-domain.example`
|
||||||
|
- `ip` (default, retains behavior introduced in v2.9) - for regular IP addresses
|
||||||
|
|
||||||
When using `gatewayDiscovery`, you should consider configuring the Admin service to use mTLS client verification to make
|
When using `gatewayDiscovery`, you should consider configuring the Admin service to use mTLS client verification to make
|
||||||
this interface secure. Without that, anyone who can access the Admin API from inside the cluster can configure the Gateway
|
this interface secure.
|
||||||
instances.
|
Without that, anyone who can access the Admin API from inside the cluster can configure the Gateway instances.
|
||||||
|
|
||||||
On the controller release side, that can be achieved by setting `ingressController.adminApi.tls.client.enabled` to `true`.
|
On the controller release side, that can be achieved by setting `ingressController.adminApi.tls.client.enabled` to `true`.
|
||||||
By default, Helm will generate a certificate Secret named `<release name>-admin-api-keypair` and
|
By default, Helm will generate a certificate Secret named `<release name>-admin-api-keypair` and
|
||||||
@@ -834,6 +858,7 @@ On the Gateway release side, set either `admin.tls.client.secretName` to the nam
|
|||||||
| deployment.minReadySeconds | Minimum number of seconds for which newly created pods should be ready without any of its container crashing, for it to be considered available. | |
|
| deployment.minReadySeconds | Minimum number of seconds for which newly created pods should be ready without any of its container crashing, for it to be considered available. | |
|
||||||
| deployment.initContainers | Create initContainers. Please go to Kubernetes doc for the spec of the initContainers | |
|
| deployment.initContainers | Create initContainers. Please go to Kubernetes doc for the spec of the initContainers | |
|
||||||
| deployment.daemonset | Use a DaemonSet instead of a Deployment | `false` |
|
| deployment.daemonset | Use a DaemonSet instead of a Deployment | `false` |
|
||||||
|
| deployment.hostname | Set the Deployment's `.spec.template.hostname`. Kong reports this as its hostname. | |
|
||||||
| deployment.hostNetwork | Enable hostNetwork, which binds to the ports to the host | `false` |
|
| deployment.hostNetwork | Enable hostNetwork, which binds to the ports to the host | `false` |
|
||||||
| deployment.userDefinedVolumes | Create volumes. Please go to Kubernetes doc for the spec of the volumes | |
|
| deployment.userDefinedVolumes | Create volumes. Please go to Kubernetes doc for the spec of the volumes | |
|
||||||
| deployment.userDefinedVolumeMounts | Create volumeMounts. Please go to Kubernetes doc for the spec of the volumeMounts | |
|
| deployment.userDefinedVolumeMounts | Create volumeMounts. Please go to Kubernetes doc for the spec of the volumeMounts | |
|
||||||
@@ -874,7 +899,7 @@ On the Gateway release side, set either `admin.tls.client.secretName` to the nam
|
|||||||
| priorityClassName | Set pod scheduling priority class for Kong pods | `""` |
|
| priorityClassName | Set pod scheduling priority class for Kong pods | `""` |
|
||||||
| secretVolumes | Mount given secrets as a volume in Kong container to override default certs and keys. | `[]` |
|
| secretVolumes | Mount given secrets as a volume in Kong container to override default certs and keys. | `[]` |
|
||||||
| securityContext | Set the securityContext for Kong Pods | `{}` |
|
| securityContext | Set the securityContext for Kong Pods | `{}` |
|
||||||
| containerSecurityContext | Set the securityContext for Containers | `{"readOnlyRootFilesystem": true}` |
|
| containerSecurityContext | Set the securityContext for Containers | See values.yaml |
|
||||||
| serviceMonitor.enabled | Create ServiceMonitor for Prometheus Operator | `false` |
|
| serviceMonitor.enabled | Create ServiceMonitor for Prometheus Operator | `false` |
|
||||||
| serviceMonitor.interval | Scraping interval | `30s` |
|
| serviceMonitor.interval | Scraping interval | `30s` |
|
||||||
| serviceMonitor.namespace | Where to create ServiceMonitor | |
|
| serviceMonitor.namespace | Where to create ServiceMonitor | |
|
||||||
@@ -1009,7 +1034,7 @@ If you have paid for a license, but you do not have a copy of yours, please
|
|||||||
contact Kong Support. Once you have it, you will need to store it in a Secret:
|
contact Kong Support. Once you have it, you will need to store it in a Secret:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ kubectl create secret generic kong-enterprise-license --from-file=license=./license.json
|
kubectl create secret generic kong-enterprise-license --from-file=license=./license.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Set the secret name in `values.yaml`, in the `.enterprise.license_secret` key.
|
Set the secret name in `values.yaml`, in the `.enterprise.license_secret` key.
|
||||||
@@ -1027,7 +1052,7 @@ from \<your username\> \> Edit Profile \> API Key. Use this to create registry
|
|||||||
secrets:
|
secrets:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ kubectl create secret docker-registry kong-enterprise-edition-docker \
|
kubectl create secret docker-registry kong-enterprise-edition-docker \
|
||||||
--docker-server=hub.docker.io \
|
--docker-server=hub.docker.io \
|
||||||
--docker-username=<username-provided-to-you> \
|
--docker-username=<username-provided-to-you> \
|
||||||
--docker-password=<password-provided-to-you>
|
--docker-password=<password-provided-to-you>
|
||||||
@@ -1045,7 +1070,7 @@ must know where other Kong services (namely the admin and files APIs) can be
|
|||||||
accessed in order to function properly. Kong's default behavior for attempting
|
accessed in order to function properly. Kong's default behavior for attempting
|
||||||
to locate these absent configuration is unlikely to work in common Kubernetes
|
to locate these absent configuration is unlikely to work in common Kubernetes
|
||||||
environments. Because of this, you should set each of `admin_gui_url`,
|
environments. Because of this, you should set each of `admin_gui_url`,
|
||||||
`admin_api_uri`, `proxy_url`, `portal_api_url`, `portal_gui_host`, and
|
`admin_gui_api_url`, `proxy_url`, `portal_api_url`, `portal_gui_host`, and
|
||||||
`portal_gui_protocol` under the `.env` key in values.yaml to locations where
|
`portal_gui_protocol` under the `.env` key in values.yaml to locations where
|
||||||
each of their respective services can be accessed to ensure that Kong services
|
each of their respective services can be accessed to ensure that Kong services
|
||||||
can locate one another and properly set CORS headers. See the
|
can locate one another and properly set CORS headers. See the
|
||||||
@@ -1103,14 +1128,30 @@ whereas this is optional for the Developer Portal on versions 0.36+. Providing
|
|||||||
Portal session configuration in values.yaml provides the default session
|
Portal session configuration in values.yaml provides the default session
|
||||||
configuration, which can be overridden on a per-workspace basis.
|
configuration, which can be overridden on a per-workspace basis.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat admin_gui_session_conf
|
||||||
```
|
```
|
||||||
$ cat admin_gui_session_conf
|
|
||||||
|
```json
|
||||||
{"cookie_name":"admin_session","cookie_samesite":"off","secret":"admin-secret-CHANGEME","cookie_secure":true,"storage":"kong"}
|
{"cookie_name":"admin_session","cookie_samesite":"off","secret":"admin-secret-CHANGEME","cookie_secure":true,"storage":"kong"}
|
||||||
$ cat portal_session_conf
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat portal_session_conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
{"cookie_name":"portal_session","cookie_samesite":"off","secret":"portal-secret-CHANGEME","cookie_secure":true,"storage":"kong"}
|
{"cookie_name":"portal_session","cookie_samesite":"off","secret":"portal-secret-CHANGEME","cookie_secure":true,"storage":"kong"}
|
||||||
$ kubectl create secret generic kong-session-config --from-file=admin_gui_session_conf --from-file=portal_session_conf
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl create secret generic kong-session-config --from-file=admin_gui_session_conf --from-file=portal_session_conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
secret/kong-session-config created
|
secret/kong-session-config created
|
||||||
```
|
```
|
||||||
|
|
||||||
The exact plugin settings may vary in your environment. The `secret` should
|
The exact plugin settings may vary in your environment. The `secret` should
|
||||||
always be changed for both configurations.
|
always be changed for both configurations.
|
||||||
|
|
||||||
@@ -1161,6 +1202,28 @@ admin:
|
|||||||
enable-metrics: "true"
|
enable-metrics: "true"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Argo CD Considerations
|
||||||
|
|
||||||
|
The built-in database subchart (`postgresql.enabled` in values) is not
|
||||||
|
supported when installing the chart via Argo CD.
|
||||||
|
|
||||||
|
Argo CD does not support the full Helm lifecycle. There is no distinction
|
||||||
|
between the initial install and upgrades. Both operations are a "sync" in Argo
|
||||||
|
terms. This affects when migration Jobs execute in database-backed Kong
|
||||||
|
installs.
|
||||||
|
|
||||||
|
The chart sets the `Sync` and `BeforeHookCreation` deletion
|
||||||
|
[hook policies](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/)
|
||||||
|
on the `init-migrations` and `pre-upgrade-migrations` Jobs.
|
||||||
|
|
||||||
|
The `pre-upgrade-migrations` Job normally uses Helm's `pre-upgrade` policy. Argo
|
||||||
|
translates this to its `PreSync` policy, which would create the Job before all
|
||||||
|
sync phase resources. Doing this before various sync phase resources (such as
|
||||||
|
the ServiceAccount) are in place would prevent the Job from running
|
||||||
|
successfully. Overriding this with Argo's `Sync` policy starts the Job at the
|
||||||
|
same time as the upgraded Deployment Pods. The new Pods may fail to start
|
||||||
|
temporarily, but will eventually start normally once migrations complete.
|
||||||
|
|
||||||
## Seeking help
|
## Seeking help
|
||||||
|
|
||||||
If you run into an issue, bug or have a question, please reach out to the Kong
|
If you run into an issue, bug or have a question, please reach out to the Kong
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ upgrading from a previous version.
|
|||||||
## Table of contents
|
## Table of contents
|
||||||
|
|
||||||
- [Upgrade considerations for all versions](#upgrade-considerations-for-all-versions)
|
- [Upgrade considerations for all versions](#upgrade-considerations-for-all-versions)
|
||||||
- [2.17.0](#2170)
|
- [2.26.0](#2260)
|
||||||
|
- [2.19.0](#2190)
|
||||||
- [2.13.0](#2130)
|
- [2.13.0](#2130)
|
||||||
- [2.8.0](#280)
|
- [2.8.0](#280)
|
||||||
- [2.7.0](#270)
|
- [2.7.0](#270)
|
||||||
@@ -83,6 +84,35 @@ https://raw.githubusercontent.com/Kong/charts/kong-<version>/charts/kong/crds/cu
|
|||||||
For example, if your release is 2.6.4, you would apply
|
For example, if your release is 2.6.4, you would apply
|
||||||
`https://raw.githubusercontent.com/Kong/charts/kong-2.6.4/charts/kong/crds/custom-resource-definitions.yaml`.
|
`https://raw.githubusercontent.com/Kong/charts/kong-2.6.4/charts/kong/crds/custom-resource-definitions.yaml`.
|
||||||
|
|
||||||
|
## 2.26.0
|
||||||
|
|
||||||
|
If you are using controller version 2.10 or lower and proxy version 3.3 or
|
||||||
|
higher in separate Deployments (such as when using the `ingress` chart), proxy
|
||||||
|
Pods will not become ready unless you override the default readiness endpoint:
|
||||||
|
|
||||||
|
```
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /status
|
||||||
|
```
|
||||||
|
|
||||||
|
This section goes under the `gateway` section when using the `ingress` chart.
|
||||||
|
|
||||||
|
2.26 changes the default proxy readiness endpoint to the `/status/ready`
|
||||||
|
endpoint introduced in Kong 3.3. This endpoint reports true when Kong has
|
||||||
|
configuration available, whereas the previous `/status` endpoint returned true
|
||||||
|
immediately after start, and could result in proxy instances attempting to
|
||||||
|
serve requests before they had configuration.
|
||||||
|
|
||||||
|
The chart has logic to fall back to the older endpoint if the proxy and
|
||||||
|
controller versions do not work well with the new endpoint. However, the chart
|
||||||
|
detection cannot determine the controller version when the controller is in a
|
||||||
|
separate Deployment, and will always use the new endpoint if the Kong image
|
||||||
|
version is 3.3 or higher.
|
||||||
|
|
||||||
|
Kong recommends Kong 3.3 and higher users update to controller 2.11 at their
|
||||||
|
earliest convenience to take advantage of the improved readiness behavior.
|
||||||
|
|
||||||
## 2.19.0
|
## 2.19.0
|
||||||
|
|
||||||
2.19 sets a default [security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
|
2.19 sets a default [security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
|
||||||
@@ -163,7 +193,7 @@ database](https://www.postgresql.org/docs/current/backup-dump.html) and
|
|||||||
creating a separate release if you wish to continue using 8.6.8:
|
creating a separate release if you wish to continue using 8.6.8:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ helm install my-release -f values.yaml --version 8.6.8 bitnami/postgresql
|
helm install my-release -f values.yaml --version 8.6.8 bitnami/postgresql
|
||||||
```
|
```
|
||||||
|
|
||||||
Afterwords, you will upgrade your Kong chart release with
|
Afterwords, you will upgrade your Kong chart release with
|
||||||
@@ -203,26 +233,28 @@ upgrade in multiple steps:
|
|||||||
First, pin the controller version and upgrade to chart 2.4.0:
|
First, pin the controller version and upgrade to chart 2.4.0:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ helm upgrade --wait \
|
helm upgrade --wait \
|
||||||
--set ingressController.image.tag=<CURRENT_CONTROLLER_VERSION> \
|
--set ingressController.image.tag=<CURRENT_CONTROLLER_VERSION> \
|
||||||
--version 2.4.0 \
|
--version 2.4.0 \
|
||||||
--namespace <YOUR_RELEASE_NAMESPACE> \
|
--namespace <YOUR_RELEASE_NAMESPACE> \
|
||||||
<YOUR_RELEASE_NAME> kong/kong
|
<YOUR_RELEASE_NAME> kong/kong
|
||||||
```
|
```
|
||||||
|
|
||||||
Second, temporarily disable the ingress controller:
|
Second, temporarily disable the ingress controller:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ helm upgrade --wait \
|
helm upgrade --wait \
|
||||||
--set ingressController.enabled=false \
|
--set ingressController.enabled=false \
|
||||||
--set deployment.serviceaccount.create=true \
|
--set deployment.serviceaccount.create=true \
|
||||||
--version 2.4.0 \
|
--version 2.4.0 \
|
||||||
--namespace <YOUR_RELEASE_NAMESPACE> \
|
--namespace <YOUR_RELEASE_NAMESPACE> \
|
||||||
<YOUR_RELEASE_NAME> kong/kong
|
<YOUR_RELEASE_NAME> kong/kong
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, re-enable the ingress controller at the new version:
|
Finally, re-enable the ingress controller at the new version:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ helm upgrade --wait \
|
helm upgrade --wait \
|
||||||
--set ingressController.enabled=true \
|
--set ingressController.enabled=true \
|
||||||
--set ingressController.image.tag=<NEW_CONTROLLER_VERSION> \
|
--set ingressController.image.tag=<NEW_CONTROLLER_VERSION> \
|
||||||
--version 2.4.0 \
|
--version 2.4.0 \
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
admin:
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
|
# Stub config to make the instance become ready
|
||||||
|
dblessConfig:
|
||||||
|
config: |
|
||||||
|
_format_version: "1.1"
|
||||||
|
services:
|
||||||
|
- name: example.com
|
||||||
|
url: http://example.com
|
||||||
|
routes:
|
||||||
|
- name: example
|
||||||
|
paths:
|
||||||
|
- "/example"
|
||||||
|
|
||||||
|
ingressController:
|
||||||
|
enabled: false
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
admin:
|
|
||||||
enabled: true
|
|
||||||
type: ClusterIP
|
|
||||||
|
|
||||||
ingressController:
|
|
||||||
enabled: false
|
|
||||||
@@ -1,6 +1,3 @@
|
|||||||
|
|
||||||
# install chart with some extra labels
|
# install chart with some extra labels
|
||||||
|
|
||||||
extraLabels:
|
extraLabels:
|
||||||
acme.com/some-key: some-value
|
acme.com/some-key: some-value
|
||||||
|
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
# install chart with default values
|
# install chart with default values
|
||||||
proxy:
|
|
||||||
type: NodePort
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
anonymous_reports: "off"
|
anonymous_reports: "off"
|
||||||
ingressController:
|
ingressController:
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# CI test for empty hostname including tls secret using string
|
# CI test for empty hostname including tls secret using string
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
tls: "kong.proxy.example.secret"
|
tls: "kong.proxy.example.secret"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# CI test for hostname including tls secret using string
|
# CI test for hostname including tls secret using string
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: "proxy.kong.example"
|
hostname: "proxy.kong.example"
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# CI test for using ingress hosts configuration
|
# CI test for using ingress hosts configuration
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hosts:
|
hosts:
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# CI test for testing combined ingress hostname and hosts configuration including tls configuraion using slice
|
# CI test for testing combined ingress hostname and hosts configuration including tls configuraion using slice
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: "proxy.kong.example"
|
hostname: "proxy.kong.example"
|
||||||
|
|||||||
@@ -2,9 +2,7 @@
|
|||||||
# use single image strings instead of repository/tag
|
# use single image strings instead of repository/tag
|
||||||
|
|
||||||
image:
|
image:
|
||||||
unifiedRepoTag: kong:2.6
|
unifiedRepoTag: kong:3.4.1
|
||||||
proxy:
|
|
||||||
type: NodePort
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
anonymous_reports: "off"
|
anonymous_reports: "off"
|
||||||
@@ -12,4 +10,4 @@ ingressController:
|
|||||||
env:
|
env:
|
||||||
anonymous_reports: "false"
|
anonymous_reports: "false"
|
||||||
image:
|
image:
|
||||||
unifiedRepoTag: kong/kubernetes-ingress-controller:2.0.2
|
unifiedRepoTag: kong/kubernetes-ingress-controller:3.0
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
ingressController:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: kong/kong-gateway
|
||||||
|
tag: "3.4.0.0"
|
||||||
|
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: "/status"
|
||||||
|
port: status
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 1
|
||||||
|
periodSeconds: 1
|
||||||
@@ -30,14 +30,12 @@ podLabels:
|
|||||||
environment: test
|
environment: test
|
||||||
# - ingress resources are created with hosts
|
# - ingress resources are created with hosts
|
||||||
admin:
|
admin:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: admin.kong.example
|
hostname: admin.kong.example
|
||||||
annotations: {}
|
annotations: {}
|
||||||
path: /
|
path: /
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: proxy.kong.example
|
hostname: proxy.kong.example
|
||||||
|
|||||||
@@ -3,8 +3,12 @@
|
|||||||
# - stream listens work
|
# - stream listens work
|
||||||
# - a mixture of controller, Kong, and shared volumes successfully mount
|
# - a mixture of controller, Kong, and shared volumes successfully mount
|
||||||
# - watchNamespaces is set
|
# - watchNamespaces is set
|
||||||
|
# - the admission webhook is enabled; has the timeout explicitly set
|
||||||
ingressController:
|
ingressController:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
admissionWebhook:
|
||||||
|
enabled: true
|
||||||
|
timeoutSeconds: 5
|
||||||
env:
|
env:
|
||||||
anonymous_reports: "false"
|
anonymous_reports: "false"
|
||||||
customEnv:
|
customEnv:
|
||||||
@@ -21,13 +25,11 @@ env:
|
|||||||
database: "postgres"
|
database: "postgres"
|
||||||
# - ingress resources are created without hosts
|
# - ingress resources are created without hosts
|
||||||
admin:
|
admin:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hosts: []
|
hosts: []
|
||||||
path: /
|
path: /
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: proxy.kong.example
|
hostname: proxy.kong.example
|
||||||
@@ -43,9 +45,6 @@ proxy:
|
|||||||
parameters:
|
parameters:
|
||||||
- ssl
|
- ssl
|
||||||
|
|
||||||
# - PDB is enabled
|
|
||||||
podDisruptionBudget:
|
|
||||||
enabled: true
|
|
||||||
# update strategy
|
# update strategy
|
||||||
updateStrategy:
|
updateStrategy:
|
||||||
type: "RollingUpdate"
|
type: "RollingUpdate"
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ env:
|
|||||||
database: "off"
|
database: "off"
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: false
|
enabled: false
|
||||||
proxy:
|
|
||||||
type: NodePort
|
|
||||||
deployment:
|
deployment:
|
||||||
initContainers:
|
initContainers:
|
||||||
- name: "bash"
|
- name: "bash"
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ env:
|
|||||||
postgresql:
|
postgresql:
|
||||||
enabled: false
|
enabled: false
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
# - add stream listens
|
# - add stream listens
|
||||||
stream:
|
stream:
|
||||||
- containerPort: 9000
|
- containerPort: 9000
|
||||||
|
|||||||
@@ -26,22 +26,17 @@ customEnv:
|
|||||||
client_id: "exampleId"
|
client_id: "exampleId"
|
||||||
# - ingress resources are created without hosts
|
# - ingress resources are created without hosts
|
||||||
admin:
|
admin:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hosts: []
|
hosts: []
|
||||||
path: /
|
path: /
|
||||||
proxy:
|
proxy:
|
||||||
type: NodePort
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: proxy.kong.example
|
hostname: proxy.kong.example
|
||||||
annotations: {}
|
annotations: {}
|
||||||
path: /
|
path: /
|
||||||
|
|
||||||
# - PDB is enabled
|
|
||||||
podDisruptionBudget:
|
|
||||||
enabled: true
|
|
||||||
# update strategy
|
# update strategy
|
||||||
updateStrategy:
|
updateStrategy:
|
||||||
type: "RollingUpdate"
|
type: "RollingUpdate"
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
# CI test for testing dbless deployment without ingress controllers
|
|
||||||
# - disable ingress controller
|
|
||||||
# - no static config
|
|
||||||
ingressController:
|
|
||||||
enabled: false
|
|
||||||
# - disable DB for kong
|
|
||||||
env:
|
|
||||||
anonymous_reports: "off"
|
|
||||||
database: "off"
|
|
||||||
postgresql:
|
|
||||||
enabled: false
|
|
||||||
proxy:
|
|
||||||
type: NodePort
|
|
||||||
deployment:
|
|
||||||
initContainers:
|
|
||||||
- name: "bash"
|
|
||||||
image: "bash:latest"
|
|
||||||
command: ["/bin/sh", "-c", "true"]
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: "100m"
|
|
||||||
memory: "64Mi"
|
|
||||||
requests:
|
|
||||||
cpu: "100m"
|
|
||||||
memory: "64Mi"
|
|
||||||
volumeMounts:
|
|
||||||
- name: "tmpdir"
|
|
||||||
mountPath: "/opt/tmp"
|
|
||||||
userDefinedVolumes:
|
|
||||||
- name: "tmpdir"
|
|
||||||
emptyDir: {}
|
|
||||||
userDefinedVolumeMounts:
|
|
||||||
- name: "tmpdir"
|
|
||||||
mountPath: "/opt/tmp"
|
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
# generated using: kubectl kustomize github.com/kong/kubernetes-ingress-controller/config/crd?ref=v2.8.1
|
# generated using: kubectl kustomize 'github.com/kong/kubernetes-ingress-controller/config/crd?ref=v3.0.0'
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
|
||||||
name: ingressclassparameterses.configuration.konghq.com
|
name: ingressclassparameterses.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
@@ -56,8 +55,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
|
||||||
name: kongclusterplugins.configuration.konghq.com
|
name: kongclusterplugins.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
@@ -91,6 +89,9 @@ spec:
|
|||||||
name: Config
|
name: Config
|
||||||
priority: 1
|
priority: 1
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=="Programmed")].status
|
||||||
|
name: Programmed
|
||||||
|
type: string
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -142,6 +143,11 @@ spec:
|
|||||||
disabled:
|
disabled:
|
||||||
description: Disabled set if the plugin is disabled or not.
|
description: Disabled set if the plugin is disabled or not.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
instance_name:
|
||||||
|
description: InstanceName is an optional custom name to identify an instance
|
||||||
|
of the plugin. This is useful when running the same plugin in multiple
|
||||||
|
contexts, for example, on multiple services.
|
||||||
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: 'Kind is a string value representing the REST resource this
|
||||||
object represents. Servers may infer this from the endpoint the client
|
object represents. Servers may infer this from the endpoint the client
|
||||||
@@ -183,6 +189,8 @@ spec:
|
|||||||
description: Protocols configures plugin to run on requests received on
|
description: Protocols configures plugin to run on requests received on
|
||||||
specific protocols.
|
specific protocols.
|
||||||
items:
|
items:
|
||||||
|
description: KongProtocol is a valid Kong protocol. This alias is necessary
|
||||||
|
to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342
|
||||||
enum:
|
enum:
|
||||||
- http
|
- http
|
||||||
- https
|
- https
|
||||||
@@ -201,6 +209,91 @@ spec:
|
|||||||
- second
|
- second
|
||||||
- all
|
- all
|
||||||
type: string
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status represents the current status of the KongClusterPlugin
|
||||||
|
resource.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
default:
|
||||||
|
- lastTransitionTime: "1970-01-01T00:00:00Z"
|
||||||
|
message: Waiting for controller
|
||||||
|
reason: Pending
|
||||||
|
status: Unknown
|
||||||
|
type: Programmed
|
||||||
|
description: "Conditions describe the current conditions of the KongClusterPluginStatus.
|
||||||
|
\n Known condition types are: \n * \"Programmed\""
|
||||||
|
items:
|
||||||
|
description: "Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource. --- This struct is intended for direct
|
||||||
|
use as an array at the field path .status.conditions. For example,
|
||||||
|
\n type FooStatus struct{ // Represents the observations of a
|
||||||
|
foo's current state. // Known .status.conditions.type are: \"Available\",
|
||||||
|
\"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
|
||||||
|
// +listType=map // +listMapKey=type Conditions []metav1.Condition
|
||||||
|
`json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
|
||||||
|
protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the condition
|
||||||
|
transitioned from one status to another. This should be when
|
||||||
|
the underlying condition changed. If that is not known, then
|
||||||
|
using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message indicating
|
||||||
|
details about the transition. This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: observedGeneration represents the .metadata.generation
|
||||||
|
that the condition was set based upon. For instance, if .metadata.generation
|
||||||
|
is currently 12, but the .status.conditions[x].observedGeneration
|
||||||
|
is 9, the condition is out of date with respect to the current
|
||||||
|
state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier indicating
|
||||||
|
the reason for the condition's last transition. Producers
|
||||||
|
of specific condition types may define expected values and
|
||||||
|
meanings for this field, and whether the values are considered
|
||||||
|
a guaranteed API. The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
--- Many .condition.type values are consistent across resources
|
||||||
|
like Available, but because arbitrary conditions can be useful
|
||||||
|
(see .node.status.conditions), the ability to deconflict is
|
||||||
|
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
maxItems: 8
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
type: object
|
||||||
required:
|
required:
|
||||||
- plugin
|
- plugin
|
||||||
type: object
|
type: object
|
||||||
@@ -213,8 +306,142 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
name: kongconsumergroups.configuration.konghq.com
|
||||||
|
spec:
|
||||||
|
group: configuration.konghq.com
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- kong-ingress-controller
|
||||||
|
kind: KongConsumerGroup
|
||||||
|
listKind: KongConsumerGroupList
|
||||||
|
plural: kongconsumergroups
|
||||||
|
shortNames:
|
||||||
|
- kcg
|
||||||
|
singular: kongconsumergroup
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- description: Age
|
||||||
|
jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
- jsonPath: .status.conditions[?(@.type=="Programmed")].status
|
||||||
|
name: Programmed
|
||||||
|
type: string
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: KongConsumerGroup is the Schema for the kongconsumergroups API.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: Status represents the current status of the KongConsumer
|
||||||
|
resource.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
default:
|
||||||
|
- lastTransitionTime: "1970-01-01T00:00:00Z"
|
||||||
|
message: Waiting for controller
|
||||||
|
reason: Pending
|
||||||
|
status: Unknown
|
||||||
|
type: Programmed
|
||||||
|
description: "Conditions describe the current conditions of the KongConsumerGroup.
|
||||||
|
\n Known condition types are: \n * \"Programmed\""
|
||||||
|
items:
|
||||||
|
description: "Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource. --- This struct is intended for direct
|
||||||
|
use as an array at the field path .status.conditions. For example,
|
||||||
|
\n type FooStatus struct{ // Represents the observations of a
|
||||||
|
foo's current state. // Known .status.conditions.type are: \"Available\",
|
||||||
|
\"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
|
||||||
|
// +listType=map // +listMapKey=type Conditions []metav1.Condition
|
||||||
|
`json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
|
||||||
|
protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the condition
|
||||||
|
transitioned from one status to another. This should be when
|
||||||
|
the underlying condition changed. If that is not known, then
|
||||||
|
using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message indicating
|
||||||
|
details about the transition. This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: observedGeneration represents the .metadata.generation
|
||||||
|
that the condition was set based upon. For instance, if .metadata.generation
|
||||||
|
is currently 12, but the .status.conditions[x].observedGeneration
|
||||||
|
is 9, the condition is out of date with respect to the current
|
||||||
|
state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier indicating
|
||||||
|
the reason for the condition's last transition. Producers
|
||||||
|
of specific condition types may define expected values and
|
||||||
|
meanings for this field, and whether the values are considered
|
||||||
|
a guaranteed API. The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
--- Many .condition.type values are consistent across resources
|
||||||
|
like Available, but because arbitrary conditions can be useful
|
||||||
|
(see .node.status.conditions), the ability to deconflict is
|
||||||
|
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
maxItems: 8
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
name: kongconsumers.configuration.konghq.com
|
name: kongconsumers.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
@@ -238,6 +465,9 @@ spec:
|
|||||||
jsonPath: .metadata.creationTimestamp
|
jsonPath: .metadata.creationTimestamp
|
||||||
name: Age
|
name: Age
|
||||||
type: date
|
type: date
|
||||||
|
- jsonPath: .status.conditions[?(@.type=="Programmed")].status
|
||||||
|
name: Programmed
|
||||||
|
type: string
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -248,6 +478,12 @@ spec:
|
|||||||
of an object. Servers should convert recognized schemas to the latest
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
type: string
|
type: string
|
||||||
|
consumerGroups:
|
||||||
|
description: ConsumerGroups are references to consumer groups (that consumer
|
||||||
|
wants to be part of) provisioned in Kong.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
credentials:
|
credentials:
|
||||||
description: Credentials are references to secrets containing a credential
|
description: Credentials are references to secrets containing a credential
|
||||||
to be provisioned in Kong.
|
to be provisioned in Kong.
|
||||||
@@ -265,6 +501,91 @@ spec:
|
|||||||
type: string
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
|
status:
|
||||||
|
description: Status represents the current status of the KongConsumer
|
||||||
|
resource.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
default:
|
||||||
|
- lastTransitionTime: "1970-01-01T00:00:00Z"
|
||||||
|
message: Waiting for controller
|
||||||
|
reason: Pending
|
||||||
|
status: Unknown
|
||||||
|
type: Programmed
|
||||||
|
description: "Conditions describe the current conditions of the KongConsumer.
|
||||||
|
\n Known condition types are: \n * \"Programmed\""
|
||||||
|
items:
|
||||||
|
description: "Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource. --- This struct is intended for direct
|
||||||
|
use as an array at the field path .status.conditions. For example,
|
||||||
|
\n type FooStatus struct{ // Represents the observations of a
|
||||||
|
foo's current state. // Known .status.conditions.type are: \"Available\",
|
||||||
|
\"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
|
||||||
|
// +listType=map // +listMapKey=type Conditions []metav1.Condition
|
||||||
|
`json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
|
||||||
|
protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the condition
|
||||||
|
transitioned from one status to another. This should be when
|
||||||
|
the underlying condition changed. If that is not known, then
|
||||||
|
using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message indicating
|
||||||
|
details about the transition. This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: observedGeneration represents the .metadata.generation
|
||||||
|
that the condition was set based upon. For instance, if .metadata.generation
|
||||||
|
is currently 12, but the .status.conditions[x].observedGeneration
|
||||||
|
is 9, the condition is out of date with respect to the current
|
||||||
|
state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier indicating
|
||||||
|
the reason for the condition's last transition. Producers
|
||||||
|
of specific condition types may define expected values and
|
||||||
|
meanings for this field, and whether the values are considered
|
||||||
|
a guaranteed API. The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
--- Many .condition.type values are consistent across resources
|
||||||
|
like Available, but because arbitrary conditions can be useful
|
||||||
|
(see .node.status.conditions), the ability to deconflict is
|
||||||
|
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
maxItems: 8
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
type: object
|
||||||
username:
|
username:
|
||||||
description: Username is a Kong cluster-unique username of the consumer.
|
description: Username is a Kong cluster-unique username of the consumer.
|
||||||
type: string
|
type: string
|
||||||
@@ -278,8 +599,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
|
||||||
name: kongingresses.configuration.konghq.com
|
name: kongingresses.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
@@ -381,8 +701,7 @@ spec:
|
|||||||
type: integer
|
type: integer
|
||||||
methods:
|
methods:
|
||||||
description: 'Methods is a list of HTTP methods that match this Route.
|
description: 'Methods is a list of HTTP methods that match this Route.
|
||||||
Deprecated: use Ingress'' "konghq.com/override-protocols" annotation
|
Deprecated: use Ingress'' "konghq.com/methods" annotation instead.'
|
||||||
instead.'
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
@@ -407,6 +726,8 @@ spec:
|
|||||||
allow. Deprecated: use Ingress'' "konghq.com/protocols" annotation
|
allow. Deprecated: use Ingress'' "konghq.com/protocols" annotation
|
||||||
instead.'
|
instead.'
|
||||||
items:
|
items:
|
||||||
|
description: KongProtocol is a valid Kong protocol. This alias is
|
||||||
|
necessary to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342
|
||||||
enum:
|
enum:
|
||||||
- http
|
- http
|
||||||
- https
|
- https
|
||||||
@@ -448,15 +769,18 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
upstream:
|
upstream:
|
||||||
description: Upstream represents a virtual hostname and can be used to
|
description: Upstream represents a virtual hostname and can be used to
|
||||||
load balance incoming requests over multiple targets (e.g. Kubernetes
|
loadbalance incoming requests over multiple targets (e.g. Kubernetes
|
||||||
Services can be a target, or URLs can be targets).
|
`Services` can be a target, OR `Endpoints` can be targets).
|
||||||
properties:
|
properties:
|
||||||
algorithm:
|
algorithm:
|
||||||
description: Algorithm is the load balancing algorithm to use.
|
description: 'Algorithm is the load balancing algorithm to use. Accepted
|
||||||
|
values are: "round-robin", "consistent-hashing", "least-connections",
|
||||||
|
"latency".'
|
||||||
enum:
|
enum:
|
||||||
- round-robin
|
- round-robin
|
||||||
- consistent-hashing
|
- consistent-hashing
|
||||||
- least-connections
|
- least-connections
|
||||||
|
- latency
|
||||||
type: string
|
type: string
|
||||||
hash_fallback:
|
hash_fallback:
|
||||||
description: 'HashFallback defines What to use as hashing input if
|
description: 'HashFallback defines What to use as hashing input if
|
||||||
@@ -512,6 +836,12 @@ spec:
|
|||||||
concurrency:
|
concurrency:
|
||||||
minimum: 1
|
minimum: 1
|
||||||
type: integer
|
type: integer
|
||||||
|
headers:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
healthy:
|
healthy:
|
||||||
description: Healthy configures thresholds and HTTP status
|
description: Healthy configures thresholds and HTTP status
|
||||||
codes to mark targets healthy for an upstream.
|
codes to mark targets healthy for an upstream.
|
||||||
@@ -617,6 +947,13 @@ spec:
|
|||||||
type: integer
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: '''proxy'' field is no longer supported, use Service''s annotations
|
||||||
|
instead'
|
||||||
|
rule: '!has(self.proxy)'
|
||||||
|
- message: '''route'' field is no longer supported, use Ingress'' annotations
|
||||||
|
instead'
|
||||||
|
rule: '!has(self.route)'
|
||||||
served: true
|
served: true
|
||||||
storage: true
|
storage: true
|
||||||
subresources:
|
subresources:
|
||||||
@@ -626,8 +963,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
|
||||||
name: kongplugins.configuration.konghq.com
|
name: kongplugins.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
@@ -661,6 +997,9 @@ spec:
|
|||||||
name: Config
|
name: Config
|
||||||
priority: 1
|
priority: 1
|
||||||
type: string
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=="Programmed")].status
|
||||||
|
name: Programmed
|
||||||
|
type: string
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
@@ -708,6 +1047,11 @@ spec:
|
|||||||
disabled:
|
disabled:
|
||||||
description: Disabled set if the plugin is disabled or not.
|
description: Disabled set if the plugin is disabled or not.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
instance_name:
|
||||||
|
description: InstanceName is an optional custom name to identify an instance
|
||||||
|
of the plugin. This is useful when running the same plugin in multiple
|
||||||
|
contexts, for example, on multiple services.
|
||||||
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: 'Kind is a string value representing the REST resource this
|
||||||
object represents. Servers may infer this from the endpoint the client
|
object represents. Servers may infer this from the endpoint the client
|
||||||
@@ -749,6 +1093,8 @@ spec:
|
|||||||
description: Protocols configures plugin to run on requests received on
|
description: Protocols configures plugin to run on requests received on
|
||||||
specific protocols.
|
specific protocols.
|
||||||
items:
|
items:
|
||||||
|
description: KongProtocol is a valid Kong protocol. This alias is necessary
|
||||||
|
to deal with https://github.com/kubernetes-sigs/controller-tools/issues/342
|
||||||
enum:
|
enum:
|
||||||
- http
|
- http
|
||||||
- https
|
- https
|
||||||
@@ -767,6 +1113,90 @@ spec:
|
|||||||
- second
|
- second
|
||||||
- all
|
- all
|
||||||
type: string
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status represents the current status of the KongPlugin resource.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
default:
|
||||||
|
- lastTransitionTime: "1970-01-01T00:00:00Z"
|
||||||
|
message: Waiting for controller
|
||||||
|
reason: Pending
|
||||||
|
status: Unknown
|
||||||
|
type: Programmed
|
||||||
|
description: "Conditions describe the current conditions of the KongPluginStatus.
|
||||||
|
\n Known condition types are: \n * \"Programmed\""
|
||||||
|
items:
|
||||||
|
description: "Condition contains details for one aspect of the current
|
||||||
|
state of this API Resource. --- This struct is intended for direct
|
||||||
|
use as an array at the field path .status.conditions. For example,
|
||||||
|
\n type FooStatus struct{ // Represents the observations of a
|
||||||
|
foo's current state. // Known .status.conditions.type are: \"Available\",
|
||||||
|
\"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
|
||||||
|
// +listType=map // +listMapKey=type Conditions []metav1.Condition
|
||||||
|
`json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
|
||||||
|
protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: lastTransitionTime is the last time the condition
|
||||||
|
transitioned from one status to another. This should be when
|
||||||
|
the underlying condition changed. If that is not known, then
|
||||||
|
using the time when the API field changed is acceptable.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: message is a human readable message indicating
|
||||||
|
details about the transition. This may be an empty string.
|
||||||
|
maxLength: 32768
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: observedGeneration represents the .metadata.generation
|
||||||
|
that the condition was set based upon. For instance, if .metadata.generation
|
||||||
|
is currently 12, but the .status.conditions[x].observedGeneration
|
||||||
|
is 9, the condition is out of date with respect to the current
|
||||||
|
state of the instance.
|
||||||
|
format: int64
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: reason contains a programmatic identifier indicating
|
||||||
|
the reason for the condition's last transition. Producers
|
||||||
|
of specific condition types may define expected values and
|
||||||
|
meanings for this field, and whether the values are considered
|
||||||
|
a guaranteed API. The value should be a CamelCase string.
|
||||||
|
This field may not be empty.
|
||||||
|
maxLength: 1024
|
||||||
|
minLength: 1
|
||||||
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: status of the condition, one of True, False, Unknown.
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
||||||
|
--- Many .condition.type values are consistent across resources
|
||||||
|
like Available, but because arbitrary conditions can be useful
|
||||||
|
(see .node.status.conditions), the ability to deconflict is
|
||||||
|
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
||||||
|
maxLength: 316
|
||||||
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- message
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
maxItems: 8
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
type: object
|
||||||
required:
|
required:
|
||||||
- plugin
|
- plugin
|
||||||
type: object
|
type: object
|
||||||
@@ -779,8 +1209,388 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
labels:
|
||||||
|
gateway.networking.k8s.io/policy: direct
|
||||||
|
name: kongupstreampolicies.configuration.konghq.com
|
||||||
|
spec:
|
||||||
|
group: configuration.konghq.com
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- kong-ingress-controller
|
||||||
|
kind: KongUpstreamPolicy
|
||||||
|
listKind: KongUpstreamPolicyList
|
||||||
|
plural: kongupstreampolicies
|
||||||
|
shortNames:
|
||||||
|
- kup
|
||||||
|
singular: kongupstreampolicy
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: "KongUpstreamPolicy allows configuring algorithm that should
|
||||||
|
be used for load balancing traffic between Kong Upstream's Targets. It also
|
||||||
|
allows configuring health checks for Kong Upstream's Targets. \n Its configuration
|
||||||
|
is similar to Kong Upstream object (https://docs.konghq.com/gateway/latest/admin-api/#upstream-object),
|
||||||
|
and it is applied to Kong Upstream objects created by the controller. \n
|
||||||
|
It can be attached to Services. To attach it to a Service, it has to be
|
||||||
|
annotated with `konghq.com/upstream-policy: <name>`, where `<name>` is the
|
||||||
|
name of the KongUpstreamPolicy object in the same namespace as the Service.
|
||||||
|
\n When attached to a Service, it will affect all Kong Upstreams created
|
||||||
|
for the Service. \n When attached to a Service used in a Gateway API *Route
|
||||||
|
rule with multiple BackendRefs, all of its Services MUST be configured with
|
||||||
|
the same KongUpstreamPolicy. Otherwise, the controller will *ignore* the
|
||||||
|
KongUpstreamPolicy. \n Note: KongUpstreamPolicy doesn't implement Gateway
|
||||||
|
API's GEP-713 strictly. In particular, it doesn't use the TargetRef for
|
||||||
|
attaching to Services and Gateway API *Routes - annotations are used instead.
|
||||||
|
This is to allow reusing the same KongUpstreamPolicy for multiple Services
|
||||||
|
and Gateway API *Routes."
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: Spec contains the configuration of the Kong upstream.
|
||||||
|
properties:
|
||||||
|
algorithm:
|
||||||
|
description: 'Algorithm is the load balancing algorithm to use. Accepted
|
||||||
|
values are: "round-robin", "consistent-hashing", "least-connections",
|
||||||
|
"latency".'
|
||||||
|
enum:
|
||||||
|
- round-robin
|
||||||
|
- consistent-hashing
|
||||||
|
- least-connections
|
||||||
|
- latency
|
||||||
|
type: string
|
||||||
|
hashOn:
|
||||||
|
description: HashOn defines how to calculate hash for consistent-hashing
|
||||||
|
load balancing algorithm. Algorithm must be set to "consistent-hashing"
|
||||||
|
for this field to have effect.
|
||||||
|
properties:
|
||||||
|
cookie:
|
||||||
|
description: Cookie is the name of the cookie to use as hash input.
|
||||||
|
type: string
|
||||||
|
cookiePath:
|
||||||
|
description: CookiePath is cookie path to set in the response
|
||||||
|
headers.
|
||||||
|
type: string
|
||||||
|
header:
|
||||||
|
description: Header is the name of the header to use as hash input.
|
||||||
|
type: string
|
||||||
|
input:
|
||||||
|
description: Input allows using one of the predefined inputs (ip,
|
||||||
|
consumer, path). For other parametrized inputs, use one of the
|
||||||
|
fields below.
|
||||||
|
enum:
|
||||||
|
- ip
|
||||||
|
- consumer
|
||||||
|
- path
|
||||||
|
type: string
|
||||||
|
queryArg:
|
||||||
|
description: QueryArg is the name of the query argument to use
|
||||||
|
as hash input.
|
||||||
|
type: string
|
||||||
|
uriCapture:
|
||||||
|
description: URICapture is the name of the URI capture group to
|
||||||
|
use as hash input.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
hashOnFallback:
|
||||||
|
description: HashOnFallback defines how to calculate hash for consistent-hashing
|
||||||
|
load balancing algorithm if the primary hash function fails. Algorithm
|
||||||
|
must be set to "consistent-hashing" for this field to have effect.
|
||||||
|
properties:
|
||||||
|
cookie:
|
||||||
|
description: Cookie is the name of the cookie to use as hash input.
|
||||||
|
type: string
|
||||||
|
cookiePath:
|
||||||
|
description: CookiePath is cookie path to set in the response
|
||||||
|
headers.
|
||||||
|
type: string
|
||||||
|
header:
|
||||||
|
description: Header is the name of the header to use as hash input.
|
||||||
|
type: string
|
||||||
|
input:
|
||||||
|
description: Input allows using one of the predefined inputs (ip,
|
||||||
|
consumer, path). For other parametrized inputs, use one of the
|
||||||
|
fields below.
|
||||||
|
enum:
|
||||||
|
- ip
|
||||||
|
- consumer
|
||||||
|
- path
|
||||||
|
type: string
|
||||||
|
queryArg:
|
||||||
|
description: QueryArg is the name of the query argument to use
|
||||||
|
as hash input.
|
||||||
|
type: string
|
||||||
|
uriCapture:
|
||||||
|
description: URICapture is the name of the URI capture group to
|
||||||
|
use as hash input.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
healthchecks:
|
||||||
|
description: Healthchecks defines the health check configurations
|
||||||
|
in Kong.
|
||||||
|
properties:
|
||||||
|
active:
|
||||||
|
description: Active configures active health check probing.
|
||||||
|
properties:
|
||||||
|
concurrency:
|
||||||
|
description: Concurrency is the number of targets to check
|
||||||
|
concurrently.
|
||||||
|
minimum: 1
|
||||||
|
type: integer
|
||||||
|
headers:
|
||||||
|
additionalProperties:
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
description: Headers is a list of HTTP headers to add to the
|
||||||
|
probe request.
|
||||||
|
type: object
|
||||||
|
healthy:
|
||||||
|
description: Healthy configures thresholds and HTTP status
|
||||||
|
codes to mark targets healthy for an upstream.
|
||||||
|
properties:
|
||||||
|
httpStatuses:
|
||||||
|
description: HTTPStatuses is a list of HTTP status codes
|
||||||
|
that Kong considers a success.
|
||||||
|
items:
|
||||||
|
description: HTTPStatus is an HTTP status code.
|
||||||
|
maximum: 599
|
||||||
|
minimum: 100
|
||||||
|
type: integer
|
||||||
|
type: array
|
||||||
|
interval:
|
||||||
|
description: Interval is the interval between active health
|
||||||
|
checks for an upstream in seconds when in a healthy
|
||||||
|
state.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
successes:
|
||||||
|
description: Successes is the number of successes to consider
|
||||||
|
a target healthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
httpPath:
|
||||||
|
description: HTTPPath is the path to use in GET HTTP request
|
||||||
|
to run as a probe.
|
||||||
|
pattern: ^/.*$
|
||||||
|
type: string
|
||||||
|
httpsSni:
|
||||||
|
description: HTTPSSNI is the SNI to use in GET HTTPS request
|
||||||
|
to run as a probe.
|
||||||
|
type: string
|
||||||
|
httpsVerifyCertificate:
|
||||||
|
description: HTTPSVerifyCertificate is a boolean value that
|
||||||
|
indicates if the certificate should be verified.
|
||||||
|
type: boolean
|
||||||
|
timeout:
|
||||||
|
description: Timeout is the probe timeout in seconds.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
type:
|
||||||
|
description: Type determines whether to perform active health
|
||||||
|
checks using HTTP or HTTPS, or just attempt a TCP connection.
|
||||||
|
Accepted values are "http", "https", "tcp", "grpc", "grpcs".
|
||||||
|
enum:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
|
- tcp
|
||||||
|
- grpc
|
||||||
|
- grpcs
|
||||||
|
type: string
|
||||||
|
unhealthy:
|
||||||
|
description: Unhealthy configures thresholds and HTTP status
|
||||||
|
codes to mark targets unhealthy for an upstream.
|
||||||
|
properties:
|
||||||
|
httpFailures:
|
||||||
|
description: HTTPFailures is the number of failures to
|
||||||
|
consider a target unhealthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
httpStatuses:
|
||||||
|
description: HTTPStatuses is a list of HTTP status codes
|
||||||
|
that Kong considers a failure.
|
||||||
|
items:
|
||||||
|
description: HTTPStatus is an HTTP status code.
|
||||||
|
maximum: 599
|
||||||
|
minimum: 100
|
||||||
|
type: integer
|
||||||
|
type: array
|
||||||
|
interval:
|
||||||
|
description: Interval is the interval between active health
|
||||||
|
checks for an upstream in seconds when in an unhealthy
|
||||||
|
state.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
tcpFailures:
|
||||||
|
description: TCPFailures is the number of TCP failures
|
||||||
|
in a row to consider a target unhealthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
timeouts:
|
||||||
|
description: Timeouts is the number of timeouts in a row
|
||||||
|
to consider a target unhealthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
passive:
|
||||||
|
description: Passive configures passive health check probing.
|
||||||
|
properties:
|
||||||
|
healthy:
|
||||||
|
description: Healthy configures thresholds and HTTP status
|
||||||
|
codes to mark targets healthy for an upstream.
|
||||||
|
properties:
|
||||||
|
httpStatuses:
|
||||||
|
description: HTTPStatuses is a list of HTTP status codes
|
||||||
|
that Kong considers a success.
|
||||||
|
items:
|
||||||
|
description: HTTPStatus is an HTTP status code.
|
||||||
|
maximum: 599
|
||||||
|
minimum: 100
|
||||||
|
type: integer
|
||||||
|
type: array
|
||||||
|
interval:
|
||||||
|
description: Interval is the interval between active health
|
||||||
|
checks for an upstream in seconds when in a healthy
|
||||||
|
state.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
successes:
|
||||||
|
description: Successes is the number of successes to consider
|
||||||
|
a target healthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type:
|
||||||
|
description: Type determines whether to perform passive health
|
||||||
|
checks interpreting HTTP/HTTPS statuses, or just check for
|
||||||
|
TCP connection success. Accepted values are "http", "https",
|
||||||
|
"tcp", "grpc", "grpcs".
|
||||||
|
enum:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
|
- tcp
|
||||||
|
- grpc
|
||||||
|
- grpcs
|
||||||
|
type: string
|
||||||
|
unhealthy:
|
||||||
|
description: Unhealthy configures thresholds and HTTP status
|
||||||
|
codes to mark targets unhealthy.
|
||||||
|
properties:
|
||||||
|
httpFailures:
|
||||||
|
description: HTTPFailures is the number of failures to
|
||||||
|
consider a target unhealthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
httpStatuses:
|
||||||
|
description: HTTPStatuses is a list of HTTP status codes
|
||||||
|
that Kong considers a failure.
|
||||||
|
items:
|
||||||
|
description: HTTPStatus is an HTTP status code.
|
||||||
|
maximum: 599
|
||||||
|
minimum: 100
|
||||||
|
type: integer
|
||||||
|
type: array
|
||||||
|
interval:
|
||||||
|
description: Interval is the interval between active health
|
||||||
|
checks for an upstream in seconds when in an unhealthy
|
||||||
|
state.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
tcpFailures:
|
||||||
|
description: TCPFailures is the number of TCP failures
|
||||||
|
in a row to consider a target unhealthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
timeouts:
|
||||||
|
description: Timeouts is the number of timeouts in a row
|
||||||
|
to consider a target unhealthy.
|
||||||
|
minimum: 0
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
threshold:
|
||||||
|
description: Threshold is the minimum percentage of the upstream’s
|
||||||
|
targets’ weight that must be available for the whole upstream
|
||||||
|
to be considered healthy.
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
slots:
|
||||||
|
description: Slots is the number of slots in the load balancer algorithm.
|
||||||
|
If not set, the default value in Kong for the algorithm is used.
|
||||||
|
maximum: 65536
|
||||||
|
minimum: 10
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Only one of spec.hashOn.(input|cookie|header|uriCapture|queryArg)
|
||||||
|
can be set.
|
||||||
|
rule: 'has(self.spec.hashOn) ? [has(self.spec.hashOn.input), has(self.spec.hashOn.cookie),
|
||||||
|
has(self.spec.hashOn.header), has(self.spec.hashOn.uriCapture), has(self.spec.hashOn.queryArg)].filter(fieldSet,
|
||||||
|
fieldSet == true).size() <= 1 : true'
|
||||||
|
- message: When spec.hashOn.cookie is set, spec.hashOn.cookiePath is required.
|
||||||
|
rule: 'has(self.spec.hashOn) && has(self.spec.hashOn.cookie) ? has(self.spec.hashOn.cookiePath)
|
||||||
|
: true'
|
||||||
|
- message: When spec.hashOn.cookiePath is set, spec.hashOn.cookie is required.
|
||||||
|
rule: 'has(self.spec.hashOn) && has(self.spec.hashOn.cookiePath) ? has(self.spec.hashOn.cookie)
|
||||||
|
: true'
|
||||||
|
- message: spec.algorithm must be set to "consistent-hashing" when spec.hashOn
|
||||||
|
is set.
|
||||||
|
rule: 'has(self.spec.hashOn) ? has(self.spec.algorithm) && self.spec.algorithm
|
||||||
|
== "consistent-hashing" : true'
|
||||||
|
- message: Only one of spec.hashOnFallback.(input|header|uriCapture|queryArg)
|
||||||
|
can be set.
|
||||||
|
rule: 'has(self.spec.hashOnFallback) ? [has(self.spec.hashOnFallback.input),
|
||||||
|
has(self.spec.hashOnFallback.header), has(self.spec.hashOnFallback.uriCapture),
|
||||||
|
has(self.spec.hashOnFallback.queryArg)].filter(fieldSet, fieldSet == true).size()
|
||||||
|
<= 1 : true'
|
||||||
|
- message: spec.algorithm must be set to "consistent-hashing" when spec.hashOnFallback
|
||||||
|
is set.
|
||||||
|
rule: 'has(self.spec.hashOnFallback) ? has(self.spec.algorithm) && self.spec.algorithm
|
||||||
|
== "consistent-hashing" : true'
|
||||||
|
- message: spec.hashOnFallback.cookie must not be set.
|
||||||
|
rule: 'has(self.spec.hashOnFallback) ? !has(self.spec.hashOnFallback.cookie)
|
||||||
|
: true'
|
||||||
|
- message: spec.hashOnFallback.cookiePath must not be set.
|
||||||
|
rule: 'has(self.spec.hashOnFallback) ? !has(self.spec.hashOnFallback.cookiePath)
|
||||||
|
: true'
|
||||||
|
- message: spec.healthchecks.passive.healthy.interval must not be set.
|
||||||
|
rule: 'has(self.spec.healthchecks) && has(self.spec.healthchecks.passive)
|
||||||
|
&& has(self.spec.healthchecks.passive.healthy) ? !has(self.spec.healthchecks.passive.healthy.interval)
|
||||||
|
: true'
|
||||||
|
- message: spec.healthchecks.passive.unhealthy.interval must not be set.
|
||||||
|
rule: 'has(self.spec.healthchecks) && has(self.spec.healthchecks.passive)
|
||||||
|
&& has(self.spec.healthchecks.passive.unhealthy) ? !has(self.spec.healthchecks.passive.unhealthy.interval)
|
||||||
|
: true'
|
||||||
|
- message: spec.hashOnFallback must not be set when spec.hashOn.cookie is
|
||||||
|
set.
|
||||||
|
rule: 'has(self.spec.hashOn) && has(self.spec.hashOn.cookie) ? !has(self.spec.hashOnFallback)
|
||||||
|
: true'
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
name: tcpingresses.configuration.konghq.com
|
name: tcpingresses.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
@@ -966,8 +1776,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.11.1
|
controller-gen.kubebuilder.io/version: v0.13.0
|
||||||
creationTimestamp: null
|
|
||||||
name: udpingresses.configuration.konghq.com
|
name: udpingresses.configuration.konghq.com
|
||||||
spec:
|
spec:
|
||||||
group: configuration.konghq.com
|
group: configuration.konghq.com
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ admin:
|
|||||||
konghq.com/https-redirect-status-code: "301"
|
konghq.com/https-redirect-status-code: "301"
|
||||||
konghq.com/protocols: https
|
konghq.com/protocols: https
|
||||||
konghq.com/strip-path: "true"
|
konghq.com/strip-path: "true"
|
||||||
kubernetes.io/ingress.class: default
|
|
||||||
nginx.ingress.kubernetes.io/app-root: /
|
nginx.ingress.kubernetes.io/app-root: /
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
|
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
|
||||||
nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
|
nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
|
||||||
@@ -88,7 +87,7 @@ enterprise:
|
|||||||
enabled: true
|
enabled: true
|
||||||
env:
|
env:
|
||||||
admin_access_log: /dev/stdout
|
admin_access_log: /dev/stdout
|
||||||
admin_api_uri: https://kong.127-0-0-1.nip.io/api
|
admin_gui_api_url: https://kong.127-0-0-1.nip.io/api
|
||||||
admin_error_log: /dev/stdout
|
admin_error_log: /dev/stdout
|
||||||
admin_gui_access_log: /dev/stdout
|
admin_gui_access_log: /dev/stdout
|
||||||
admin_gui_error_log: /dev/stdout
|
admin_gui_error_log: /dev/stdout
|
||||||
@@ -146,7 +145,7 @@ extraLabels:
|
|||||||
konghq.com/component: quickstart
|
konghq.com/component: quickstart
|
||||||
image:
|
image:
|
||||||
repository: kong/kong-gateway
|
repository: kong/kong-gateway
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
ingressController:
|
ingressController:
|
||||||
enabled: true
|
enabled: true
|
||||||
env:
|
env:
|
||||||
@@ -176,8 +175,8 @@ manager:
|
|||||||
ingress:
|
ingress:
|
||||||
annotations:
|
annotations:
|
||||||
konghq.com/https-redirect-status-code: "301"
|
konghq.com/https-redirect-status-code: "301"
|
||||||
kubernetes.io/ingress.class: default
|
|
||||||
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
|
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
|
||||||
|
ingressClassName: kong
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: kong.127-0-0-1.nip.io
|
hostname: kong.127-0-0-1.nip.io
|
||||||
path: /
|
path: /
|
||||||
@@ -209,7 +208,7 @@ portal:
|
|||||||
konghq.com/https-redirect-status-code: "301"
|
konghq.com/https-redirect-status-code: "301"
|
||||||
konghq.com/protocols: https
|
konghq.com/protocols: https
|
||||||
konghq.com/strip-path: "false"
|
konghq.com/strip-path: "false"
|
||||||
kubernetes.io/ingress.class: default
|
ingressClassName: kong
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: developer.127-0-0-1.nip.io
|
hostname: developer.127-0-0-1.nip.io
|
||||||
path: /
|
path: /
|
||||||
@@ -232,8 +231,8 @@ portalapi:
|
|||||||
konghq.com/https-redirect-status-code: "301"
|
konghq.com/https-redirect-status-code: "301"
|
||||||
konghq.com/protocols: https
|
konghq.com/protocols: https
|
||||||
konghq.com/strip-path: "true"
|
konghq.com/strip-path: "true"
|
||||||
kubernetes.io/ingress.class: default
|
|
||||||
nginx.ingress.kubernetes.io/app-root: /
|
nginx.ingress.kubernetes.io/app-root: /
|
||||||
|
ingressClassName: kong
|
||||||
enabled: true
|
enabled: true
|
||||||
hostname: developer.127-0-0-1.nip.io
|
hostname: developer.127-0-0-1.nip.io
|
||||||
path: /api
|
path: /api
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong/kong-gateway
|
repository: kong/kong-gateway
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
prefix: /kong_prefix/
|
prefix: /kong_prefix/
|
||||||
@@ -40,8 +40,7 @@ admin:
|
|||||||
enabled: true
|
enabled: true
|
||||||
tls: CHANGEME-admin-tls-secret
|
tls: CHANGEME-admin-tls-secret
|
||||||
hostname: admin.kong.CHANGEME.example
|
hostname: admin.kong.CHANGEME.example
|
||||||
annotations:
|
ingressClassName: kong
|
||||||
kubernetes.io/ingress.class: "kong"
|
|
||||||
path: /
|
path: /
|
||||||
|
|
||||||
proxy:
|
proxy:
|
||||||
@@ -148,8 +147,7 @@ portal:
|
|||||||
enabled: true
|
enabled: true
|
||||||
tls: CHANGEME-portal-tls-secret
|
tls: CHANGEME-portal-tls-secret
|
||||||
hostname: portal.kong.CHANGEME.example
|
hostname: portal.kong.CHANGEME.example
|
||||||
annotations:
|
ingressClassName: kong
|
||||||
kubernetes.io/ingress.class: "kong"
|
|
||||||
path: /
|
path: /
|
||||||
|
|
||||||
externalIPs: []
|
externalIPs: []
|
||||||
@@ -177,8 +175,7 @@ portalapi:
|
|||||||
enabled: true
|
enabled: true
|
||||||
tls: CHANGEME-portalapi-tls-secret
|
tls: CHANGEME-portalapi-tls-secret
|
||||||
hostname: portalapi.kong.CHANGEME.example
|
hostname: portalapi.kong.CHANGEME.example
|
||||||
annotations:
|
ingressClassName: kong
|
||||||
kubernetes.io/ingress.class: "kong"
|
|
||||||
path: /
|
path: /
|
||||||
|
|
||||||
externalIPs: []
|
externalIPs: []
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong/kong-gateway
|
repository: kong/kong-gateway
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
admin:
|
admin:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong
|
repository: kong
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
prefix: /kong_prefix/
|
prefix: /kong_prefix/
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong/kong-gateway
|
repository: kong/kong-gateway
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
enterprise:
|
enterprise:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong/kong-gateway
|
repository: kong/kong-gateway
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
database: postgres
|
database: postgres
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong/kong-gateway
|
repository: kong/kong-gateway
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
role: data_plane
|
role: data_plane
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong
|
repository: kong
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
prefix: /kong_prefix/
|
prefix: /kong_prefix/
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong
|
repository: kong
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
prefix: /kong_prefix/
|
prefix: /kong_prefix/
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
image:
|
image:
|
||||||
repository: kong
|
repository: kong
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
prefix: /kong_prefix/
|
prefix: /kong_prefix/
|
||||||
|
|||||||
@@ -330,10 +330,11 @@ Create KONG_STREAM_LISTEN string
|
|||||||
*/}}
|
*/}}
|
||||||
{{- define "kong.streamListen" -}}
|
{{- define "kong.streamListen" -}}
|
||||||
{{- $unifiedListen := list -}}
|
{{- $unifiedListen := list -}}
|
||||||
|
{{- $address := (default "0.0.0.0" .address) -}}
|
||||||
{{- range .stream -}}
|
{{- range .stream -}}
|
||||||
{{- $listenConfig := dict -}}
|
{{- $listenConfig := dict -}}
|
||||||
{{- $listenConfig := merge $listenConfig . -}}
|
{{- $listenConfig := merge $listenConfig . -}}
|
||||||
{{- $_ := set $listenConfig "address" "0.0.0.0" -}}
|
{{- $_ := set $listenConfig "address" $address -}}
|
||||||
{{/* You set NGINX stream listens to UDP using a parameter due to historical reasons.
|
{{/* You set NGINX stream listens to UDP using a parameter due to historical reasons.
|
||||||
Our configuration is dual-purpose, for both the Service and listen string, so we
|
Our configuration is dual-purpose, for both the Service and listen string, so we
|
||||||
forcibly inject this parameter if that's the Service protocol. The default handles
|
forcibly inject this parameter if that's the Service protocol. The default handles
|
||||||
@@ -446,19 +447,34 @@ The name of the service used for the ingress controller's validation webhook
|
|||||||
{{ include "kong.fullname" . }}-validation-webhook
|
{{ include "kong.fullname" . }}-validation-webhook
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
The name of the Service which will be used by the controller to update the Ingress status field.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- define "kong.controller-publish-service" -}}
|
||||||
|
{{- $proxyOverride := "" -}}
|
||||||
|
{{- if .Values.proxy.nameOverride -}}
|
||||||
|
{{- $proxyOverride = ( tpl .Values.proxy.nameOverride . ) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- (printf "%s/%s" ( include "kong.namespace" . ) ( default ( printf "%s-proxy" (include "kong.fullname" . )) $proxyOverride )) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
{{- define "kong.ingressController.env" -}}
|
{{- define "kong.ingressController.env" -}}
|
||||||
{{/*
|
{{/*
|
||||||
====== AUTO-GENERATED ENVIRONMENT VARIABLES ======
|
====== AUTO-GENERATED ENVIRONMENT VARIABLES ======
|
||||||
*/}}
|
*/}}
|
||||||
|
|
||||||
|
|
||||||
{{- $autoEnv := dict -}}
|
{{- $autoEnv := dict -}}
|
||||||
{{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY" true -}}
|
{{- $_ := set $autoEnv "CONTROLLER_KONG_ADMIN_TLS_SKIP_VERIFY" true -}}
|
||||||
{{- $_ := set $autoEnv "CONTROLLER_PUBLISH_SERVICE" (printf "%s/%s" ( include "kong.namespace" . ) ( .Values.proxy.nameOverride | default ( printf "%s-proxy" (include "kong.fullname" . )))) -}}
|
{{- $_ := set $autoEnv "CONTROLLER_PUBLISH_SERVICE" ( include "kong.controller-publish-service" . ) -}}
|
||||||
{{- $_ := set $autoEnv "CONTROLLER_INGRESS_CLASS" .Values.ingressController.ingressClass -}}
|
{{- $_ := set $autoEnv "CONTROLLER_INGRESS_CLASS" .Values.ingressController.ingressClass -}}
|
||||||
{{- $_ := set $autoEnv "CONTROLLER_ELECTION_ID" (printf "kong-ingress-controller-leader-%s" .Values.ingressController.ingressClass) -}}
|
{{- $_ := set $autoEnv "CONTROLLER_ELECTION_ID" (printf "kong-ingress-controller-leader-%s" .Values.ingressController.ingressClass) -}}
|
||||||
|
|
||||||
{{- if .Values.ingressController.admissionWebhook.enabled }}
|
{{- if .Values.ingressController.admissionWebhook.enabled }}
|
||||||
{{- $_ := set $autoEnv "CONTROLLER_ADMISSION_WEBHOOK_LISTEN" (printf "0.0.0.0:%d" (int64 .Values.ingressController.admissionWebhook.port)) -}}
|
{{- $address := (default "0.0.0.0" .Values.ingressController.admissionWebhook.address) -}}
|
||||||
|
{{- $_ := set $autoEnv "CONTROLLER_ADMISSION_WEBHOOK_LISTEN" (printf "%s:%d" $address (int64 .Values.ingressController.admissionWebhook.port)) -}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if (not (eq (len .Values.ingressController.watchNamespaces) 0)) }}
|
{{- if (not (eq (len .Values.ingressController.watchNamespaces) 0)) }}
|
||||||
{{- $_ := set $autoEnv "CONTROLLER_WATCH_NAMESPACE" (.Values.ingressController.watchNamespaces | join ",") -}}
|
{{- $_ := set $autoEnv "CONTROLLER_WATCH_NAMESPACE" (.Values.ingressController.watchNamespaces | join ",") -}}
|
||||||
@@ -552,6 +568,41 @@ The name of the service used for the ingress controller's validation webhook
|
|||||||
- name: {{ template "kong.fullname" . }}-tmp
|
- name: {{ template "kong.fullname" . }}-tmp
|
||||||
emptyDir:
|
emptyDir:
|
||||||
sizeLimit: {{ .Values.deployment.tmpDir.sizeLimit }}
|
sizeLimit: {{ .Values.deployment.tmpDir.sizeLimit }}
|
||||||
|
{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }}
|
||||||
|
- name: {{ template "kong.serviceAccountTokenName" . }}
|
||||||
|
{{- /* Due to GKE versions (e.g. v1.23.15-gke.1900) we need to handle pre-release part of the version as well.
|
||||||
|
See the related documentation of semver module that Helm depends on for semverCompare:
|
||||||
|
https://github.com/Masterminds/semver#working-with-prerelease-versions
|
||||||
|
Related Helm issue: https://github.com/helm/helm/issues/3810 */}}
|
||||||
|
{{- if semverCompare ">=1.20.0-0" .Capabilities.KubeVersion.Version }}
|
||||||
|
projected:
|
||||||
|
sources:
|
||||||
|
- serviceAccountToken:
|
||||||
|
expirationSeconds: 3607
|
||||||
|
path: token
|
||||||
|
- configMap:
|
||||||
|
items:
|
||||||
|
- key: ca.crt
|
||||||
|
path: ca.crt
|
||||||
|
name: kube-root-ca.crt
|
||||||
|
- downwardAPI:
|
||||||
|
items:
|
||||||
|
- fieldRef:
|
||||||
|
apiVersion: v1
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
path: namespace
|
||||||
|
{{- else }}
|
||||||
|
secret:
|
||||||
|
secretName: {{ template "kong.serviceAccountTokenName" . }}
|
||||||
|
items:
|
||||||
|
- key: token
|
||||||
|
path: token
|
||||||
|
- key: ca.crt
|
||||||
|
path: ca.crt
|
||||||
|
- key: namespace
|
||||||
|
path: namespace
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- if and ( .Capabilities.APIVersions.Has "cert-manager.io/v1" ) .Values.certificates.enabled -}}
|
{{- if and ( .Capabilities.APIVersions.Has "cert-manager.io/v1" ) .Values.certificates.enabled -}}
|
||||||
{{- if .Values.certificates.cluster.enabled }}
|
{{- if .Values.certificates.cluster.enabled }}
|
||||||
- name: {{ include "kong.fullname" . }}-cluster-cert
|
- name: {{ include "kong.fullname" . }}-cluster-cert
|
||||||
@@ -786,10 +837,22 @@ The name of the service used for the ingress controller's validation webhook
|
|||||||
|
|
||||||
{{/* effectiveVersion takes an image dict from values.yaml. if .effectiveSemver is set, it returns that, else it returns .tag */}}
|
{{/* effectiveVersion takes an image dict from values.yaml. if .effectiveSemver is set, it returns that, else it returns .tag */}}
|
||||||
{{- define "kong.effectiveVersion" -}}
|
{{- define "kong.effectiveVersion" -}}
|
||||||
|
{{- /* Because Kong Gateway enterprise uses versions with 4 segments and not 3 */ -}}
|
||||||
|
{{- /* as semver does, we need to account for that here by extracting */ -}}
|
||||||
|
{{- /* first 3 segments for comparison */ -}}
|
||||||
{{- if .effectiveSemver -}}
|
{{- if .effectiveSemver -}}
|
||||||
{{- .effectiveSemver -}}
|
{{- if regexMatch "^[0-9]+.[0-9]+.[0-9]+" .effectiveSemver -}}
|
||||||
|
{{- regexFind "^[0-9]+.[0-9]+.[0-9]+" .effectiveSemver -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .effectiveSemver -}}
|
||||||
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{- (trimSuffix "-redhat" .tag) -}}
|
{{- $tag := (trimSuffix "-redhat" .tag) -}}
|
||||||
|
{{- if regexMatch "^[0-9]+.[0-9]+.[0-9]+" .tag -}}
|
||||||
|
{{- regexFind "^[0-9]+.[0-9]+.[0-9]+" .tag -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- .tag -}}
|
||||||
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
@@ -908,7 +971,7 @@ the template that it itself is using form the above sections.
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $listenConfig := dict -}}
|
{{- $listenConfig := dict -}}
|
||||||
{{- $listenConfig := merge $listenConfig . -}}
|
{{- $listenConfig := merge $listenConfig . -}}
|
||||||
{{- $_ := set $listenConfig "address" $address -}}
|
{{- $_ := set $listenConfig "address" (default $address .address) -}}
|
||||||
{{- $_ := set $autoEnv "KONG_ADMIN_LISTEN" (include "kong.listen" $listenConfig) -}}
|
{{- $_ := set $autoEnv "KONG_ADMIN_LISTEN" (include "kong.listen" $listenConfig) -}}
|
||||||
|
|
||||||
{{- if or .tls.client.secretName .tls.client.caBundle -}}
|
{{- if or .tls.client.secretName .tls.client.caBundle -}}
|
||||||
@@ -952,6 +1015,7 @@ the template that it itself is using form the above sections.
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if .Values.admin.ingress.enabled }}
|
{{- if .Values.admin.ingress.enabled }}
|
||||||
|
{{- $_ := set $autoEnv "KONG_ADMIN_GUI_API_URL" (include "kong.ingress.serviceUrl" .Values.admin.ingress) -}}
|
||||||
{{- $_ := set $autoEnv "KONG_ADMIN_API_URI" (include "kong.ingress.serviceUrl" .Values.admin.ingress) -}}
|
{{- $_ := set $autoEnv "KONG_ADMIN_API_URI" (include "kong.ingress.serviceUrl" .Values.admin.ingress) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
@@ -1203,6 +1267,42 @@ resource roles into their separate templates.
|
|||||||
- namespaces
|
- namespaces
|
||||||
verbs:
|
verbs:
|
||||||
- list
|
- list
|
||||||
|
{{- if (semverCompare ">= 3.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
|
- apiGroups:
|
||||||
|
- configuration.konghq.com
|
||||||
|
resources:
|
||||||
|
- kongupstreampolicies
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- configuration.konghq.com
|
||||||
|
resources:
|
||||||
|
- kongupstreampolicies/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
{{- end }}
|
||||||
|
{{- if (semverCompare ">= 2.11.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
|
- apiGroups:
|
||||||
|
- configuration.konghq.com
|
||||||
|
resources:
|
||||||
|
- kongconsumergroups
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- configuration.konghq.com
|
||||||
|
resources:
|
||||||
|
- kongconsumergroups/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
{{- end }}
|
||||||
{{- if (semverCompare "< 2.10.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
{{- if (semverCompare "< 2.10.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- ""
|
- ""
|
||||||
@@ -1361,7 +1461,7 @@ resource roles into their separate templates.
|
|||||||
- get
|
- get
|
||||||
- patch
|
- patch
|
||||||
- update
|
- update
|
||||||
{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") }}
|
{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1")}}
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- gateway.networking.k8s.io
|
- gateway.networking.k8s.io
|
||||||
resources:
|
resources:
|
||||||
@@ -1552,7 +1652,7 @@ Kubernetes Cluster-scoped resources it uses to build Kong configuration.
|
|||||||
- list
|
- list
|
||||||
- watch
|
- watch
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") }}
|
{{- if or (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1alpha2") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "gateway.networking.k8s.io/v1")}}
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- gateway.networking.k8s.io
|
- gateway.networking.k8s.io
|
||||||
resources:
|
resources:
|
||||||
@@ -1614,6 +1714,16 @@ networking.k8s.io/v1beta1
|
|||||||
extensions/v1beta1
|
extensions/v1beta1
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "kong.proxy.compatibleReadiness" -}}
|
||||||
|
{{- $proxyReadiness := .Values.readinessProbe -}}
|
||||||
|
{{- if (or (semverCompare "< 3.3.0" (include "kong.effectiveVersion" .Values.image)) (and .Values.ingressController.enabled (semverCompare "< 2.11.0" (include "kong.effectiveVersion" .Values.ingressController.image)))) -}}
|
||||||
|
{{- if (eq $proxyReadiness.httpGet.path "/status/ready") -}}
|
||||||
|
{{- $_ := set $proxyReadiness.httpGet "path" "/status" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- (toYaml $proxyReadiness) -}}
|
||||||
|
{{- end -}}
|
||||||
{{/*
|
{{/*
|
||||||
appsec labels
|
appsec labels
|
||||||
*/}}
|
*/}}
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ webhooks:
|
|||||||
namespaceSelector:
|
namespaceSelector:
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- with .Values.ingressController.admissionWebhook.timeoutSeconds }}
|
||||||
|
timeoutSeconds: {{ . }}
|
||||||
|
{{- end }}
|
||||||
objectSelector:
|
objectSelector:
|
||||||
matchExpressions:
|
matchExpressions:
|
||||||
- key: owner
|
- key: owner
|
||||||
@@ -77,9 +80,38 @@ webhooks:
|
|||||||
apiVersions:
|
apiVersions:
|
||||||
- 'v1'
|
- 'v1'
|
||||||
operations:
|
operations:
|
||||||
|
{{- if (semverCompare ">= 2.12.1" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
|
- CREATE
|
||||||
|
{{- end }}
|
||||||
- UPDATE
|
- UPDATE
|
||||||
resources:
|
resources:
|
||||||
- secrets
|
- secrets
|
||||||
|
{{- if (semverCompare ">= 3.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
|
- services
|
||||||
|
{{- end }}
|
||||||
|
{{- if (semverCompare ">= 2.12.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
|
- apiGroups:
|
||||||
|
- networking.k8s.io
|
||||||
|
apiVersions:
|
||||||
|
- 'v1'
|
||||||
|
operations:
|
||||||
|
- CREATE
|
||||||
|
- UPDATE
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
- apiGroups:
|
||||||
|
- gateway.networking.k8s.io
|
||||||
|
apiVersions:
|
||||||
|
- 'v1alpha2'
|
||||||
|
- 'v1beta1'
|
||||||
|
- 'v1'
|
||||||
|
operations:
|
||||||
|
- CREATE
|
||||||
|
- UPDATE
|
||||||
|
resources:
|
||||||
|
- gateways
|
||||||
|
- httproutes
|
||||||
|
{{- end }}
|
||||||
clientConfig:
|
clientConfig:
|
||||||
{{- if not .Values.ingressController.admissionWebhook.certificate.provided }}
|
{{- if not .Values.ingressController.admissionWebhook.certificate.provided }}
|
||||||
caBundle: {{ b64enc $caCert }}
|
caBundle: {{ b64enc $caCert }}
|
||||||
|
|||||||
@@ -70,6 +70,9 @@ spec:
|
|||||||
{{ include "kong.renderTpl" (dict "value" .Values.podLabels "context" $) | nindent 8 }}
|
{{ include "kong.renderTpl" (dict "value" .Values.podLabels "context" $) | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
|
{{- if .Values.deployment.hostname }}
|
||||||
|
hostname: {{ .Values.deployment.hostname }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.deployment.hostNetwork }}
|
{{- if .Values.deployment.hostNetwork }}
|
||||||
hostNetwork: true
|
hostNetwork: true
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -359,7 +362,7 @@ spec:
|
|||||||
{{- include "kong.volumeMounts" . | nindent 10 }}
|
{{- include "kong.volumeMounts" . | nindent 10 }}
|
||||||
{{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 10 }}
|
{{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 10 }}
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
{{ toYaml .Values.readinessProbe | indent 10 }}
|
{{ include "kong.proxy.compatibleReadiness" . | indent 10 }}
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
{{ toYaml .Values.livenessProbe | indent 10 }}
|
{{ toYaml .Values.livenessProbe | indent 10 }}
|
||||||
{{- if .Values.startupProbe }}
|
{{- if .Values.startupProbe }}
|
||||||
@@ -403,41 +406,6 @@ spec:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- include "kong.volumes" . | nindent 8 -}}
|
{{- include "kong.volumes" . | nindent 8 -}}
|
||||||
{{- include "kong.userDefinedVolumes" . | nindent 8 -}}
|
{{- include "kong.userDefinedVolumes" . | nindent 8 -}}
|
||||||
{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }}
|
|
||||||
- name: {{ template "kong.serviceAccountTokenName" . }}
|
|
||||||
{{- /* Due to GKE versions (e.g. v1.23.15-gke.1900) we need to handle pre-release part of the version as well.
|
|
||||||
See the related documentation of semver module that Helm depends on for semverCompare:
|
|
||||||
https://github.com/Masterminds/semver#working-with-prerelease-versions
|
|
||||||
Related Helm issue: https://github.com/helm/helm/issues/3810 */}}
|
|
||||||
{{- if semverCompare ">=1.20.0-0" .Capabilities.KubeVersion.Version }}
|
|
||||||
projected:
|
|
||||||
sources:
|
|
||||||
- serviceAccountToken:
|
|
||||||
expirationSeconds: 3607
|
|
||||||
path: token
|
|
||||||
- configMap:
|
|
||||||
items:
|
|
||||||
- key: ca.crt
|
|
||||||
path: ca.crt
|
|
||||||
name: kube-root-ca.crt
|
|
||||||
- downwardAPI:
|
|
||||||
items:
|
|
||||||
- fieldRef:
|
|
||||||
apiVersion: v1
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
path: namespace
|
|
||||||
{{- else }}
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "kong.serviceAccountTokenName" . }}
|
|
||||||
items:
|
|
||||||
- key: token
|
|
||||||
path: token
|
|
||||||
- key: ca.crt
|
|
||||||
path: ca.crt
|
|
||||||
- key: namespace
|
|
||||||
path: namespace
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- if (and (eq .Values.kind "AppSecStateful") .Values.appsec.persistence.enabled) }}
|
{{- if (and (eq .Values.kind "AppSecStateful") .Values.appsec.persistence.enabled) }}
|
||||||
volumeClaimTemplates:
|
volumeClaimTemplates:
|
||||||
- metadata:
|
- metadata:
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ spec:
|
|||||||
{{ include "kong.renderTpl" (dict "value" .Values.podLabels "context" $) | nindent 8 }}
|
{{ include "kong.renderTpl" (dict "value" .Values.podLabels "context" $) | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
|
{{- if .Values.deployment.hostname }}
|
||||||
|
hostname: {{ .Values.deployment.hostname }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.deployment.hostNetwork }}
|
{{- if .Values.deployment.hostNetwork }}
|
||||||
hostNetwork: true
|
hostNetwork: true
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -270,7 +273,7 @@ spec:
|
|||||||
{{- include "kong.volumeMounts" . | nindent 10 }}
|
{{- include "kong.volumeMounts" . | nindent 10 }}
|
||||||
{{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 10 }}
|
{{- include "kong.userDefinedVolumeMounts" .Values.deployment | nindent 10 }}
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
{{ toYaml .Values.readinessProbe | indent 10 }}
|
{{ include "kong.proxy.compatibleReadiness" . | indent 10 }}
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
{{ toYaml .Values.livenessProbe | indent 10 }}
|
{{ toYaml .Values.livenessProbe | indent 10 }}
|
||||||
{{- if .Values.startupProbe }}
|
{{- if .Values.startupProbe }}
|
||||||
@@ -302,39 +305,4 @@ spec:
|
|||||||
volumes:
|
volumes:
|
||||||
{{- include "kong.volumes" . | nindent 8 -}}
|
{{- include "kong.volumes" . | nindent 8 -}}
|
||||||
{{- include "kong.userDefinedVolumes" . | nindent 8 -}}
|
{{- include "kong.userDefinedVolumes" . | nindent 8 -}}
|
||||||
{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }}
|
|
||||||
- name: {{ template "kong.serviceAccountTokenName" . }}
|
|
||||||
{{- /* Due to GKE versions (e.g. v1.23.15-gke.1900) we need to handle pre-release part of the version as well.
|
|
||||||
See the related documentation of semver module that Helm depends on for semverCompare:
|
|
||||||
https://github.com/Masterminds/semver#working-with-prerelease-versions
|
|
||||||
Related Helm issue: https://github.com/helm/helm/issues/3810 */}}
|
|
||||||
{{- if semverCompare ">=1.20.0-0" .Capabilities.KubeVersion.Version }}
|
|
||||||
projected:
|
|
||||||
sources:
|
|
||||||
- serviceAccountToken:
|
|
||||||
expirationSeconds: 3607
|
|
||||||
path: token
|
|
||||||
- configMap:
|
|
||||||
items:
|
|
||||||
- key: ca.crt
|
|
||||||
path: ca.crt
|
|
||||||
name: kube-root-ca.crt
|
|
||||||
- downwardAPI:
|
|
||||||
items:
|
|
||||||
- fieldRef:
|
|
||||||
apiVersion: v1
|
|
||||||
fieldPath: metadata.namespace
|
|
||||||
path: namespace
|
|
||||||
{{- else }}
|
|
||||||
secret:
|
|
||||||
secretName: {{ template "kong.serviceAccountTokenName" . }}
|
|
||||||
items:
|
|
||||||
- key: token
|
|
||||||
path: token
|
|
||||||
- key: ca.crt
|
|
||||||
path: ca.crt
|
|
||||||
- key: namespace
|
|
||||||
path: namespace
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ spec:
|
|||||||
{{- range $key, $value := .Values.migrations.annotations }}
|
{{- range $key, $value := .Values.migrations.annotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ $value | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }}
|
||||||
|
kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
{{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }}
|
{{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }}
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ metadata:
|
|||||||
annotations:
|
annotations:
|
||||||
helm.sh/hook: "pre-upgrade"
|
helm.sh/hook: "pre-upgrade"
|
||||||
helm.sh/hook-delete-policy: "before-hook-creation"
|
helm.sh/hook-delete-policy: "before-hook-creation"
|
||||||
|
argocd.argoproj.io/hook: Sync
|
||||||
|
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
|
||||||
{{- range $key, $value := .Values.migrations.jobAnnotations }}
|
{{- range $key, $value := .Values.migrations.jobAnnotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ $value | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -29,6 +31,9 @@ spec:
|
|||||||
{{- range $key, $value := .Values.migrations.annotations }}
|
{{- range $key, $value := .Values.migrations.annotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ $value | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }}
|
||||||
|
kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
{{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }}
|
{{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ metadata:
|
|||||||
{{- include "kong.metaLabels" . | nindent 4 }}
|
{{- include "kong.metaLabels" . | nindent 4 }}
|
||||||
app.kubernetes.io/component: init-migrations
|
app.kubernetes.io/component: init-migrations
|
||||||
annotations:
|
annotations:
|
||||||
|
argocd.argoproj.io/hook: Sync
|
||||||
|
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation
|
||||||
{{- range $key, $value := .Values.migrations.jobAnnotations }}
|
{{- range $key, $value := .Values.migrations.jobAnnotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ $value | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -37,6 +39,9 @@ spec:
|
|||||||
{{- range $key, $value := .Values.migrations.annotations }}
|
{{- range $key, $value := .Values.migrations.annotations }}
|
||||||
{{ $key }}: {{ $value | quote }}
|
{{ $key }}: {{ $value | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if (and (not .Values.deployment.serviceAccount.automountServiceAccountToken) (or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name)) }}
|
||||||
|
kuma.io/service-account-token-volume: {{ template "kong.serviceAccountTokenName" . }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
{{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }}
|
{{- if or .Values.deployment.serviceAccount.create .Values.deployment.serviceAccount.name }}
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
{{- if .Values.podDisruptionBudget.enabled }}
|
{{- if .Values.podDisruptionBudget.enabled }}
|
||||||
|
{{- if and (not .Values.autoscaling.enabled) (le (int .Values.replicaCount) 1) }}
|
||||||
|
{{- fail "Enabling PodDisruptionBudget with replicaCount: 1 and no autoscaling prevents pod restarts during upgrades" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and .Values.autoscaling.enabled (le (int .Values.autoscaling.minReplicas) 1) }}
|
||||||
|
{{- fail "Enabling PodDisruptionBudget with autoscaling.minReplicas: 1 prevents pod restarts during upgrades" }}
|
||||||
|
{{- end }}
|
||||||
apiVersion: policy/v1
|
apiVersion: policy/v1
|
||||||
kind: PodDisruptionBudget
|
kind: PodDisruptionBudget
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{{- if .Values.deployment.kong.enabled }}
|
{{- if .Values.deployment.kong.enabled }}
|
||||||
{{- if .Values.enterprise.enabled }}
|
|
||||||
{{- if and .Values.manager.enabled (or .Values.manager.http.enabled .Values.manager.tls.enabled) -}}
|
{{- if and .Values.manager.enabled (or .Values.manager.http.enabled .Values.manager.tls.enabled) -}}
|
||||||
{{- $serviceConfig := dict -}}
|
{{- $serviceConfig := dict -}}
|
||||||
{{- $serviceConfig := merge $serviceConfig .Values.manager -}}
|
{{- $serviceConfig := merge $serviceConfig .Values.manager -}}
|
||||||
@@ -16,4 +15,3 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ spec:
|
|||||||
{{- if .Values.serviceMonitor.metricRelabelings }}
|
{{- if .Values.serviceMonitor.metricRelabelings }}
|
||||||
metricRelabelings: {{ toYaml .Values.serviceMonitor.metricRelabelings | nindent 6 }}
|
metricRelabelings: {{ toYaml .Values.serviceMonitor.metricRelabelings | nindent 6 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{ if (semverCompare ">= 2.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) -}}
|
{{- if and .Values.ingressController.enabled (semverCompare ">= 2.0.0" (include "kong.effectiveVersion" .Values.ingressController.image)) }}
|
||||||
- targetPort: cmetrics
|
- targetPort: cmetrics
|
||||||
scheme: http
|
scheme: http
|
||||||
{{- if .Values.serviceMonitor.interval }}
|
{{- if .Values.serviceMonitor.interval }}
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ metadata:
|
|||||||
name: "{{ .Release.Name }}-httpbin"
|
name: "{{ .Release.Name }}-httpbin"
|
||||||
annotations:
|
annotations:
|
||||||
httpbin.ingress.kubernetes.io/rewrite-target: /
|
httpbin.ingress.kubernetes.io/rewrite-target: /
|
||||||
kubernetes.io/ingress.class: "kong"
|
|
||||||
konghq.com/strip-path: "true"
|
konghq.com/strip-path: "true"
|
||||||
spec:
|
spec:
|
||||||
|
ingressClassName: kong
|
||||||
rules:
|
rules:
|
||||||
- http:
|
- http:
|
||||||
paths:
|
paths:
|
||||||
@@ -46,14 +46,14 @@ spec:
|
|||||||
port:
|
port:
|
||||||
number: 80
|
number: 80
|
||||||
---
|
---
|
||||||
apiVersion: gateway.networking.k8s.io/v1alpha2
|
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||||
kind: GatewayClass
|
kind: GatewayClass
|
||||||
metadata:
|
metadata:
|
||||||
name: "{{ .Release.Name }}-kong-test"
|
name: "{{ .Release.Name }}-kong-test"
|
||||||
spec:
|
spec:
|
||||||
controllerName: konghq.com/kic-gateway-controller
|
controllerName: konghq.com/kic-gateway-controller
|
||||||
---
|
---
|
||||||
apiVersion: gateway.networking.k8s.io/v1alpha2
|
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||||
kind: Gateway
|
kind: Gateway
|
||||||
metadata:
|
metadata:
|
||||||
name: "{{ .Release.Name }}-kong-test"
|
name: "{{ .Release.Name }}-kong-test"
|
||||||
@@ -66,7 +66,7 @@ spec:
|
|||||||
protocol: HTTP
|
protocol: HTTP
|
||||||
port: 80
|
port: 80
|
||||||
---
|
---
|
||||||
apiVersion: gateway.networking.k8s.io/v1alpha2
|
apiVersion: gateway.networking.k8s.io/v1beta1
|
||||||
kind: HTTPRoute
|
kind: HTTPRoute
|
||||||
metadata:
|
metadata:
|
||||||
name: "{{ .Release.Name }}-httpbin"
|
name: "{{ .Release.Name }}-httpbin"
|
||||||
|
|||||||
@@ -60,6 +60,11 @@ deployment:
|
|||||||
# Use a DaemonSet controller instead of a Deployment controller
|
# Use a DaemonSet controller instead of a Deployment controller
|
||||||
daemonset: false
|
daemonset: false
|
||||||
hostNetwork: false
|
hostNetwork: false
|
||||||
|
# Set the Deployment's spec.template.hostname field.
|
||||||
|
# This propagates to Kong API endpoints that report
|
||||||
|
# the hostname, such as the admin API root and hybrid mode
|
||||||
|
# /clustering/data-planes endpoint
|
||||||
|
hostname: ""
|
||||||
# kong_prefix empty dir size
|
# kong_prefix empty dir size
|
||||||
prefixDir:
|
prefixDir:
|
||||||
sizeLimit: 256Mi
|
sizeLimit: 256Mi
|
||||||
@@ -86,7 +91,7 @@ env:
|
|||||||
database: "off"
|
database: "off"
|
||||||
# the chart uses the traditional router (for Kong 3.x+) because the ingress
|
# the chart uses the traditional router (for Kong 3.x+) because the ingress
|
||||||
# controller generates traditional routes. if you do not use the controller,
|
# controller generates traditional routes. if you do not use the controller,
|
||||||
# you may set this to "traditional_compatible" or "expression" to use the new
|
# you may set this to "traditional_compatible" or "expressions" to use the new
|
||||||
# DSL-based router
|
# DSL-based router
|
||||||
router_flavor: "traditional"
|
router_flavor: "traditional"
|
||||||
nginx_worker_processes: "2"
|
nginx_worker_processes: "2"
|
||||||
@@ -121,11 +126,13 @@ extraLabels: {}
|
|||||||
# Specify Kong's Docker image and repository details here
|
# Specify Kong's Docker image and repository details here
|
||||||
image:
|
image:
|
||||||
repository: kong
|
repository: kong
|
||||||
tag: "3.3"
|
tag: "3.4"
|
||||||
# Kong Enterprise
|
# Kong Enterprise
|
||||||
# repository: kong/kong-gateway
|
# repository: kong/kong-gateway
|
||||||
# tag: "3.3"
|
# tag: "3.4"
|
||||||
|
|
||||||
|
# Specify a semver version if your image tag is not one (e.g. "nightly")
|
||||||
|
effectiveSemver:
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
## Optionally specify an array of imagePullSecrets.
|
## Optionally specify an array of imagePullSecrets.
|
||||||
## Secrets must be manually created in the namespace.
|
## Secrets must be manually created in the namespace.
|
||||||
@@ -508,13 +515,13 @@ dblessConfig:
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
# Kong Ingress Controller's primary purpose is to satisfy Ingress resources
|
# Kong Ingress Controller's primary purpose is to satisfy Ingress resources
|
||||||
# created in k8s. It uses CRDs for more fine grained control over routing and
|
# created in k8s. It uses CRDs for more fine grained control over routing and
|
||||||
# for Kong specific configuration.
|
# for Kong specific configuration.
|
||||||
ingressController:
|
ingressController:
|
||||||
enabled: true
|
enabled: true
|
||||||
image:
|
image:
|
||||||
repository: kong/kubernetes-ingress-controller
|
repository: kong/kubernetes-ingress-controller
|
||||||
tag: "2.10"
|
tag: "3.0"
|
||||||
# Optionally set a semantic version for version-gated features. This can normally
|
# Optionally set a semantic version for version-gated features. This can normally
|
||||||
# be left unset. You only need to set this if your tag is not a semver string,
|
# be left unset. You only need to set this if your tag is not a semver string,
|
||||||
# such as when you are using a "next" tag. Set this to the effective semantic
|
# such as when you are using a "next" tag. Set this to the effective semantic
|
||||||
@@ -574,6 +581,8 @@ ingressController:
|
|||||||
service:
|
service:
|
||||||
# Specify custom labels for the validation webhook service.
|
# Specify custom labels for the validation webhook service.
|
||||||
labels: {}
|
labels: {}
|
||||||
|
# Tune the default Kubernetes timeoutSeconds of 10 seconds
|
||||||
|
# timeoutSeconds: 10
|
||||||
|
|
||||||
ingressClass: kong
|
ingressClass: kong
|
||||||
# annotations for IngressClass resource (Kubernetes 1.18+)
|
# annotations for IngressClass resource (Kubernetes 1.18+)
|
||||||
@@ -800,7 +809,7 @@ resources: {}
|
|||||||
# readinessProbe for Kong pods
|
# readinessProbe for Kong pods
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: "/status"
|
path: "/status/ready"
|
||||||
port: status
|
port: status
|
||||||
scheme: HTTP
|
scheme: HTTP
|
||||||
initialDelaySeconds: 5
|
initialDelaySeconds: 5
|
||||||
@@ -944,6 +953,14 @@ securityContext: {}
|
|||||||
# securityContext for containers.
|
# securityContext for containers.
|
||||||
containerSecurityContext:
|
containerSecurityContext:
|
||||||
readOnlyRootFilesystem: true
|
readOnlyRootFilesystem: true
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsNonRoot: true
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
|
||||||
## Optional DNS configuration for Kong pods
|
## Optional DNS configuration for Kong pods
|
||||||
# dnsPolicy: ClusterFirst
|
# dnsPolicy: ClusterFirst
|
||||||
@@ -964,7 +981,7 @@ serviceMonitor:
|
|||||||
# If you wish to gather metrics from a Kong instance with the proxy disabled (such as a hybrid control plane), see:
|
# If you wish to gather metrics from a Kong instance with the proxy disabled (such as a hybrid control plane), see:
|
||||||
# https://github.com/Kong/charts/blob/main/charts/kong/README.md#prometheus-operator-integration
|
# https://github.com/Kong/charts/blob/main/charts/kong/README.md#prometheus-operator-integration
|
||||||
enabled: false
|
enabled: false
|
||||||
# interval: 10s
|
# interval: 30s
|
||||||
# Specifies namespace, where ServiceMonitor should be installed
|
# Specifies namespace, where ServiceMonitor should be installed
|
||||||
# namespace: monitoring
|
# namespace: monitoring
|
||||||
# labels:
|
# labels:
|
||||||
@@ -1229,8 +1246,8 @@ appsec:
|
|||||||
image:
|
image:
|
||||||
#registry:
|
#registry:
|
||||||
repository: ghcr.io/openappsec
|
repository: ghcr.io/openappsec
|
||||||
image: agent
|
image: "agent"
|
||||||
tag: latest
|
tag: "1.1.1"
|
||||||
pullPolicy: Always
|
pullPolicy: Always
|
||||||
|
|
||||||
securityContext:
|
securityContext:
|
||||||
@@ -1243,8 +1260,8 @@ appsec:
|
|||||||
# runAsUser: 1000
|
# runAsUser: 1000
|
||||||
kong:
|
kong:
|
||||||
image:
|
image:
|
||||||
repository: "ghcr.io/openappsec/kong-gateway-attachment"
|
repository: "ghcr.io/openappsec/kong-attachment"
|
||||||
tag: "latest"
|
tag: "1.1.1"
|
||||||
configMapName: appsec-settings-configmap
|
configMapName: appsec-settings-configmap
|
||||||
configMapContent:
|
configMapContent:
|
||||||
crowdsec:
|
crowdsec:
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ CROWDSEC_INSTALLATION_SCRIPT="install-cp-crowdsec-aux.sh"
|
|||||||
HTTP_TRANSACTION_HANDLER_SERVICE="install-cp-nano-service-http-transaction-handler.sh"
|
HTTP_TRANSACTION_HANDLER_SERVICE="install-cp-nano-service-http-transaction-handler.sh"
|
||||||
ATTACHMENT_REGISTRATION_SERVICE="install-cp-nano-attachment-registration-manager.sh"
|
ATTACHMENT_REGISTRATION_SERVICE="install-cp-nano-attachment-registration-manager.sh"
|
||||||
ORCHESTRATION_INSTALLATION_SCRIPT="install-cp-nano-agent.sh"
|
ORCHESTRATION_INSTALLATION_SCRIPT="install-cp-nano-agent.sh"
|
||||||
|
CACHE_INSTALLATION_SCRIPT="install-cp-nano-agent-cache.sh"
|
||||||
|
|
||||||
var_fog_address=
|
var_fog_address=
|
||||||
var_proxy=
|
var_proxy=
|
||||||
@@ -63,6 +64,7 @@ if [ -f /var/run/secrets/kubernetes.io/serviceaccount/token ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
/nano-service-installers/$ATTACHMENT_REGISTRATION_SERVICE --install
|
/nano-service-installers/$ATTACHMENT_REGISTRATION_SERVICE --install
|
||||||
|
/nano-service-installers/$CACHE_INSTALLATION_SCRIPT --install
|
||||||
/nano-service-installers/$HTTP_TRANSACTION_HANDLER_SERVICE --install
|
/nano-service-installers/$HTTP_TRANSACTION_HANDLER_SERVICE --install
|
||||||
|
|
||||||
if [ ! -z $CROWDSEC_ENABLED ]; then
|
if [ ! -z $CROWDSEC_ENABLED ]; then
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ nginxIntakerEvent::resetAllCounters()
|
|||||||
req_proccessing_timeout = 0;
|
req_proccessing_timeout = 0;
|
||||||
res_proccessing_timeout = 0;
|
res_proccessing_timeout = 0;
|
||||||
req_failed_to_reach_upstream = 0;
|
req_failed_to_reach_upstream = 0;
|
||||||
|
req_overall_size = 0;
|
||||||
|
res_overall_size = 0;
|
||||||
cpu_event.setCPU(0);
|
cpu_event.setCPU(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,10 +251,22 @@ nginxIntakerEvent::addPluginMetricCounter(const ngx_http_cp_metric_data_t *recie
|
|||||||
cpu_event.setCPU(amount);
|
cpu_event.setCPU(amount);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ngx_http_plugin_metric_type_e::REQUEST_OVERALL_SIZE_COUNT: {
|
||||||
|
req_overall_size += amount;
|
||||||
|
static const uint64_t max_expected_res_size = 100ULL * 1024 * 1024 * 1024;
|
||||||
|
if (amount > max_expected_res_size) {
|
||||||
|
dbgWarning(D_METRICS_NGINX_ATTACHMENT) << "Requests sizes higher than expected: " << amount;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ngx_http_plugin_metric_type_e::RESPONSE_OVERALL_SIZE_COUNT: {
|
||||||
|
res_overall_size += amount;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
dbgWarning(D_METRICS_NGINX_ATTACHMENT)
|
dbgWarning(D_METRICS_NGINX_ATTACHMENT)
|
||||||
<< "Unsupported metric type. Type: " << static_cast<int>(metric_type);
|
<< "Unsupported metric type. Type: " << static_cast<int>(metric_type);
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -353,6 +367,10 @@ nginxIntakerEvent::getPluginMetricCounter(ngx_http_plugin_metric_type_e metric_t
|
|||||||
return req_failed_to_reach_upstream;
|
return req_failed_to_reach_upstream;
|
||||||
case ngx_http_plugin_metric_type_e::CPU_USAGE:
|
case ngx_http_plugin_metric_type_e::CPU_USAGE:
|
||||||
return static_cast<uint64_t>(cpu_event.getCPU());
|
return static_cast<uint64_t>(cpu_event.getCPU());
|
||||||
|
case ngx_http_plugin_metric_type_e::REQUEST_OVERALL_SIZE_COUNT:
|
||||||
|
return req_overall_size;
|
||||||
|
case ngx_http_plugin_metric_type_e::RESPONSE_OVERALL_SIZE_COUNT:
|
||||||
|
return res_overall_size;
|
||||||
default:
|
default:
|
||||||
dbgWarning(D_METRICS_NGINX_ATTACHMENT)
|
dbgWarning(D_METRICS_NGINX_ATTACHMENT)
|
||||||
<< "Unsupported metric type. Type: " << static_cast<int>(metric_type);
|
<< "Unsupported metric type. Type: " << static_cast<int>(metric_type);
|
||||||
@@ -498,5 +516,11 @@ nginxIntakerMetric::upon(const nginxIntakerEvent &event)
|
|||||||
req_failed_to_reach_upstream.report(
|
req_failed_to_reach_upstream.report(
|
||||||
event.getPluginMetricCounter(ngx_http_plugin_metric_type_e::REQ_FAILED_TO_REACH_UPSTREAM)
|
event.getPluginMetricCounter(ngx_http_plugin_metric_type_e::REQ_FAILED_TO_REACH_UPSTREAM)
|
||||||
);
|
);
|
||||||
|
req_overall_size.report(
|
||||||
|
event.getPluginMetricCounter(ngx_http_plugin_metric_type_e::REQUEST_OVERALL_SIZE_COUNT)
|
||||||
|
);
|
||||||
|
res_overall_size.report(
|
||||||
|
event.getPluginMetricCounter(ngx_http_plugin_metric_type_e::RESPONSE_OVERALL_SIZE_COUNT)
|
||||||
|
);
|
||||||
event.notifyCPU();
|
event.notifyCPU();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -224,5 +224,6 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const ParameterBehavior action_ignore(BehaviorKey::ACTION, BehaviorValue::IGNORE);
|
static const ParameterBehavior action_ignore(BehaviorKey::ACTION, BehaviorValue::IGNORE);
|
||||||
|
static const ParameterBehavior action_accept(BehaviorKey::ACTION, BehaviorValue::ACCEPT);
|
||||||
|
|
||||||
#endif //__PARAMETERS_CONFIG_H__
|
#endif //__PARAMETERS_CONFIG_H__
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user