├── .gitignore ├── LICENSE ├── README.md ├── deploy-k8s-resources ├── grafana_helm │ └── grafana-values.yaml ├── helm_release.tf ├── k6_tests │ ├── k6-test.yaml │ ├── k6_tests_01.js │ ├── run_k6_tests.sh │ └── test.js ├── kong_helm │ ├── basic-auth-plugin.yaml │ ├── basic-auth-testuser-secret-100.yaml │ ├── basic-auth-testuser-secret-generator.sh │ ├── basic-auth-testuser-secret.yaml │ ├── consumer-generator.sh │ ├── consumer-testuser.yaml │ ├── expanded-ingresses.yaml │ ├── key-auth-plugin.yaml │ ├── key-auth-testuser-secret-100.yaml │ ├── key-auth-testuser-secret-generator.sh │ ├── key-auth-testuser-secret.yaml │ ├── kong-ce-values.yaml │ ├── kong-consumers-100.yaml │ ├── kong-ee-values.yaml │ ├── license.json │ ├── prometheus-plugin.yaml │ ├── rate-limiting-advanced-plugin.yaml │ ├── rate-limiting-plugin.yaml │ └── upstream-generator.sh ├── kubernetes.tf ├── outputs.tf ├── prometheus_helm │ └── prometheus-values.yaml ├── redis-values.yaml ├── variables.tf └── versions.tf ├── grafana.gif └── provision-eks-cluster ├── main.tf ├── outputs.tf ├── terraform.tf └── variables.tf /.gitignore: -------------------------------------------------------------------------------- 1 | # Local .terraform directories 2 | **/.terraform/* 3 | 4 | # .tfstate files 5 | *.tfstate 6 | *.tfstate.* 7 | *.tfplan 8 | 9 | # Crash log files 10 | crash.log 11 | 12 | # Exclude all .tfvars files, which are likely to contain sentitive data, such as 13 | # password, private keys, and other secrets. These should not be part of version 14 | # control as they are data points which are potentially sensitive and subject 15 | # to change depending on the environment. 16 | *.tfvars 17 | 18 | # Ignore override files as they are usually used to override resources locally and so 19 | # are not checked in 20 | override.tf 21 | override.tf.json 22 | *_override.tf 23 | *_override.tf.json 24 | 25 | # Ignore CLI configuration files 26 | .terraformrc 27 | terraform.rc 28 | 29 | **/.DS_Store 30 | *.plan 31 | *.lock.hcl 32 | 33 | **/k6-test-temp.yaml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright 2016-2024 Kong Inc. 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Kong Gateway Performance Benchmark 2 | ================================== 3 | 4 | Scripts to deploy: 5 | - k8s cluster on EKS 6 | - Kong Gateway with Ingress Controller (CE or EE) 7 | - A test upstream ([go-bench-suite](https://github.com/asoorm/go-bench-suite)) 8 | - [k6 operator](https://github.com/grafana/k6-operator) 9 | 10 | 11 | Run `provision-eks-cluster` terraform scripts first to create the EKS cluster 12 | 13 | First, you need to make sure you have proper authentication to interact with [AWS](https://docs.aws.amazon.com/cli/latest/userguide/sso-configure-profile-token.html) 14 | ``` 15 | aws sso login 16 | ``` 17 | Then run the `terraform` command to create the cluster, it could take around 15-20 minutes to create the EKS cluster, so be patient. 18 | ``` 19 | terraform init -input=false 20 | terraform plan -out YOUR_PLAN_NAME.plan -input=false 21 | terraform apply -auto-approve YOUR_PLAN_NAME.plan 22 | ``` 23 | 24 | Then run: 25 | ``` 26 | aws eks --region $(terraform output -raw region) update-kubeconfig \ 27 | --name $(terraform output -raw cluster_name) 28 | ``` 29 | 30 | Verify cluster is running: 31 | ``` 32 | $ kubectl get nodes 33 | NAME STATUS ROLES AGE VERSION 34 | ip-10-0-2-83.us-west-2.compute.internal Ready 25m v1.27.7-eks-e71965b 35 | ip-10-0-3-172.us-west-2.compute.internal Ready 25m v1.27.7-eks-e71965b 36 | ip-10-0-3-91.us-west-2.compute.internal Ready 25m v1.27.7-eks-e71965b 37 | ``` 38 | 39 | Next, you can start the deployment of kong and all the other services. Please note, if you want to test [Kong Enterprise](https://konghq.com/products/kong-enterprise), there are some extra setup required before you run the terraform scripts in `deploy-k8s-resources` 40 | 41 | Extra configurations for [Kong Enterprise](https://konghq.com/products/kong-enterprise) 42 | 1. Update [license.json](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/deploy-k8s-resources/kong_helm/license.json) with a valid `license.json` to start Kong Enterprise. If you don't have one, please reach out to [team](mailto:bizdev@konghq.com?subject=[GitHub]%20Source%20Han%20Sans) for a temporary testing license. 43 | 2. Add terraform variables 44 | ``` 45 | export TF_VAR_kong_enterprise=true 46 | export TF_VAR_kong_repository=kong/kong-gateway 47 | export TF_VAR_kong_version=3.6 48 | ``` 49 | 3. If you are testing non-release kong enterprise image, you also need to set `kong_effective_semver` along with other variables like 50 | ``` 51 | export TF_VAR_kong_enterprise=true 52 | export TF_VAR_kong_repository=kong/kong-gateway-dev 53 | export TF_VAR_kong_version=3.6-test-image 54 | export TF_VAR_kong_effective_semver=3.6 55 | ``` 56 | 57 | Run `deploy-k8s-resources` terraform scripts to start the deployment 58 | ``` 59 | terraform init -input=false 60 | terraform plan -out YOUR_PLAN_NAME.plan -input=false 61 | terraform apply -auto-approve YOUR_PLAN_NAME.plan 62 | ``` 63 | 64 | After all the pods are up and running, try to reach kong with endpoint like 65 | ``` 66 | curl -i --insecure -X GET https://YOUR-AWS-ELB-ENDPOINT.REGION.elb.amazonaws.com/upstream/json/valid 67 | ``` 68 | 69 | The default setup is 1 service/route and no plugin enabled, to enable other kong configurations, you need to navigate to `deploy-k8s-resources/kong_helm` and apply the `.yaml` you need. 70 | 71 | There are also scripts in the `deploy-k8s-resources/kong_helm` folder that could help you generate more kong config data([service/route](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/deploy-k8s-resources/kong_helm/upstream-generator.sh), [consumers](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/deploy-k8s-resources/kong_helm/consumer-generator.sh), [basic-auth](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/deploy-k8s-resources/kong_helm/basic-auth-testuser-secret-generator.sh), [key-auth](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/deploy-k8s-resources/kong_helm/key-auth-testuser-secret-generator.sh)) you need. 72 | 73 | Here are some examples about how you can apply some of the kong configurations 74 | 75 | Deploy other k8s resources: 76 | ``` 77 | kubectl apply -f prometheus-plugin.yaml -n kong 78 | kubectl apply -f basic-auth-testuser-secret.yaml -n kong 79 | kubectl apply -f key-auth-testuser-secret.yaml -n kong 80 | kubectl apply -f consumer-testuser.yaml -n kong 81 | 82 | # To enable basic-auth 83 | kubectl apply -f basic-auth-plugin.yaml -n kong 84 | 85 | # To enable key-auth 86 | kubectl apply -f key-auth-plugin.yaml -n kong 87 | 88 | ``` 89 | 90 | If you want to run the tests, you can navigate to `deploy-k8s-resources/k6_tests` folder, and trigger the test with running the `run_k6_tests.sh` script. you can run `bash run_k6_tests.sh --help` to see what input is expected while running the script. An example of running the test would be: 91 | ``` 92 | bash run_k6_tests.sh k6_tests_01.js 1 300 900s false false 93 | ``` 94 | 95 | After triggering the k6 tests, you can check to see whether the k6 test is running by command like below: 96 | ``` 97 | kubectl get pods -n k6 98 | NAME READY STATUS RESTARTS AGE 99 | k6-k6-operator-controller-manager-6b7f5b5647-bz9ml 2/2 Running 0 5d19h 100 | k6-kong-1-f49x6 0/1 Running 0 118s 101 | k6-kong-initializer-f5w5j 0/1 Completed 0 2m1s 102 | ``` 103 | 104 | Please note, in our default setup for [k6](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/provision-eks-cluster/variables.tf) tooling, we are using [c5.metal](https://aws.amazon.com/ec2/instance-types/c5/), it might be too powerful/expensive for some users. We use it as default because `k6` is very resources demanding when running [high load performance tests](https://k6.io/docs/testing-guides/running-large-tests/#hardware-considerations). If you decided to use a less powerful machine for `k6`, you need to adjust the default setup of the `resources` required for [k6-test.yaml](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/deploy-k8s-resources/k6_tests/k6-test.yaml) 105 | 106 | 107 | You can monitor the pod CPU/MEM metrics with [metrics-server](https://github.com/kubernetes-sigs/metrics-server) with command like 108 | ``` 109 | kubectl top pod -n kong 110 | kubectl top pod -n k6 111 | kubectl top pod -n observability 112 | ``` 113 | 114 | You can also view the metrics in realtime via grafana 115 | 116 | First find the grafana pod via command like 117 | ``` 118 | kubectl get pods -n observability 119 | NAME READY STATUS RESTARTS AGE 120 | grafana-6c9b96488c-2fvfm 2/2 Running 0 26h 121 | prometheus-alertmanager-0 1/1 Running 0 26h 122 | prometheus-kube-state-metrics-85596bfdb6-td55s 1/1 Running 0 26h 123 | prometheus-prometheus-node-exporter-h74g2 1/1 Running 0 26h 124 | prometheus-prometheus-node-exporter-qdbcf 1/1 Running 0 26h 125 | prometheus-prometheus-node-exporter-r6zqr 1/1 Running 0 26h 126 | prometheus-prometheus-pushgateway-79745d4495-5gb9h 1/1 Running 0 26h 127 | prometheus-server-7c4d9755b5-nwht2 2/2 Running 0 26h 128 | ``` 129 | 130 | Then portforward the grafana pod to your local with command like 131 | ``` 132 | kubectl port-forward grafana-6c9b96488c-2fvfm 3000:3000 -n observability 133 | ``` 134 | 135 | Now you can load the grafana in your local browser with url like `http://localhost:3000/dashboards` 136 | 137 | It will probably will ask you to login for the first time, the default username is `admin`, to find the password, use this command below and paste the output to the password field in your browser. 138 | ``` 139 | kubectl get secret --namespace observability grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo 140 | ``` 141 | 142 | ![](grafana.gif) 143 | 144 | ## License 145 | [Apache 2.0 License](https://github.com/Kong/kong-gateway-performance-benchmark/blob/main/LICENSE) -------------------------------------------------------------------------------- /deploy-k8s-resources/grafana_helm/grafana-values.yaml: -------------------------------------------------------------------------------- 1 | grafana.ini: 2 | server: 3 | domain: localhost 4 | root_url: "%(protocol)s://%(domain)s:%(http_port)s" 5 | # serve_from_sub_path: true 6 | # ingress: 7 | # enabled: true 8 | # hosts: 9 | # - "localhost" 10 | # path: "/grafana" 11 | # ingressClassName: kong 12 | sidecar: 13 | dashboards: 14 | enabled: true 15 | datasources: 16 | datasources.yaml: 17 | apiVersion: 1 18 | datasources: 19 | - name: Prometheus 20 | type: prometheus 21 | url: http://prometheus-server.observability.svc.cluster.local 22 | access: proxy 23 | isDefault: true 24 | dashboards: 25 | default: 26 | k6-prometheus: 27 | gnetId: 19665 28 | revision: 2 29 | datasource: Prometheus 30 | k6-prometheus-native-histogram: 31 | gnetId: 18030 32 | revision: 8 33 | datasource: Prometheus 34 | kong: 35 | gnetId: 7424 36 | revision: 11 37 | datasource: Prometheus 38 | pod-monitor: 39 | gnetId: 15055 40 | revision: 7 41 | datasource: Prometheus 42 | dashboardProviders: 43 | dashboardproviders.yaml: 44 | apiVersion: 1 45 | providers: 46 | - name: 'default' 47 | orgId: 1 48 | folder: '' 49 | type: file 50 | disableDeletion: false 51 | editable: true 52 | options: 53 | path: /var/lib/grafana/dashboards/default -------------------------------------------------------------------------------- /deploy-k8s-resources/helm_release.tf: -------------------------------------------------------------------------------- 1 | locals { 2 | kong_values = (var.kong_enterprise ? "kong-ee-values.yaml" : "kong-ce-values.yaml") 3 | } 4 | 5 | provider "helm" { 6 | kubernetes { 7 | host = data.aws_eks_cluster.cluster.endpoint 8 | cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data) 9 | exec { 10 | api_version = "client.authentication.k8s.io/v1beta1" 11 | args = ["eks", "get-token", "--cluster-name", data.aws_eks_cluster.cluster.name] 12 | command = "aws" 13 | } 14 | } 15 | } 16 | 17 | resource "helm_release" "kong" { 18 | name = "kong" 19 | repository = "https://charts.konghq.com" 20 | chart = "kong" 21 | namespace = "kong" 22 | 23 | values = [ 24 | file("${path.module}/kong_helm/${local.kong_values}") 25 | ] 26 | 27 | set { 28 | name = "image.repository" 29 | value = var.kong_repository 30 | } 31 | 32 | set { 33 | name = "image.tag" 34 | value = var.kong_version 35 | } 36 | 37 | 38 | dynamic "set" { 39 | for_each = compact([var.kong_effective_semver]) 40 | content { 41 | name = "image.effectiveSemver" 42 | value = var.kong_effective_semver 43 | } 44 | } 45 | 46 | set { 47 | name = "env.nginx_worker_processes" 48 | value = var.kong_worker_processes 49 | } 50 | 51 | depends_on = [ kubernetes_namespace.kong ] 52 | } 53 | 54 | 55 | resource "helm_release" "k6" { 56 | name = "k6" 57 | repository = "https://grafana.github.io/helm-charts" 58 | chart = "k6-operator" 59 | namespace = "k6" 60 | depends_on = [ kubernetes_namespace.k6 ] 61 | 62 | set { 63 | name = "namespace.create" 64 | value = false 65 | } 66 | 67 | set { 68 | name = "customLabels.app" 69 | value = "k6" 70 | } 71 | } 72 | 73 | resource "helm_release" "prometheus" { 74 | name = "prometheus" 75 | repository = "https://prometheus-community.github.io/helm-charts" 76 | chart = "prometheus" 77 | namespace = "observability" 78 | depends_on = [ kubernetes_namespace.observability ] 79 | version = "25.8.1" 80 | 81 | values = [ 82 | file("${path.module}/prometheus_helm/prometheus-values.yaml") 83 | ] 84 | } 85 | 86 | resource "helm_release" "grafana" { 87 | name = "grafana" 88 | repository = "https://grafana.github.io/helm-charts" 89 | chart = "grafana" 90 | namespace = "observability" 91 | depends_on = [ kubernetes_namespace.observability ] 92 | version = "7.0.11" 93 | 94 | values = [ 95 | file("${path.module}/grafana_helm/grafana-values.yaml") 96 | ] 97 | } 98 | 99 | resource "helm_release" "metrics-server" { 100 | name = "metrics-server" 101 | repository = "https://kubernetes-sigs.github.io/metrics-server/" 102 | chart = "metrics-server" 103 | namespace = "observability" 104 | depends_on = [ kubernetes_namespace.observability ] 105 | version = "3.11.0" 106 | } 107 | 108 | resource "helm_release" "redis" { 109 | name = "redis" 110 | chart = "bitnamicharts/redis" 111 | repository = "oci://registry-1.docker.io" 112 | namespace = "kong" 113 | depends_on = [ kubernetes_namespace.kong ] 114 | version = "18.5.0" 115 | 116 | values = [ 117 | file("${path.module}/redis-values.yaml") 118 | ] 119 | } 120 | -------------------------------------------------------------------------------- /deploy-k8s-resources/k6_tests/k6-test.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: k6.io/v1alpha1 2 | kind: TestRun 3 | metadata: 4 | name: k6-kong 5 | spec: 6 | parallelism: 1 7 | script: 8 | configMap: 9 | name: kong-load-test 10 | file: test.js 11 | runner: 12 | livenessProbe: 13 | httpGet: 14 | path: /v1/status 15 | port: 6565 16 | initialDelaySeconds: 180 17 | periodSeconds: 30 18 | failureThreshold: 6 19 | successThreshold: 1 20 | readinessProbe: 21 | httpGet: 22 | path: /v1/status 23 | port: 6565 24 | initialDelaySeconds: 180 25 | periodSeconds: 30 26 | failureThreshold: 6 27 | successThreshold: 1 28 | resources: 29 | limits: 30 | cpu: 60000m 31 | memory: 50Gi 32 | requests: 33 | cpu: 24000m 34 | memory: 18Gi 35 | env: 36 | - name: K6_PROMETHEUS_RW_TREND_STATS 37 | value: 'avg,p(90),p(95),p(99),min,max,med,med,count,sum' 38 | - name: K6_PROMETHEUS_RW_TREND_AS_NATIVE_HISTOGRAM 39 | value: 'true' 40 | - name: K6_PROMETHEUS_RW_SERVER_URL 41 | value: 'http://prometheus-server.observability.svc.cluster.local/api/v1/write' 42 | - name: K6_INSECURE_SKIP_TLS_VERIFY 43 | value: 'true' 44 | - name: K6_OUT 45 | value: experimental-prometheus-rw 46 | - name: ENTITY_CONFIG_SIZE 47 | value: '1' 48 | - name: K6_VUS 49 | value: '50' 50 | - name: k6_DURATION 51 | value: '60s' 52 | - name: BASIC_AUTH_ENABLED 53 | value: 'false' 54 | - name: KEY_AUTH_ENABLED 55 | value: 'false' 56 | affinity: 57 | podAntiAffinity: 58 | preferredDuringSchedulingIgnoredDuringExecution: 59 | - weight: 100 60 | podAffinityTerm: 61 | labelSelector: 62 | matchExpressions: 63 | - key: app 64 | operator: In 65 | values: 66 | - kong-kong 67 | - upstream 68 | topologyKey: topology.kubernetes.io/zone 69 | arguments: --tag testid=k6-test 70 | -------------------------------------------------------------------------------- /deploy-k8s-resources/k6_tests/k6_tests_01.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | import { check } from 'k6'; 3 | import encoding from 'k6/encoding'; 4 | 5 | const config_size = __ENV.ENTITY_CONFIG_SIZE || 1; 6 | 7 | export const options = { 8 | vus: __ENV.K6_VUS || 50, 9 | duration: __ENV.k6_DURATION || '120s', 10 | summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(90)', 'p(95)', 'p(99)', 'count'], 11 | }; 12 | export default function () { 13 | let url; 14 | let basic_auth_header; 15 | let key_auth_header; 16 | if (__ENV.ENTITY_CONFIG_SIZE > 1){ 17 | let random = Math.floor( 18 | Math.sqrt( 19 | -2 * 20 | Math.floor((config_size * 0.1) / 1.3) * 21 | Math.floor((config_size * 0.1) / 1.3) * 22 | Math.log(Math.random()) 23 | ) * 24 | Math.cos(2 * Math.PI * Math.random()) + 25 | Math.floor(config_size / 2) 26 | ); 27 | 28 | url = `https://kong-kong-proxy.kong.svc.cluster.local/${random}route/json/valid`; 29 | basic_auth_header = 'Basic ' + encoding.b64encode(`testuser${random}:testuserpassword${random}`); 30 | key_auth_header = `testuserpassword${random}`; 31 | } else { 32 | url = `https://kong-kong-proxy.kong.svc.cluster.local/upstream/json/valid`; 33 | basic_auth_header = 'Basic ' + encoding.b64encode(`testuser1:testuserpassword1`); 34 | key_auth_header = `testuserpassword1`; 35 | } 36 | 37 | let res; 38 | if (__ENV.BASIC_AUTH_ENABLED == 'true'){ 39 | res = http.get(url, { timeout: '180s', headers: {'Authorization': basic_auth_header} }); 40 | } else if (__ENV.KEY_AUTH_ENABLED == 'true') { 41 | res = http.get(url, { timeout: '180s', headers: {'apikey': key_auth_header} }); 42 | } else { 43 | res = http.get(url, { timeout: '180s' }); 44 | } 45 | 46 | check(res, { 47 | 'status is 200 for proxy request': (r) => r.status === 200, 48 | }); 49 | } 50 | 51 | -------------------------------------------------------------------------------- /deploy-k8s-resources/k6_tests/run_k6_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # Function to display usage instructions 6 | usage() { 7 | echo "Usage: ./run_k6_tests.sh [ENTITY_CONFIG_SIZE] [K6_VUS] [k6_DURATION] [BASIC_AUTH_ENABLED] [KEY_AUTH_ENABLED]" 8 | echo "Optional arguments:" 9 | echo " [ENTITY_CONFIG_SIZE]: Number of entity config size (default: 1)" 10 | echo " [K6_VUS]: Number of K6 virtual users (default: 50)" 11 | echo " [k6_DURATION]: Duration of the test (default: '120s')" 12 | echo " [BASIC_AUTH_ENABLED]: Enable basic authentication (default: false)" 13 | echo " [KEY_AUTH_ENABLED]: Enable key authentication (default: false)" 14 | exit 1 15 | } 16 | 17 | # Check for help argument 18 | if [[ "$1" == "--help" || "$1" == "-h" ]]; then 19 | usage 20 | fi 21 | 22 | if [ $# -lt 1 ]; then 23 | echo "Usage: ./run_k6_tests.sh [ENTITY_CONFIG_SIZE] [K6_VUS] [k6_DURATION] [BASIC_AUTH_ENABLED] [KEY_AUTH_ENABLED]" 24 | exit 1 25 | fi 26 | 27 | # Function to check if yq is installed 28 | check_yq() { 29 | if ! command -v yq &> /dev/null; then 30 | echo -e "\e[91mError: yq not found. Please install yq before running this script.\e[0m" 31 | echo -e "On \e[92mMacOS\e[0m, you can install it with: \e[93mbrew install yq\e[0m" 32 | echo -e "On \e[92mUbuntu\e[0m, you can install it with: \e[93msudo apt-get install yq\e[0m" 33 | echo -e "On \e[92mRHEL/CentOS\e[0m, you can install it with: \e[93msudo yum install yq\e[0m" 34 | echo -e "On \e[92mDebian\e[0m, you can install it with: \e[93msudo apt-get install yq\e[0m" 35 | echo -e "Visit \e[94mhttps://github.com/mikefarah/yq#install\e[0m for more options." 36 | exit 1 37 | fi 38 | } 39 | 40 | # Check if yq is installed 41 | check_yq 42 | 43 | SCRIPT_NAME=$1 44 | ENTITY_CONFIG_SIZE=${2:-1} 45 | K6_VUS=${3:-50} 46 | k6_DURATION=${4:-'120s'} 47 | BASIC_AUTH_ENABLED=${5:-false} 48 | KEY_AUTH_ENABLED=${6:-false} 49 | RESOURCE_FILENAME=k6-test.yaml 50 | RESOURCE_NAME="(basename -s .yaml $RESOURCE_FILENAME)" 51 | TAG_PREFIX="$(basename -s .js $SCRIPT_NAME)" 52 | TAG_NAME="$TAG_PREFIX-$(date +%s)" 53 | NEW_RESOURCE_FILENAME="${RESOURCE_FILENAME%.yaml}-temp.yaml" 54 | echo NEW_RESOURCE_FILENAME=$NEW_RESOURCE_FILENAME 55 | echo TAG_NAME=$TAG_NAME 56 | echo TAG_PREFIX=$TAG_PREFIX 57 | echo RESOURCE_NAME=$RESOURCE_NAME 58 | echo k6_DURATION=$k6_DURATION 59 | echo K6_VUS=$K6_VUS 60 | echo ENTITY_CONFIG_SIZE=$ENTITY_CONFIG_SIZE 61 | echo SCRIPT_NAME=$SCRIPT_NAME 62 | 63 | # Delete the previous execution so we can create a new one 64 | kubectl delete -n k6 --ignore-not-found=true --wait=true -f $NEW_RESOURCE_FILENAME || true 65 | 66 | # Update values using yq and save to a new file 67 | yq eval-all ".spec.script.configMap.file = \"$SCRIPT_NAME\" | 68 | .spec.arguments = \"--tag testid=$TAG_NAME\" | 69 | (.spec.runner.env[] | select(.name == \"ENTITY_CONFIG_SIZE\").value) |= \"$ENTITY_CONFIG_SIZE\" | 70 | (.spec.runner.env[] | select(.name == \"K6_VUS\").value) |= \"$K6_VUS\" | 71 | (.spec.runner.env[] | select(.name == \"k6_DURATION\").value) |= \"$k6_DURATION\" | 72 | (.spec.runner.env[] | select(.name == \"BASIC_AUTH_ENABLED\").value) |= \"$BASIC_AUTH_ENABLED\" | 73 | (.spec.runner.env[] | select(.name == \"KEY_AUTH_ENABLED\").value) |= \"$KEY_AUTH_ENABLED\"" "$RESOURCE_FILENAME" > "$NEW_RESOURCE_FILENAME" 74 | 75 | kubectl apply -n k6 -f $NEW_RESOURCE_FILENAME 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /deploy-k8s-resources/k6_tests/test.js: -------------------------------------------------------------------------------- 1 | import http from 'k6/http'; 2 | export const options = { 3 | vus: 50, 4 | duration: '120s', 5 | }; 6 | export default function () { 7 | http.get('http://kong-kong-proxy.kong.svc.cluster.local/upstream/json/valid'); 8 | } -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/basic-auth-plugin.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongClusterPlugin 3 | metadata: 4 | name: basic-auth-global 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | labels: 8 | global: "true" 9 | plugin: basic-auth 10 | config: 11 | hide_credentials: true 12 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/basic-auth-testuser-secret-100.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | data: 3 | password: dGVzdHVzZXJwYXNzd29yZDE= ## testuserpassword1 4 | username: dGVzdHVzZXIx ## testuser1 5 | kind: Secret 6 | metadata: 7 | name: test-user-basic-auth-1 8 | labels: 9 | konghq.com/credential: basic-auth 10 | type: Opaque 11 | --- 12 | apiVersion: v1 13 | data: 14 | password: dGVzdHVzZXJwYXNzd29yZDI= ## testuserpassword2 15 | username: dGVzdHVzZXIy ## testuser2 16 | kind: Secret 17 | metadata: 18 | name: test-user-basic-auth-2 19 | labels: 20 | konghq.com/credential: basic-auth 21 | type: Opaque 22 | --- 23 | apiVersion: v1 24 | data: 25 | password: dGVzdHVzZXJwYXNzd29yZDM= ## testuserpassword3 26 | username: dGVzdHVzZXIz ## testuser3 27 | kind: Secret 28 | metadata: 29 | name: test-user-basic-auth-3 30 | labels: 31 | konghq.com/credential: basic-auth 32 | type: Opaque 33 | --- 34 | apiVersion: v1 35 | data: 36 | password: dGVzdHVzZXJwYXNzd29yZDQ= ## testuserpassword4 37 | username: dGVzdHVzZXI0 ## testuser4 38 | kind: Secret 39 | metadata: 40 | name: test-user-basic-auth-4 41 | labels: 42 | konghq.com/credential: basic-auth 43 | type: Opaque 44 | --- 45 | apiVersion: v1 46 | data: 47 | password: dGVzdHVzZXJwYXNzd29yZDU= ## testuserpassword5 48 | username: dGVzdHVzZXI1 ## testuser5 49 | kind: Secret 50 | metadata: 51 | name: test-user-basic-auth-5 52 | labels: 53 | konghq.com/credential: basic-auth 54 | type: Opaque 55 | --- 56 | apiVersion: v1 57 | data: 58 | password: dGVzdHVzZXJwYXNzd29yZDY= ## testuserpassword6 59 | username: dGVzdHVzZXI2 ## testuser6 60 | kind: Secret 61 | metadata: 62 | name: test-user-basic-auth-6 63 | labels: 64 | konghq.com/credential: basic-auth 65 | type: Opaque 66 | --- 67 | apiVersion: v1 68 | data: 69 | password: dGVzdHVzZXJwYXNzd29yZDc= ## testuserpassword7 70 | username: dGVzdHVzZXI3 ## testuser7 71 | kind: Secret 72 | metadata: 73 | name: test-user-basic-auth-7 74 | labels: 75 | konghq.com/credential: basic-auth 76 | type: Opaque 77 | --- 78 | apiVersion: v1 79 | data: 80 | password: dGVzdHVzZXJwYXNzd29yZDg= ## testuserpassword8 81 | username: dGVzdHVzZXI4 ## testuser8 82 | kind: Secret 83 | metadata: 84 | name: test-user-basic-auth-8 85 | labels: 86 | konghq.com/credential: basic-auth 87 | type: Opaque 88 | --- 89 | apiVersion: v1 90 | data: 91 | password: dGVzdHVzZXJwYXNzd29yZDk= ## testuserpassword9 92 | username: dGVzdHVzZXI5 ## testuser9 93 | kind: Secret 94 | metadata: 95 | name: test-user-basic-auth-9 96 | labels: 97 | konghq.com/credential: basic-auth 98 | type: Opaque 99 | --- 100 | apiVersion: v1 101 | data: 102 | password: dGVzdHVzZXJwYXNzd29yZDEw ## testuserpassword10 103 | username: dGVzdHVzZXIxMA== ## testuser10 104 | kind: Secret 105 | metadata: 106 | name: test-user-basic-auth-10 107 | labels: 108 | konghq.com/credential: basic-auth 109 | type: Opaque 110 | --- 111 | apiVersion: v1 112 | data: 113 | password: dGVzdHVzZXJwYXNzd29yZDEx ## testuserpassword11 114 | username: dGVzdHVzZXIxMQ== ## testuser11 115 | kind: Secret 116 | metadata: 117 | name: test-user-basic-auth-11 118 | labels: 119 | konghq.com/credential: basic-auth 120 | type: Opaque 121 | --- 122 | apiVersion: v1 123 | data: 124 | password: dGVzdHVzZXJwYXNzd29yZDEy ## testuserpassword12 125 | username: dGVzdHVzZXIxMg== ## testuser12 126 | kind: Secret 127 | metadata: 128 | name: test-user-basic-auth-12 129 | labels: 130 | konghq.com/credential: basic-auth 131 | type: Opaque 132 | --- 133 | apiVersion: v1 134 | data: 135 | password: dGVzdHVzZXJwYXNzd29yZDEz ## testuserpassword13 136 | username: dGVzdHVzZXIxMw== ## testuser13 137 | kind: Secret 138 | metadata: 139 | name: test-user-basic-auth-13 140 | labels: 141 | konghq.com/credential: basic-auth 142 | type: Opaque 143 | --- 144 | apiVersion: v1 145 | data: 146 | password: dGVzdHVzZXJwYXNzd29yZDE0 ## testuserpassword14 147 | username: dGVzdHVzZXIxNA== ## testuser14 148 | kind: Secret 149 | metadata: 150 | name: test-user-basic-auth-14 151 | labels: 152 | konghq.com/credential: basic-auth 153 | type: Opaque 154 | --- 155 | apiVersion: v1 156 | data: 157 | password: dGVzdHVzZXJwYXNzd29yZDE1 ## testuserpassword15 158 | username: dGVzdHVzZXIxNQ== ## testuser15 159 | kind: Secret 160 | metadata: 161 | name: test-user-basic-auth-15 162 | labels: 163 | konghq.com/credential: basic-auth 164 | type: Opaque 165 | --- 166 | apiVersion: v1 167 | data: 168 | password: dGVzdHVzZXJwYXNzd29yZDE2 ## testuserpassword16 169 | username: dGVzdHVzZXIxNg== ## testuser16 170 | kind: Secret 171 | metadata: 172 | name: test-user-basic-auth-16 173 | labels: 174 | konghq.com/credential: basic-auth 175 | type: Opaque 176 | --- 177 | apiVersion: v1 178 | data: 179 | password: dGVzdHVzZXJwYXNzd29yZDE3 ## testuserpassword17 180 | username: dGVzdHVzZXIxNw== ## testuser17 181 | kind: Secret 182 | metadata: 183 | name: test-user-basic-auth-17 184 | labels: 185 | konghq.com/credential: basic-auth 186 | type: Opaque 187 | --- 188 | apiVersion: v1 189 | data: 190 | password: dGVzdHVzZXJwYXNzd29yZDE4 ## testuserpassword18 191 | username: dGVzdHVzZXIxOA== ## testuser18 192 | kind: Secret 193 | metadata: 194 | name: test-user-basic-auth-18 195 | labels: 196 | konghq.com/credential: basic-auth 197 | type: Opaque 198 | --- 199 | apiVersion: v1 200 | data: 201 | password: dGVzdHVzZXJwYXNzd29yZDE5 ## testuserpassword19 202 | username: dGVzdHVzZXIxOQ== ## testuser19 203 | kind: Secret 204 | metadata: 205 | name: test-user-basic-auth-19 206 | labels: 207 | konghq.com/credential: basic-auth 208 | type: Opaque 209 | --- 210 | apiVersion: v1 211 | data: 212 | password: dGVzdHVzZXJwYXNzd29yZDIw ## testuserpassword20 213 | username: dGVzdHVzZXIyMA== ## testuser20 214 | kind: Secret 215 | metadata: 216 | name: test-user-basic-auth-20 217 | labels: 218 | konghq.com/credential: basic-auth 219 | type: Opaque 220 | --- 221 | apiVersion: v1 222 | data: 223 | password: dGVzdHVzZXJwYXNzd29yZDIx ## testuserpassword21 224 | username: dGVzdHVzZXIyMQ== ## testuser21 225 | kind: Secret 226 | metadata: 227 | name: test-user-basic-auth-21 228 | labels: 229 | konghq.com/credential: basic-auth 230 | type: Opaque 231 | --- 232 | apiVersion: v1 233 | data: 234 | password: dGVzdHVzZXJwYXNzd29yZDIy ## testuserpassword22 235 | username: dGVzdHVzZXIyMg== ## testuser22 236 | kind: Secret 237 | metadata: 238 | name: test-user-basic-auth-22 239 | labels: 240 | konghq.com/credential: basic-auth 241 | type: Opaque 242 | --- 243 | apiVersion: v1 244 | data: 245 | password: dGVzdHVzZXJwYXNzd29yZDIz ## testuserpassword23 246 | username: dGVzdHVzZXIyMw== ## testuser23 247 | kind: Secret 248 | metadata: 249 | name: test-user-basic-auth-23 250 | labels: 251 | konghq.com/credential: basic-auth 252 | type: Opaque 253 | --- 254 | apiVersion: v1 255 | data: 256 | password: dGVzdHVzZXJwYXNzd29yZDI0 ## testuserpassword24 257 | username: dGVzdHVzZXIyNA== ## testuser24 258 | kind: Secret 259 | metadata: 260 | name: test-user-basic-auth-24 261 | labels: 262 | konghq.com/credential: basic-auth 263 | type: Opaque 264 | --- 265 | apiVersion: v1 266 | data: 267 | password: dGVzdHVzZXJwYXNzd29yZDI1 ## testuserpassword25 268 | username: dGVzdHVzZXIyNQ== ## testuser25 269 | kind: Secret 270 | metadata: 271 | name: test-user-basic-auth-25 272 | labels: 273 | konghq.com/credential: basic-auth 274 | type: Opaque 275 | --- 276 | apiVersion: v1 277 | data: 278 | password: dGVzdHVzZXJwYXNzd29yZDI2 ## testuserpassword26 279 | username: dGVzdHVzZXIyNg== ## testuser26 280 | kind: Secret 281 | metadata: 282 | name: test-user-basic-auth-26 283 | labels: 284 | konghq.com/credential: basic-auth 285 | type: Opaque 286 | --- 287 | apiVersion: v1 288 | data: 289 | password: dGVzdHVzZXJwYXNzd29yZDI3 ## testuserpassword27 290 | username: dGVzdHVzZXIyNw== ## testuser27 291 | kind: Secret 292 | metadata: 293 | name: test-user-basic-auth-27 294 | labels: 295 | konghq.com/credential: basic-auth 296 | type: Opaque 297 | --- 298 | apiVersion: v1 299 | data: 300 | password: dGVzdHVzZXJwYXNzd29yZDI4 ## testuserpassword28 301 | username: dGVzdHVzZXIyOA== ## testuser28 302 | kind: Secret 303 | metadata: 304 | name: test-user-basic-auth-28 305 | labels: 306 | konghq.com/credential: basic-auth 307 | type: Opaque 308 | --- 309 | apiVersion: v1 310 | data: 311 | password: dGVzdHVzZXJwYXNzd29yZDI5 ## testuserpassword29 312 | username: dGVzdHVzZXIyOQ== ## testuser29 313 | kind: Secret 314 | metadata: 315 | name: test-user-basic-auth-29 316 | labels: 317 | konghq.com/credential: basic-auth 318 | type: Opaque 319 | --- 320 | apiVersion: v1 321 | data: 322 | password: dGVzdHVzZXJwYXNzd29yZDMw ## testuserpassword30 323 | username: dGVzdHVzZXIzMA== ## testuser30 324 | kind: Secret 325 | metadata: 326 | name: test-user-basic-auth-30 327 | labels: 328 | konghq.com/credential: basic-auth 329 | type: Opaque 330 | --- 331 | apiVersion: v1 332 | data: 333 | password: dGVzdHVzZXJwYXNzd29yZDMx ## testuserpassword31 334 | username: dGVzdHVzZXIzMQ== ## testuser31 335 | kind: Secret 336 | metadata: 337 | name: test-user-basic-auth-31 338 | labels: 339 | konghq.com/credential: basic-auth 340 | type: Opaque 341 | --- 342 | apiVersion: v1 343 | data: 344 | password: dGVzdHVzZXJwYXNzd29yZDMy ## testuserpassword32 345 | username: dGVzdHVzZXIzMg== ## testuser32 346 | kind: Secret 347 | metadata: 348 | name: test-user-basic-auth-32 349 | labels: 350 | konghq.com/credential: basic-auth 351 | type: Opaque 352 | --- 353 | apiVersion: v1 354 | data: 355 | password: dGVzdHVzZXJwYXNzd29yZDMz ## testuserpassword33 356 | username: dGVzdHVzZXIzMw== ## testuser33 357 | kind: Secret 358 | metadata: 359 | name: test-user-basic-auth-33 360 | labels: 361 | konghq.com/credential: basic-auth 362 | type: Opaque 363 | --- 364 | apiVersion: v1 365 | data: 366 | password: dGVzdHVzZXJwYXNzd29yZDM0 ## testuserpassword34 367 | username: dGVzdHVzZXIzNA== ## testuser34 368 | kind: Secret 369 | metadata: 370 | name: test-user-basic-auth-34 371 | labels: 372 | konghq.com/credential: basic-auth 373 | type: Opaque 374 | --- 375 | apiVersion: v1 376 | data: 377 | password: dGVzdHVzZXJwYXNzd29yZDM1 ## testuserpassword35 378 | username: dGVzdHVzZXIzNQ== ## testuser35 379 | kind: Secret 380 | metadata: 381 | name: test-user-basic-auth-35 382 | labels: 383 | konghq.com/credential: basic-auth 384 | type: Opaque 385 | --- 386 | apiVersion: v1 387 | data: 388 | password: dGVzdHVzZXJwYXNzd29yZDM2 ## testuserpassword36 389 | username: dGVzdHVzZXIzNg== ## testuser36 390 | kind: Secret 391 | metadata: 392 | name: test-user-basic-auth-36 393 | labels: 394 | konghq.com/credential: basic-auth 395 | type: Opaque 396 | --- 397 | apiVersion: v1 398 | data: 399 | password: dGVzdHVzZXJwYXNzd29yZDM3 ## testuserpassword37 400 | username: dGVzdHVzZXIzNw== ## testuser37 401 | kind: Secret 402 | metadata: 403 | name: test-user-basic-auth-37 404 | labels: 405 | konghq.com/credential: basic-auth 406 | type: Opaque 407 | --- 408 | apiVersion: v1 409 | data: 410 | password: dGVzdHVzZXJwYXNzd29yZDM4 ## testuserpassword38 411 | username: dGVzdHVzZXIzOA== ## testuser38 412 | kind: Secret 413 | metadata: 414 | name: test-user-basic-auth-38 415 | labels: 416 | konghq.com/credential: basic-auth 417 | type: Opaque 418 | --- 419 | apiVersion: v1 420 | data: 421 | password: dGVzdHVzZXJwYXNzd29yZDM5 ## testuserpassword39 422 | username: dGVzdHVzZXIzOQ== ## testuser39 423 | kind: Secret 424 | metadata: 425 | name: test-user-basic-auth-39 426 | labels: 427 | konghq.com/credential: basic-auth 428 | type: Opaque 429 | --- 430 | apiVersion: v1 431 | data: 432 | password: dGVzdHVzZXJwYXNzd29yZDQw ## testuserpassword40 433 | username: dGVzdHVzZXI0MA== ## testuser40 434 | kind: Secret 435 | metadata: 436 | name: test-user-basic-auth-40 437 | labels: 438 | konghq.com/credential: basic-auth 439 | type: Opaque 440 | --- 441 | apiVersion: v1 442 | data: 443 | password: dGVzdHVzZXJwYXNzd29yZDQx ## testuserpassword41 444 | username: dGVzdHVzZXI0MQ== ## testuser41 445 | kind: Secret 446 | metadata: 447 | name: test-user-basic-auth-41 448 | labels: 449 | konghq.com/credential: basic-auth 450 | type: Opaque 451 | --- 452 | apiVersion: v1 453 | data: 454 | password: dGVzdHVzZXJwYXNzd29yZDQy ## testuserpassword42 455 | username: dGVzdHVzZXI0Mg== ## testuser42 456 | kind: Secret 457 | metadata: 458 | name: test-user-basic-auth-42 459 | labels: 460 | konghq.com/credential: basic-auth 461 | type: Opaque 462 | --- 463 | apiVersion: v1 464 | data: 465 | password: dGVzdHVzZXJwYXNzd29yZDQz ## testuserpassword43 466 | username: dGVzdHVzZXI0Mw== ## testuser43 467 | kind: Secret 468 | metadata: 469 | name: test-user-basic-auth-43 470 | labels: 471 | konghq.com/credential: basic-auth 472 | type: Opaque 473 | --- 474 | apiVersion: v1 475 | data: 476 | password: dGVzdHVzZXJwYXNzd29yZDQ0 ## testuserpassword44 477 | username: dGVzdHVzZXI0NA== ## testuser44 478 | kind: Secret 479 | metadata: 480 | name: test-user-basic-auth-44 481 | labels: 482 | konghq.com/credential: basic-auth 483 | type: Opaque 484 | --- 485 | apiVersion: v1 486 | data: 487 | password: dGVzdHVzZXJwYXNzd29yZDQ1 ## testuserpassword45 488 | username: dGVzdHVzZXI0NQ== ## testuser45 489 | kind: Secret 490 | metadata: 491 | name: test-user-basic-auth-45 492 | labels: 493 | konghq.com/credential: basic-auth 494 | type: Opaque 495 | --- 496 | apiVersion: v1 497 | data: 498 | password: dGVzdHVzZXJwYXNzd29yZDQ2 ## testuserpassword46 499 | username: dGVzdHVzZXI0Ng== ## testuser46 500 | kind: Secret 501 | metadata: 502 | name: test-user-basic-auth-46 503 | labels: 504 | konghq.com/credential: basic-auth 505 | type: Opaque 506 | --- 507 | apiVersion: v1 508 | data: 509 | password: dGVzdHVzZXJwYXNzd29yZDQ3 ## testuserpassword47 510 | username: dGVzdHVzZXI0Nw== ## testuser47 511 | kind: Secret 512 | metadata: 513 | name: test-user-basic-auth-47 514 | labels: 515 | konghq.com/credential: basic-auth 516 | type: Opaque 517 | --- 518 | apiVersion: v1 519 | data: 520 | password: dGVzdHVzZXJwYXNzd29yZDQ4 ## testuserpassword48 521 | username: dGVzdHVzZXI0OA== ## testuser48 522 | kind: Secret 523 | metadata: 524 | name: test-user-basic-auth-48 525 | labels: 526 | konghq.com/credential: basic-auth 527 | type: Opaque 528 | --- 529 | apiVersion: v1 530 | data: 531 | password: dGVzdHVzZXJwYXNzd29yZDQ5 ## testuserpassword49 532 | username: dGVzdHVzZXI0OQ== ## testuser49 533 | kind: Secret 534 | metadata: 535 | name: test-user-basic-auth-49 536 | labels: 537 | konghq.com/credential: basic-auth 538 | type: Opaque 539 | --- 540 | apiVersion: v1 541 | data: 542 | password: dGVzdHVzZXJwYXNzd29yZDUw ## testuserpassword50 543 | username: dGVzdHVzZXI1MA== ## testuser50 544 | kind: Secret 545 | metadata: 546 | name: test-user-basic-auth-50 547 | labels: 548 | konghq.com/credential: basic-auth 549 | type: Opaque 550 | --- 551 | apiVersion: v1 552 | data: 553 | password: dGVzdHVzZXJwYXNzd29yZDUx ## testuserpassword51 554 | username: dGVzdHVzZXI1MQ== ## testuser51 555 | kind: Secret 556 | metadata: 557 | name: test-user-basic-auth-51 558 | labels: 559 | konghq.com/credential: basic-auth 560 | type: Opaque 561 | --- 562 | apiVersion: v1 563 | data: 564 | password: dGVzdHVzZXJwYXNzd29yZDUy ## testuserpassword52 565 | username: dGVzdHVzZXI1Mg== ## testuser52 566 | kind: Secret 567 | metadata: 568 | name: test-user-basic-auth-52 569 | labels: 570 | konghq.com/credential: basic-auth 571 | type: Opaque 572 | --- 573 | apiVersion: v1 574 | data: 575 | password: dGVzdHVzZXJwYXNzd29yZDUz ## testuserpassword53 576 | username: dGVzdHVzZXI1Mw== ## testuser53 577 | kind: Secret 578 | metadata: 579 | name: test-user-basic-auth-53 580 | labels: 581 | konghq.com/credential: basic-auth 582 | type: Opaque 583 | --- 584 | apiVersion: v1 585 | data: 586 | password: dGVzdHVzZXJwYXNzd29yZDU0 ## testuserpassword54 587 | username: dGVzdHVzZXI1NA== ## testuser54 588 | kind: Secret 589 | metadata: 590 | name: test-user-basic-auth-54 591 | labels: 592 | konghq.com/credential: basic-auth 593 | type: Opaque 594 | --- 595 | apiVersion: v1 596 | data: 597 | password: dGVzdHVzZXJwYXNzd29yZDU1 ## testuserpassword55 598 | username: dGVzdHVzZXI1NQ== ## testuser55 599 | kind: Secret 600 | metadata: 601 | name: test-user-basic-auth-55 602 | labels: 603 | konghq.com/credential: basic-auth 604 | type: Opaque 605 | --- 606 | apiVersion: v1 607 | data: 608 | password: dGVzdHVzZXJwYXNzd29yZDU2 ## testuserpassword56 609 | username: dGVzdHVzZXI1Ng== ## testuser56 610 | kind: Secret 611 | metadata: 612 | name: test-user-basic-auth-56 613 | labels: 614 | konghq.com/credential: basic-auth 615 | type: Opaque 616 | --- 617 | apiVersion: v1 618 | data: 619 | password: dGVzdHVzZXJwYXNzd29yZDU3 ## testuserpassword57 620 | username: dGVzdHVzZXI1Nw== ## testuser57 621 | kind: Secret 622 | metadata: 623 | name: test-user-basic-auth-57 624 | labels: 625 | konghq.com/credential: basic-auth 626 | type: Opaque 627 | --- 628 | apiVersion: v1 629 | data: 630 | password: dGVzdHVzZXJwYXNzd29yZDU4 ## testuserpassword58 631 | username: dGVzdHVzZXI1OA== ## testuser58 632 | kind: Secret 633 | metadata: 634 | name: test-user-basic-auth-58 635 | labels: 636 | konghq.com/credential: basic-auth 637 | type: Opaque 638 | --- 639 | apiVersion: v1 640 | data: 641 | password: dGVzdHVzZXJwYXNzd29yZDU5 ## testuserpassword59 642 | username: dGVzdHVzZXI1OQ== ## testuser59 643 | kind: Secret 644 | metadata: 645 | name: test-user-basic-auth-59 646 | labels: 647 | konghq.com/credential: basic-auth 648 | type: Opaque 649 | --- 650 | apiVersion: v1 651 | data: 652 | password: dGVzdHVzZXJwYXNzd29yZDYw ## testuserpassword60 653 | username: dGVzdHVzZXI2MA== ## testuser60 654 | kind: Secret 655 | metadata: 656 | name: test-user-basic-auth-60 657 | labels: 658 | konghq.com/credential: basic-auth 659 | type: Opaque 660 | --- 661 | apiVersion: v1 662 | data: 663 | password: dGVzdHVzZXJwYXNzd29yZDYx ## testuserpassword61 664 | username: dGVzdHVzZXI2MQ== ## testuser61 665 | kind: Secret 666 | metadata: 667 | name: test-user-basic-auth-61 668 | labels: 669 | konghq.com/credential: basic-auth 670 | type: Opaque 671 | --- 672 | apiVersion: v1 673 | data: 674 | password: dGVzdHVzZXJwYXNzd29yZDYy ## testuserpassword62 675 | username: dGVzdHVzZXI2Mg== ## testuser62 676 | kind: Secret 677 | metadata: 678 | name: test-user-basic-auth-62 679 | labels: 680 | konghq.com/credential: basic-auth 681 | type: Opaque 682 | --- 683 | apiVersion: v1 684 | data: 685 | password: dGVzdHVzZXJwYXNzd29yZDYz ## testuserpassword63 686 | username: dGVzdHVzZXI2Mw== ## testuser63 687 | kind: Secret 688 | metadata: 689 | name: test-user-basic-auth-63 690 | labels: 691 | konghq.com/credential: basic-auth 692 | type: Opaque 693 | --- 694 | apiVersion: v1 695 | data: 696 | password: dGVzdHVzZXJwYXNzd29yZDY0 ## testuserpassword64 697 | username: dGVzdHVzZXI2NA== ## testuser64 698 | kind: Secret 699 | metadata: 700 | name: test-user-basic-auth-64 701 | labels: 702 | konghq.com/credential: basic-auth 703 | type: Opaque 704 | --- 705 | apiVersion: v1 706 | data: 707 | password: dGVzdHVzZXJwYXNzd29yZDY1 ## testuserpassword65 708 | username: dGVzdHVzZXI2NQ== ## testuser65 709 | kind: Secret 710 | metadata: 711 | name: test-user-basic-auth-65 712 | labels: 713 | konghq.com/credential: basic-auth 714 | type: Opaque 715 | --- 716 | apiVersion: v1 717 | data: 718 | password: dGVzdHVzZXJwYXNzd29yZDY2 ## testuserpassword66 719 | username: dGVzdHVzZXI2Ng== ## testuser66 720 | kind: Secret 721 | metadata: 722 | name: test-user-basic-auth-66 723 | labels: 724 | konghq.com/credential: basic-auth 725 | type: Opaque 726 | --- 727 | apiVersion: v1 728 | data: 729 | password: dGVzdHVzZXJwYXNzd29yZDY3 ## testuserpassword67 730 | username: dGVzdHVzZXI2Nw== ## testuser67 731 | kind: Secret 732 | metadata: 733 | name: test-user-basic-auth-67 734 | labels: 735 | konghq.com/credential: basic-auth 736 | type: Opaque 737 | --- 738 | apiVersion: v1 739 | data: 740 | password: dGVzdHVzZXJwYXNzd29yZDY4 ## testuserpassword68 741 | username: dGVzdHVzZXI2OA== ## testuser68 742 | kind: Secret 743 | metadata: 744 | name: test-user-basic-auth-68 745 | labels: 746 | konghq.com/credential: basic-auth 747 | type: Opaque 748 | --- 749 | apiVersion: v1 750 | data: 751 | password: dGVzdHVzZXJwYXNzd29yZDY5 ## testuserpassword69 752 | username: dGVzdHVzZXI2OQ== ## testuser69 753 | kind: Secret 754 | metadata: 755 | name: test-user-basic-auth-69 756 | labels: 757 | konghq.com/credential: basic-auth 758 | type: Opaque 759 | --- 760 | apiVersion: v1 761 | data: 762 | password: dGVzdHVzZXJwYXNzd29yZDcw ## testuserpassword70 763 | username: dGVzdHVzZXI3MA== ## testuser70 764 | kind: Secret 765 | metadata: 766 | name: test-user-basic-auth-70 767 | labels: 768 | konghq.com/credential: basic-auth 769 | type: Opaque 770 | --- 771 | apiVersion: v1 772 | data: 773 | password: dGVzdHVzZXJwYXNzd29yZDcx ## testuserpassword71 774 | username: dGVzdHVzZXI3MQ== ## testuser71 775 | kind: Secret 776 | metadata: 777 | name: test-user-basic-auth-71 778 | labels: 779 | konghq.com/credential: basic-auth 780 | type: Opaque 781 | --- 782 | apiVersion: v1 783 | data: 784 | password: dGVzdHVzZXJwYXNzd29yZDcy ## testuserpassword72 785 | username: dGVzdHVzZXI3Mg== ## testuser72 786 | kind: Secret 787 | metadata: 788 | name: test-user-basic-auth-72 789 | labels: 790 | konghq.com/credential: basic-auth 791 | type: Opaque 792 | --- 793 | apiVersion: v1 794 | data: 795 | password: dGVzdHVzZXJwYXNzd29yZDcz ## testuserpassword73 796 | username: dGVzdHVzZXI3Mw== ## testuser73 797 | kind: Secret 798 | metadata: 799 | name: test-user-basic-auth-73 800 | labels: 801 | konghq.com/credential: basic-auth 802 | type: Opaque 803 | --- 804 | apiVersion: v1 805 | data: 806 | password: dGVzdHVzZXJwYXNzd29yZDc0 ## testuserpassword74 807 | username: dGVzdHVzZXI3NA== ## testuser74 808 | kind: Secret 809 | metadata: 810 | name: test-user-basic-auth-74 811 | labels: 812 | konghq.com/credential: basic-auth 813 | type: Opaque 814 | --- 815 | apiVersion: v1 816 | data: 817 | password: dGVzdHVzZXJwYXNzd29yZDc1 ## testuserpassword75 818 | username: dGVzdHVzZXI3NQ== ## testuser75 819 | kind: Secret 820 | metadata: 821 | name: test-user-basic-auth-75 822 | labels: 823 | konghq.com/credential: basic-auth 824 | type: Opaque 825 | --- 826 | apiVersion: v1 827 | data: 828 | password: dGVzdHVzZXJwYXNzd29yZDc2 ## testuserpassword76 829 | username: dGVzdHVzZXI3Ng== ## testuser76 830 | kind: Secret 831 | metadata: 832 | name: test-user-basic-auth-76 833 | labels: 834 | konghq.com/credential: basic-auth 835 | type: Opaque 836 | --- 837 | apiVersion: v1 838 | data: 839 | password: dGVzdHVzZXJwYXNzd29yZDc3 ## testuserpassword77 840 | username: dGVzdHVzZXI3Nw== ## testuser77 841 | kind: Secret 842 | metadata: 843 | name: test-user-basic-auth-77 844 | labels: 845 | konghq.com/credential: basic-auth 846 | type: Opaque 847 | --- 848 | apiVersion: v1 849 | data: 850 | password: dGVzdHVzZXJwYXNzd29yZDc4 ## testuserpassword78 851 | username: dGVzdHVzZXI3OA== ## testuser78 852 | kind: Secret 853 | metadata: 854 | name: test-user-basic-auth-78 855 | labels: 856 | konghq.com/credential: basic-auth 857 | type: Opaque 858 | --- 859 | apiVersion: v1 860 | data: 861 | password: dGVzdHVzZXJwYXNzd29yZDc5 ## testuserpassword79 862 | username: dGVzdHVzZXI3OQ== ## testuser79 863 | kind: Secret 864 | metadata: 865 | name: test-user-basic-auth-79 866 | labels: 867 | konghq.com/credential: basic-auth 868 | type: Opaque 869 | --- 870 | apiVersion: v1 871 | data: 872 | password: dGVzdHVzZXJwYXNzd29yZDgw ## testuserpassword80 873 | username: dGVzdHVzZXI4MA== ## testuser80 874 | kind: Secret 875 | metadata: 876 | name: test-user-basic-auth-80 877 | labels: 878 | konghq.com/credential: basic-auth 879 | type: Opaque 880 | --- 881 | apiVersion: v1 882 | data: 883 | password: dGVzdHVzZXJwYXNzd29yZDgx ## testuserpassword81 884 | username: dGVzdHVzZXI4MQ== ## testuser81 885 | kind: Secret 886 | metadata: 887 | name: test-user-basic-auth-81 888 | labels: 889 | konghq.com/credential: basic-auth 890 | type: Opaque 891 | --- 892 | apiVersion: v1 893 | data: 894 | password: dGVzdHVzZXJwYXNzd29yZDgy ## testuserpassword82 895 | username: dGVzdHVzZXI4Mg== ## testuser82 896 | kind: Secret 897 | metadata: 898 | name: test-user-basic-auth-82 899 | labels: 900 | konghq.com/credential: basic-auth 901 | type: Opaque 902 | --- 903 | apiVersion: v1 904 | data: 905 | password: dGVzdHVzZXJwYXNzd29yZDgz ## testuserpassword83 906 | username: dGVzdHVzZXI4Mw== ## testuser83 907 | kind: Secret 908 | metadata: 909 | name: test-user-basic-auth-83 910 | labels: 911 | konghq.com/credential: basic-auth 912 | type: Opaque 913 | --- 914 | apiVersion: v1 915 | data: 916 | password: dGVzdHVzZXJwYXNzd29yZDg0 ## testuserpassword84 917 | username: dGVzdHVzZXI4NA== ## testuser84 918 | kind: Secret 919 | metadata: 920 | name: test-user-basic-auth-84 921 | labels: 922 | konghq.com/credential: basic-auth 923 | type: Opaque 924 | --- 925 | apiVersion: v1 926 | data: 927 | password: dGVzdHVzZXJwYXNzd29yZDg1 ## testuserpassword85 928 | username: dGVzdHVzZXI4NQ== ## testuser85 929 | kind: Secret 930 | metadata: 931 | name: test-user-basic-auth-85 932 | labels: 933 | konghq.com/credential: basic-auth 934 | type: Opaque 935 | --- 936 | apiVersion: v1 937 | data: 938 | password: dGVzdHVzZXJwYXNzd29yZDg2 ## testuserpassword86 939 | username: dGVzdHVzZXI4Ng== ## testuser86 940 | kind: Secret 941 | metadata: 942 | name: test-user-basic-auth-86 943 | labels: 944 | konghq.com/credential: basic-auth 945 | type: Opaque 946 | --- 947 | apiVersion: v1 948 | data: 949 | password: dGVzdHVzZXJwYXNzd29yZDg3 ## testuserpassword87 950 | username: dGVzdHVzZXI4Nw== ## testuser87 951 | kind: Secret 952 | metadata: 953 | name: test-user-basic-auth-87 954 | labels: 955 | konghq.com/credential: basic-auth 956 | type: Opaque 957 | --- 958 | apiVersion: v1 959 | data: 960 | password: dGVzdHVzZXJwYXNzd29yZDg4 ## testuserpassword88 961 | username: dGVzdHVzZXI4OA== ## testuser88 962 | kind: Secret 963 | metadata: 964 | name: test-user-basic-auth-88 965 | labels: 966 | konghq.com/credential: basic-auth 967 | type: Opaque 968 | --- 969 | apiVersion: v1 970 | data: 971 | password: dGVzdHVzZXJwYXNzd29yZDg5 ## testuserpassword89 972 | username: dGVzdHVzZXI4OQ== ## testuser89 973 | kind: Secret 974 | metadata: 975 | name: test-user-basic-auth-89 976 | labels: 977 | konghq.com/credential: basic-auth 978 | type: Opaque 979 | --- 980 | apiVersion: v1 981 | data: 982 | password: dGVzdHVzZXJwYXNzd29yZDkw ## testuserpassword90 983 | username: dGVzdHVzZXI5MA== ## testuser90 984 | kind: Secret 985 | metadata: 986 | name: test-user-basic-auth-90 987 | labels: 988 | konghq.com/credential: basic-auth 989 | type: Opaque 990 | --- 991 | apiVersion: v1 992 | data: 993 | password: dGVzdHVzZXJwYXNzd29yZDkx ## testuserpassword91 994 | username: dGVzdHVzZXI5MQ== ## testuser91 995 | kind: Secret 996 | metadata: 997 | name: test-user-basic-auth-91 998 | labels: 999 | konghq.com/credential: basic-auth 1000 | type: Opaque 1001 | --- 1002 | apiVersion: v1 1003 | data: 1004 | password: dGVzdHVzZXJwYXNzd29yZDky ## testuserpassword92 1005 | username: dGVzdHVzZXI5Mg== ## testuser92 1006 | kind: Secret 1007 | metadata: 1008 | name: test-user-basic-auth-92 1009 | labels: 1010 | konghq.com/credential: basic-auth 1011 | type: Opaque 1012 | --- 1013 | apiVersion: v1 1014 | data: 1015 | password: dGVzdHVzZXJwYXNzd29yZDkz ## testuserpassword93 1016 | username: dGVzdHVzZXI5Mw== ## testuser93 1017 | kind: Secret 1018 | metadata: 1019 | name: test-user-basic-auth-93 1020 | labels: 1021 | konghq.com/credential: basic-auth 1022 | type: Opaque 1023 | --- 1024 | apiVersion: v1 1025 | data: 1026 | password: dGVzdHVzZXJwYXNzd29yZDk0 ## testuserpassword94 1027 | username: dGVzdHVzZXI5NA== ## testuser94 1028 | kind: Secret 1029 | metadata: 1030 | name: test-user-basic-auth-94 1031 | labels: 1032 | konghq.com/credential: basic-auth 1033 | type: Opaque 1034 | --- 1035 | apiVersion: v1 1036 | data: 1037 | password: dGVzdHVzZXJwYXNzd29yZDk1 ## testuserpassword95 1038 | username: dGVzdHVzZXI5NQ== ## testuser95 1039 | kind: Secret 1040 | metadata: 1041 | name: test-user-basic-auth-95 1042 | labels: 1043 | konghq.com/credential: basic-auth 1044 | type: Opaque 1045 | --- 1046 | apiVersion: v1 1047 | data: 1048 | password: dGVzdHVzZXJwYXNzd29yZDk2 ## testuserpassword96 1049 | username: dGVzdHVzZXI5Ng== ## testuser96 1050 | kind: Secret 1051 | metadata: 1052 | name: test-user-basic-auth-96 1053 | labels: 1054 | konghq.com/credential: basic-auth 1055 | type: Opaque 1056 | --- 1057 | apiVersion: v1 1058 | data: 1059 | password: dGVzdHVzZXJwYXNzd29yZDk3 ## testuserpassword97 1060 | username: dGVzdHVzZXI5Nw== ## testuser97 1061 | kind: Secret 1062 | metadata: 1063 | name: test-user-basic-auth-97 1064 | labels: 1065 | konghq.com/credential: basic-auth 1066 | type: Opaque 1067 | --- 1068 | apiVersion: v1 1069 | data: 1070 | password: dGVzdHVzZXJwYXNzd29yZDk4 ## testuserpassword98 1071 | username: dGVzdHVzZXI5OA== ## testuser98 1072 | kind: Secret 1073 | metadata: 1074 | name: test-user-basic-auth-98 1075 | labels: 1076 | konghq.com/credential: basic-auth 1077 | type: Opaque 1078 | --- 1079 | apiVersion: v1 1080 | data: 1081 | password: dGVzdHVzZXJwYXNzd29yZDk5 ## testuserpassword99 1082 | username: dGVzdHVzZXI5OQ== ## testuser99 1083 | kind: Secret 1084 | metadata: 1085 | name: test-user-basic-auth-99 1086 | labels: 1087 | konghq.com/credential: basic-auth 1088 | type: Opaque 1089 | --- 1090 | apiVersion: v1 1091 | data: 1092 | password: dGVzdHVzZXJwYXNzd29yZDEwMA== ## testuserpassword100 1093 | username: dGVzdHVzZXIxMDA= ## testuser100 1094 | kind: Secret 1095 | metadata: 1096 | name: test-user-basic-auth-100 1097 | labels: 1098 | konghq.com/credential: basic-auth 1099 | type: Opaque 1100 | --- -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/basic-auth-testuser-secret-generator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Function to base64 encode a string 4 | base64_encode() { 5 | echo -n "$1" | base64 6 | } 7 | 8 | # Function to generate YAML content for a key 9 | generate_key_yaml() { 10 | local index=$1 11 | local user_key="testuser${index}" 12 | local encoded_user_key=$(base64_encode "$user_key") 13 | local password_key="testuserpassword${index}" 14 | local encoded_password_key=$(base64_encode "$password_key") 15 | 16 | cat < "basic-auth-testuser-secret-${index}.yaml" 38 | 39 | echo "YAML file 'basic-auth-testuser-secret-${index}.yaml' generated successfully." 40 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/basic-auth-testuser-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | data: 3 | password: dGVzdHVzZXJwYXNzd29yZDE= # testuserpassword1 4 | username: dGVzdHVzZXIx # testuser1 5 | kind: Secret 6 | metadata: 7 | name: test-user-basic-auth 8 | labels: 9 | konghq.com/credential: basic-auth 10 | type: Opaque -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/consumer-generator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if the number of consumers is provided as an argument, otherwise default to 100 4 | num_consumers=${1:-100} 5 | 6 | output_file="kong-consumers-$num_consumers.yaml" 7 | 8 | # Remove existing output file if it exists 9 | [ -e "$output_file" ] && rm "$output_file" 10 | 11 | # Function to generate KongConsumer YAML for a given index 12 | generate_kong_consumer() { 13 | local index=$1 14 | cat <> "$output_file" 33 | done 34 | 35 | echo "YAML content generated and saved to $output_file" 36 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/consumer-testuser.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongConsumer 3 | metadata: 4 | name: testuser1 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | username: testuser1 8 | custom_id: testuser1 9 | credentials: 10 | - test-user-basic-auth 11 | - test-user-key-auth 12 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/expanded-ingresses.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: networking.k8s.io/v1 2 | kind: Ingress 3 | metadata: 4 | annotations: 5 | konghq.com/strip-path: "true" 6 | name: upstream-1 7 | namespace: upstream 8 | spec: 9 | ingressClassName: kong 10 | rules: 11 | - http: 12 | paths: 13 | - backend: 14 | service: 15 | name: upstream 16 | port: 17 | number: 8000 18 | path: /1route 19 | pathType: ImplementationSpecific 20 | --- 21 | apiVersion: networking.k8s.io/v1 22 | kind: Ingress 23 | metadata: 24 | annotations: 25 | konghq.com/strip-path: "true" 26 | name: upstream-2 27 | namespace: upstream 28 | spec: 29 | ingressClassName: kong 30 | rules: 31 | - http: 32 | paths: 33 | - backend: 34 | service: 35 | name: upstream 36 | port: 37 | number: 8000 38 | path: /2route 39 | pathType: ImplementationSpecific 40 | --- 41 | apiVersion: networking.k8s.io/v1 42 | kind: Ingress 43 | metadata: 44 | annotations: 45 | konghq.com/strip-path: "true" 46 | name: upstream-3 47 | namespace: upstream 48 | spec: 49 | ingressClassName: kong 50 | rules: 51 | - http: 52 | paths: 53 | - backend: 54 | service: 55 | name: upstream 56 | port: 57 | number: 8000 58 | path: /3route 59 | pathType: ImplementationSpecific 60 | --- 61 | apiVersion: networking.k8s.io/v1 62 | kind: Ingress 63 | metadata: 64 | annotations: 65 | konghq.com/strip-path: "true" 66 | name: upstream-4 67 | namespace: upstream 68 | spec: 69 | ingressClassName: kong 70 | rules: 71 | - http: 72 | paths: 73 | - backend: 74 | service: 75 | name: upstream 76 | port: 77 | number: 8000 78 | path: /4route 79 | pathType: ImplementationSpecific 80 | --- 81 | apiVersion: networking.k8s.io/v1 82 | kind: Ingress 83 | metadata: 84 | annotations: 85 | konghq.com/strip-path: "true" 86 | name: upstream-5 87 | namespace: upstream 88 | spec: 89 | ingressClassName: kong 90 | rules: 91 | - http: 92 | paths: 93 | - backend: 94 | service: 95 | name: upstream 96 | port: 97 | number: 8000 98 | path: /5route 99 | pathType: ImplementationSpecific 100 | --- 101 | apiVersion: networking.k8s.io/v1 102 | kind: Ingress 103 | metadata: 104 | annotations: 105 | konghq.com/strip-path: "true" 106 | name: upstream-6 107 | namespace: upstream 108 | spec: 109 | ingressClassName: kong 110 | rules: 111 | - http: 112 | paths: 113 | - backend: 114 | service: 115 | name: upstream 116 | port: 117 | number: 8000 118 | path: /6route 119 | pathType: ImplementationSpecific 120 | --- 121 | apiVersion: networking.k8s.io/v1 122 | kind: Ingress 123 | metadata: 124 | annotations: 125 | konghq.com/strip-path: "true" 126 | name: upstream-7 127 | namespace: upstream 128 | spec: 129 | ingressClassName: kong 130 | rules: 131 | - http: 132 | paths: 133 | - backend: 134 | service: 135 | name: upstream 136 | port: 137 | number: 8000 138 | path: /7route 139 | pathType: ImplementationSpecific 140 | --- 141 | apiVersion: networking.k8s.io/v1 142 | kind: Ingress 143 | metadata: 144 | annotations: 145 | konghq.com/strip-path: "true" 146 | name: upstream-8 147 | namespace: upstream 148 | spec: 149 | ingressClassName: kong 150 | rules: 151 | - http: 152 | paths: 153 | - backend: 154 | service: 155 | name: upstream 156 | port: 157 | number: 8000 158 | path: /8route 159 | pathType: ImplementationSpecific 160 | --- 161 | apiVersion: networking.k8s.io/v1 162 | kind: Ingress 163 | metadata: 164 | annotations: 165 | konghq.com/strip-path: "true" 166 | name: upstream-9 167 | namespace: upstream 168 | spec: 169 | ingressClassName: kong 170 | rules: 171 | - http: 172 | paths: 173 | - backend: 174 | service: 175 | name: upstream 176 | port: 177 | number: 8000 178 | path: /9route 179 | pathType: ImplementationSpecific 180 | --- 181 | apiVersion: networking.k8s.io/v1 182 | kind: Ingress 183 | metadata: 184 | annotations: 185 | konghq.com/strip-path: "true" 186 | name: upstream-10 187 | namespace: upstream 188 | spec: 189 | ingressClassName: kong 190 | rules: 191 | - http: 192 | paths: 193 | - backend: 194 | service: 195 | name: upstream 196 | port: 197 | number: 8000 198 | path: /10route 199 | pathType: ImplementationSpecific 200 | --- 201 | apiVersion: networking.k8s.io/v1 202 | kind: Ingress 203 | metadata: 204 | annotations: 205 | konghq.com/strip-path: "true" 206 | name: upstream-11 207 | namespace: upstream 208 | spec: 209 | ingressClassName: kong 210 | rules: 211 | - http: 212 | paths: 213 | - backend: 214 | service: 215 | name: upstream 216 | port: 217 | number: 8000 218 | path: /11route 219 | pathType: ImplementationSpecific 220 | --- 221 | apiVersion: networking.k8s.io/v1 222 | kind: Ingress 223 | metadata: 224 | annotations: 225 | konghq.com/strip-path: "true" 226 | name: upstream-12 227 | namespace: upstream 228 | spec: 229 | ingressClassName: kong 230 | rules: 231 | - http: 232 | paths: 233 | - backend: 234 | service: 235 | name: upstream 236 | port: 237 | number: 8000 238 | path: /12route 239 | pathType: ImplementationSpecific 240 | --- 241 | apiVersion: networking.k8s.io/v1 242 | kind: Ingress 243 | metadata: 244 | annotations: 245 | konghq.com/strip-path: "true" 246 | name: upstream-13 247 | namespace: upstream 248 | spec: 249 | ingressClassName: kong 250 | rules: 251 | - http: 252 | paths: 253 | - backend: 254 | service: 255 | name: upstream 256 | port: 257 | number: 8000 258 | path: /13route 259 | pathType: ImplementationSpecific 260 | --- 261 | apiVersion: networking.k8s.io/v1 262 | kind: Ingress 263 | metadata: 264 | annotations: 265 | konghq.com/strip-path: "true" 266 | name: upstream-14 267 | namespace: upstream 268 | spec: 269 | ingressClassName: kong 270 | rules: 271 | - http: 272 | paths: 273 | - backend: 274 | service: 275 | name: upstream 276 | port: 277 | number: 8000 278 | path: /14route 279 | pathType: ImplementationSpecific 280 | --- 281 | apiVersion: networking.k8s.io/v1 282 | kind: Ingress 283 | metadata: 284 | annotations: 285 | konghq.com/strip-path: "true" 286 | name: upstream-15 287 | namespace: upstream 288 | spec: 289 | ingressClassName: kong 290 | rules: 291 | - http: 292 | paths: 293 | - backend: 294 | service: 295 | name: upstream 296 | port: 297 | number: 8000 298 | path: /15route 299 | pathType: ImplementationSpecific 300 | --- 301 | apiVersion: networking.k8s.io/v1 302 | kind: Ingress 303 | metadata: 304 | annotations: 305 | konghq.com/strip-path: "true" 306 | name: upstream-16 307 | namespace: upstream 308 | spec: 309 | ingressClassName: kong 310 | rules: 311 | - http: 312 | paths: 313 | - backend: 314 | service: 315 | name: upstream 316 | port: 317 | number: 8000 318 | path: /16route 319 | pathType: ImplementationSpecific 320 | --- 321 | apiVersion: networking.k8s.io/v1 322 | kind: Ingress 323 | metadata: 324 | annotations: 325 | konghq.com/strip-path: "true" 326 | name: upstream-17 327 | namespace: upstream 328 | spec: 329 | ingressClassName: kong 330 | rules: 331 | - http: 332 | paths: 333 | - backend: 334 | service: 335 | name: upstream 336 | port: 337 | number: 8000 338 | path: /17route 339 | pathType: ImplementationSpecific 340 | --- 341 | apiVersion: networking.k8s.io/v1 342 | kind: Ingress 343 | metadata: 344 | annotations: 345 | konghq.com/strip-path: "true" 346 | name: upstream-18 347 | namespace: upstream 348 | spec: 349 | ingressClassName: kong 350 | rules: 351 | - http: 352 | paths: 353 | - backend: 354 | service: 355 | name: upstream 356 | port: 357 | number: 8000 358 | path: /18route 359 | pathType: ImplementationSpecific 360 | --- 361 | apiVersion: networking.k8s.io/v1 362 | kind: Ingress 363 | metadata: 364 | annotations: 365 | konghq.com/strip-path: "true" 366 | name: upstream-19 367 | namespace: upstream 368 | spec: 369 | ingressClassName: kong 370 | rules: 371 | - http: 372 | paths: 373 | - backend: 374 | service: 375 | name: upstream 376 | port: 377 | number: 8000 378 | path: /19route 379 | pathType: ImplementationSpecific 380 | --- 381 | apiVersion: networking.k8s.io/v1 382 | kind: Ingress 383 | metadata: 384 | annotations: 385 | konghq.com/strip-path: "true" 386 | name: upstream-20 387 | namespace: upstream 388 | spec: 389 | ingressClassName: kong 390 | rules: 391 | - http: 392 | paths: 393 | - backend: 394 | service: 395 | name: upstream 396 | port: 397 | number: 8000 398 | path: /20route 399 | pathType: ImplementationSpecific 400 | --- 401 | apiVersion: networking.k8s.io/v1 402 | kind: Ingress 403 | metadata: 404 | annotations: 405 | konghq.com/strip-path: "true" 406 | name: upstream-21 407 | namespace: upstream 408 | spec: 409 | ingressClassName: kong 410 | rules: 411 | - http: 412 | paths: 413 | - backend: 414 | service: 415 | name: upstream 416 | port: 417 | number: 8000 418 | path: /21route 419 | pathType: ImplementationSpecific 420 | --- 421 | apiVersion: networking.k8s.io/v1 422 | kind: Ingress 423 | metadata: 424 | annotations: 425 | konghq.com/strip-path: "true" 426 | name: upstream-22 427 | namespace: upstream 428 | spec: 429 | ingressClassName: kong 430 | rules: 431 | - http: 432 | paths: 433 | - backend: 434 | service: 435 | name: upstream 436 | port: 437 | number: 8000 438 | path: /22route 439 | pathType: ImplementationSpecific 440 | --- 441 | apiVersion: networking.k8s.io/v1 442 | kind: Ingress 443 | metadata: 444 | annotations: 445 | konghq.com/strip-path: "true" 446 | name: upstream-23 447 | namespace: upstream 448 | spec: 449 | ingressClassName: kong 450 | rules: 451 | - http: 452 | paths: 453 | - backend: 454 | service: 455 | name: upstream 456 | port: 457 | number: 8000 458 | path: /23route 459 | pathType: ImplementationSpecific 460 | --- 461 | apiVersion: networking.k8s.io/v1 462 | kind: Ingress 463 | metadata: 464 | annotations: 465 | konghq.com/strip-path: "true" 466 | name: upstream-24 467 | namespace: upstream 468 | spec: 469 | ingressClassName: kong 470 | rules: 471 | - http: 472 | paths: 473 | - backend: 474 | service: 475 | name: upstream 476 | port: 477 | number: 8000 478 | path: /24route 479 | pathType: ImplementationSpecific 480 | --- 481 | apiVersion: networking.k8s.io/v1 482 | kind: Ingress 483 | metadata: 484 | annotations: 485 | konghq.com/strip-path: "true" 486 | name: upstream-25 487 | namespace: upstream 488 | spec: 489 | ingressClassName: kong 490 | rules: 491 | - http: 492 | paths: 493 | - backend: 494 | service: 495 | name: upstream 496 | port: 497 | number: 8000 498 | path: /25route 499 | pathType: ImplementationSpecific 500 | --- 501 | apiVersion: networking.k8s.io/v1 502 | kind: Ingress 503 | metadata: 504 | annotations: 505 | konghq.com/strip-path: "true" 506 | name: upstream-26 507 | namespace: upstream 508 | spec: 509 | ingressClassName: kong 510 | rules: 511 | - http: 512 | paths: 513 | - backend: 514 | service: 515 | name: upstream 516 | port: 517 | number: 8000 518 | path: /26route 519 | pathType: ImplementationSpecific 520 | --- 521 | apiVersion: networking.k8s.io/v1 522 | kind: Ingress 523 | metadata: 524 | annotations: 525 | konghq.com/strip-path: "true" 526 | name: upstream-27 527 | namespace: upstream 528 | spec: 529 | ingressClassName: kong 530 | rules: 531 | - http: 532 | paths: 533 | - backend: 534 | service: 535 | name: upstream 536 | port: 537 | number: 8000 538 | path: /27route 539 | pathType: ImplementationSpecific 540 | --- 541 | apiVersion: networking.k8s.io/v1 542 | kind: Ingress 543 | metadata: 544 | annotations: 545 | konghq.com/strip-path: "true" 546 | name: upstream-28 547 | namespace: upstream 548 | spec: 549 | ingressClassName: kong 550 | rules: 551 | - http: 552 | paths: 553 | - backend: 554 | service: 555 | name: upstream 556 | port: 557 | number: 8000 558 | path: /28route 559 | pathType: ImplementationSpecific 560 | --- 561 | apiVersion: networking.k8s.io/v1 562 | kind: Ingress 563 | metadata: 564 | annotations: 565 | konghq.com/strip-path: "true" 566 | name: upstream-29 567 | namespace: upstream 568 | spec: 569 | ingressClassName: kong 570 | rules: 571 | - http: 572 | paths: 573 | - backend: 574 | service: 575 | name: upstream 576 | port: 577 | number: 8000 578 | path: /29route 579 | pathType: ImplementationSpecific 580 | --- 581 | apiVersion: networking.k8s.io/v1 582 | kind: Ingress 583 | metadata: 584 | annotations: 585 | konghq.com/strip-path: "true" 586 | name: upstream-30 587 | namespace: upstream 588 | spec: 589 | ingressClassName: kong 590 | rules: 591 | - http: 592 | paths: 593 | - backend: 594 | service: 595 | name: upstream 596 | port: 597 | number: 8000 598 | path: /30route 599 | pathType: ImplementationSpecific 600 | --- 601 | apiVersion: networking.k8s.io/v1 602 | kind: Ingress 603 | metadata: 604 | annotations: 605 | konghq.com/strip-path: "true" 606 | name: upstream-31 607 | namespace: upstream 608 | spec: 609 | ingressClassName: kong 610 | rules: 611 | - http: 612 | paths: 613 | - backend: 614 | service: 615 | name: upstream 616 | port: 617 | number: 8000 618 | path: /31route 619 | pathType: ImplementationSpecific 620 | --- 621 | apiVersion: networking.k8s.io/v1 622 | kind: Ingress 623 | metadata: 624 | annotations: 625 | konghq.com/strip-path: "true" 626 | name: upstream-32 627 | namespace: upstream 628 | spec: 629 | ingressClassName: kong 630 | rules: 631 | - http: 632 | paths: 633 | - backend: 634 | service: 635 | name: upstream 636 | port: 637 | number: 8000 638 | path: /32route 639 | pathType: ImplementationSpecific 640 | --- 641 | apiVersion: networking.k8s.io/v1 642 | kind: Ingress 643 | metadata: 644 | annotations: 645 | konghq.com/strip-path: "true" 646 | name: upstream-33 647 | namespace: upstream 648 | spec: 649 | ingressClassName: kong 650 | rules: 651 | - http: 652 | paths: 653 | - backend: 654 | service: 655 | name: upstream 656 | port: 657 | number: 8000 658 | path: /33route 659 | pathType: ImplementationSpecific 660 | --- 661 | apiVersion: networking.k8s.io/v1 662 | kind: Ingress 663 | metadata: 664 | annotations: 665 | konghq.com/strip-path: "true" 666 | name: upstream-34 667 | namespace: upstream 668 | spec: 669 | ingressClassName: kong 670 | rules: 671 | - http: 672 | paths: 673 | - backend: 674 | service: 675 | name: upstream 676 | port: 677 | number: 8000 678 | path: /34route 679 | pathType: ImplementationSpecific 680 | --- 681 | apiVersion: networking.k8s.io/v1 682 | kind: Ingress 683 | metadata: 684 | annotations: 685 | konghq.com/strip-path: "true" 686 | name: upstream-35 687 | namespace: upstream 688 | spec: 689 | ingressClassName: kong 690 | rules: 691 | - http: 692 | paths: 693 | - backend: 694 | service: 695 | name: upstream 696 | port: 697 | number: 8000 698 | path: /35route 699 | pathType: ImplementationSpecific 700 | --- 701 | apiVersion: networking.k8s.io/v1 702 | kind: Ingress 703 | metadata: 704 | annotations: 705 | konghq.com/strip-path: "true" 706 | name: upstream-36 707 | namespace: upstream 708 | spec: 709 | ingressClassName: kong 710 | rules: 711 | - http: 712 | paths: 713 | - backend: 714 | service: 715 | name: upstream 716 | port: 717 | number: 8000 718 | path: /36route 719 | pathType: ImplementationSpecific 720 | --- 721 | apiVersion: networking.k8s.io/v1 722 | kind: Ingress 723 | metadata: 724 | annotations: 725 | konghq.com/strip-path: "true" 726 | name: upstream-37 727 | namespace: upstream 728 | spec: 729 | ingressClassName: kong 730 | rules: 731 | - http: 732 | paths: 733 | - backend: 734 | service: 735 | name: upstream 736 | port: 737 | number: 8000 738 | path: /37route 739 | pathType: ImplementationSpecific 740 | --- 741 | apiVersion: networking.k8s.io/v1 742 | kind: Ingress 743 | metadata: 744 | annotations: 745 | konghq.com/strip-path: "true" 746 | name: upstream-38 747 | namespace: upstream 748 | spec: 749 | ingressClassName: kong 750 | rules: 751 | - http: 752 | paths: 753 | - backend: 754 | service: 755 | name: upstream 756 | port: 757 | number: 8000 758 | path: /38route 759 | pathType: ImplementationSpecific 760 | --- 761 | apiVersion: networking.k8s.io/v1 762 | kind: Ingress 763 | metadata: 764 | annotations: 765 | konghq.com/strip-path: "true" 766 | name: upstream-39 767 | namespace: upstream 768 | spec: 769 | ingressClassName: kong 770 | rules: 771 | - http: 772 | paths: 773 | - backend: 774 | service: 775 | name: upstream 776 | port: 777 | number: 8000 778 | path: /39route 779 | pathType: ImplementationSpecific 780 | --- 781 | apiVersion: networking.k8s.io/v1 782 | kind: Ingress 783 | metadata: 784 | annotations: 785 | konghq.com/strip-path: "true" 786 | name: upstream-40 787 | namespace: upstream 788 | spec: 789 | ingressClassName: kong 790 | rules: 791 | - http: 792 | paths: 793 | - backend: 794 | service: 795 | name: upstream 796 | port: 797 | number: 8000 798 | path: /40route 799 | pathType: ImplementationSpecific 800 | --- 801 | apiVersion: networking.k8s.io/v1 802 | kind: Ingress 803 | metadata: 804 | annotations: 805 | konghq.com/strip-path: "true" 806 | name: upstream-41 807 | namespace: upstream 808 | spec: 809 | ingressClassName: kong 810 | rules: 811 | - http: 812 | paths: 813 | - backend: 814 | service: 815 | name: upstream 816 | port: 817 | number: 8000 818 | path: /41route 819 | pathType: ImplementationSpecific 820 | --- 821 | apiVersion: networking.k8s.io/v1 822 | kind: Ingress 823 | metadata: 824 | annotations: 825 | konghq.com/strip-path: "true" 826 | name: upstream-42 827 | namespace: upstream 828 | spec: 829 | ingressClassName: kong 830 | rules: 831 | - http: 832 | paths: 833 | - backend: 834 | service: 835 | name: upstream 836 | port: 837 | number: 8000 838 | path: /42route 839 | pathType: ImplementationSpecific 840 | --- 841 | apiVersion: networking.k8s.io/v1 842 | kind: Ingress 843 | metadata: 844 | annotations: 845 | konghq.com/strip-path: "true" 846 | name: upstream-43 847 | namespace: upstream 848 | spec: 849 | ingressClassName: kong 850 | rules: 851 | - http: 852 | paths: 853 | - backend: 854 | service: 855 | name: upstream 856 | port: 857 | number: 8000 858 | path: /43route 859 | pathType: ImplementationSpecific 860 | --- 861 | apiVersion: networking.k8s.io/v1 862 | kind: Ingress 863 | metadata: 864 | annotations: 865 | konghq.com/strip-path: "true" 866 | name: upstream-44 867 | namespace: upstream 868 | spec: 869 | ingressClassName: kong 870 | rules: 871 | - http: 872 | paths: 873 | - backend: 874 | service: 875 | name: upstream 876 | port: 877 | number: 8000 878 | path: /44route 879 | pathType: ImplementationSpecific 880 | --- 881 | apiVersion: networking.k8s.io/v1 882 | kind: Ingress 883 | metadata: 884 | annotations: 885 | konghq.com/strip-path: "true" 886 | name: upstream-45 887 | namespace: upstream 888 | spec: 889 | ingressClassName: kong 890 | rules: 891 | - http: 892 | paths: 893 | - backend: 894 | service: 895 | name: upstream 896 | port: 897 | number: 8000 898 | path: /45route 899 | pathType: ImplementationSpecific 900 | --- 901 | apiVersion: networking.k8s.io/v1 902 | kind: Ingress 903 | metadata: 904 | annotations: 905 | konghq.com/strip-path: "true" 906 | name: upstream-46 907 | namespace: upstream 908 | spec: 909 | ingressClassName: kong 910 | rules: 911 | - http: 912 | paths: 913 | - backend: 914 | service: 915 | name: upstream 916 | port: 917 | number: 8000 918 | path: /46route 919 | pathType: ImplementationSpecific 920 | --- 921 | apiVersion: networking.k8s.io/v1 922 | kind: Ingress 923 | metadata: 924 | annotations: 925 | konghq.com/strip-path: "true" 926 | name: upstream-47 927 | namespace: upstream 928 | spec: 929 | ingressClassName: kong 930 | rules: 931 | - http: 932 | paths: 933 | - backend: 934 | service: 935 | name: upstream 936 | port: 937 | number: 8000 938 | path: /47route 939 | pathType: ImplementationSpecific 940 | --- 941 | apiVersion: networking.k8s.io/v1 942 | kind: Ingress 943 | metadata: 944 | annotations: 945 | konghq.com/strip-path: "true" 946 | name: upstream-48 947 | namespace: upstream 948 | spec: 949 | ingressClassName: kong 950 | rules: 951 | - http: 952 | paths: 953 | - backend: 954 | service: 955 | name: upstream 956 | port: 957 | number: 8000 958 | path: /48route 959 | pathType: ImplementationSpecific 960 | --- 961 | apiVersion: networking.k8s.io/v1 962 | kind: Ingress 963 | metadata: 964 | annotations: 965 | konghq.com/strip-path: "true" 966 | name: upstream-49 967 | namespace: upstream 968 | spec: 969 | ingressClassName: kong 970 | rules: 971 | - http: 972 | paths: 973 | - backend: 974 | service: 975 | name: upstream 976 | port: 977 | number: 8000 978 | path: /49route 979 | pathType: ImplementationSpecific 980 | --- 981 | apiVersion: networking.k8s.io/v1 982 | kind: Ingress 983 | metadata: 984 | annotations: 985 | konghq.com/strip-path: "true" 986 | name: upstream-50 987 | namespace: upstream 988 | spec: 989 | ingressClassName: kong 990 | rules: 991 | - http: 992 | paths: 993 | - backend: 994 | service: 995 | name: upstream 996 | port: 997 | number: 8000 998 | path: /50route 999 | pathType: ImplementationSpecific 1000 | --- 1001 | apiVersion: networking.k8s.io/v1 1002 | kind: Ingress 1003 | metadata: 1004 | annotations: 1005 | konghq.com/strip-path: "true" 1006 | name: upstream-51 1007 | namespace: upstream 1008 | spec: 1009 | ingressClassName: kong 1010 | rules: 1011 | - http: 1012 | paths: 1013 | - backend: 1014 | service: 1015 | name: upstream 1016 | port: 1017 | number: 8000 1018 | path: /51route 1019 | pathType: ImplementationSpecific 1020 | --- 1021 | apiVersion: networking.k8s.io/v1 1022 | kind: Ingress 1023 | metadata: 1024 | annotations: 1025 | konghq.com/strip-path: "true" 1026 | name: upstream-52 1027 | namespace: upstream 1028 | spec: 1029 | ingressClassName: kong 1030 | rules: 1031 | - http: 1032 | paths: 1033 | - backend: 1034 | service: 1035 | name: upstream 1036 | port: 1037 | number: 8000 1038 | path: /52route 1039 | pathType: ImplementationSpecific 1040 | --- 1041 | apiVersion: networking.k8s.io/v1 1042 | kind: Ingress 1043 | metadata: 1044 | annotations: 1045 | konghq.com/strip-path: "true" 1046 | name: upstream-53 1047 | namespace: upstream 1048 | spec: 1049 | ingressClassName: kong 1050 | rules: 1051 | - http: 1052 | paths: 1053 | - backend: 1054 | service: 1055 | name: upstream 1056 | port: 1057 | number: 8000 1058 | path: /53route 1059 | pathType: ImplementationSpecific 1060 | --- 1061 | apiVersion: networking.k8s.io/v1 1062 | kind: Ingress 1063 | metadata: 1064 | annotations: 1065 | konghq.com/strip-path: "true" 1066 | name: upstream-54 1067 | namespace: upstream 1068 | spec: 1069 | ingressClassName: kong 1070 | rules: 1071 | - http: 1072 | paths: 1073 | - backend: 1074 | service: 1075 | name: upstream 1076 | port: 1077 | number: 8000 1078 | path: /54route 1079 | pathType: ImplementationSpecific 1080 | --- 1081 | apiVersion: networking.k8s.io/v1 1082 | kind: Ingress 1083 | metadata: 1084 | annotations: 1085 | konghq.com/strip-path: "true" 1086 | name: upstream-55 1087 | namespace: upstream 1088 | spec: 1089 | ingressClassName: kong 1090 | rules: 1091 | - http: 1092 | paths: 1093 | - backend: 1094 | service: 1095 | name: upstream 1096 | port: 1097 | number: 8000 1098 | path: /55route 1099 | pathType: ImplementationSpecific 1100 | --- 1101 | apiVersion: networking.k8s.io/v1 1102 | kind: Ingress 1103 | metadata: 1104 | annotations: 1105 | konghq.com/strip-path: "true" 1106 | name: upstream-56 1107 | namespace: upstream 1108 | spec: 1109 | ingressClassName: kong 1110 | rules: 1111 | - http: 1112 | paths: 1113 | - backend: 1114 | service: 1115 | name: upstream 1116 | port: 1117 | number: 8000 1118 | path: /56route 1119 | pathType: ImplementationSpecific 1120 | --- 1121 | apiVersion: networking.k8s.io/v1 1122 | kind: Ingress 1123 | metadata: 1124 | annotations: 1125 | konghq.com/strip-path: "true" 1126 | name: upstream-57 1127 | namespace: upstream 1128 | spec: 1129 | ingressClassName: kong 1130 | rules: 1131 | - http: 1132 | paths: 1133 | - backend: 1134 | service: 1135 | name: upstream 1136 | port: 1137 | number: 8000 1138 | path: /57route 1139 | pathType: ImplementationSpecific 1140 | --- 1141 | apiVersion: networking.k8s.io/v1 1142 | kind: Ingress 1143 | metadata: 1144 | annotations: 1145 | konghq.com/strip-path: "true" 1146 | name: upstream-58 1147 | namespace: upstream 1148 | spec: 1149 | ingressClassName: kong 1150 | rules: 1151 | - http: 1152 | paths: 1153 | - backend: 1154 | service: 1155 | name: upstream 1156 | port: 1157 | number: 8000 1158 | path: /58route 1159 | pathType: ImplementationSpecific 1160 | --- 1161 | apiVersion: networking.k8s.io/v1 1162 | kind: Ingress 1163 | metadata: 1164 | annotations: 1165 | konghq.com/strip-path: "true" 1166 | name: upstream-59 1167 | namespace: upstream 1168 | spec: 1169 | ingressClassName: kong 1170 | rules: 1171 | - http: 1172 | paths: 1173 | - backend: 1174 | service: 1175 | name: upstream 1176 | port: 1177 | number: 8000 1178 | path: /59route 1179 | pathType: ImplementationSpecific 1180 | --- 1181 | apiVersion: networking.k8s.io/v1 1182 | kind: Ingress 1183 | metadata: 1184 | annotations: 1185 | konghq.com/strip-path: "true" 1186 | name: upstream-60 1187 | namespace: upstream 1188 | spec: 1189 | ingressClassName: kong 1190 | rules: 1191 | - http: 1192 | paths: 1193 | - backend: 1194 | service: 1195 | name: upstream 1196 | port: 1197 | number: 8000 1198 | path: /60route 1199 | pathType: ImplementationSpecific 1200 | --- 1201 | apiVersion: networking.k8s.io/v1 1202 | kind: Ingress 1203 | metadata: 1204 | annotations: 1205 | konghq.com/strip-path: "true" 1206 | name: upstream-61 1207 | namespace: upstream 1208 | spec: 1209 | ingressClassName: kong 1210 | rules: 1211 | - http: 1212 | paths: 1213 | - backend: 1214 | service: 1215 | name: upstream 1216 | port: 1217 | number: 8000 1218 | path: /61route 1219 | pathType: ImplementationSpecific 1220 | --- 1221 | apiVersion: networking.k8s.io/v1 1222 | kind: Ingress 1223 | metadata: 1224 | annotations: 1225 | konghq.com/strip-path: "true" 1226 | name: upstream-62 1227 | namespace: upstream 1228 | spec: 1229 | ingressClassName: kong 1230 | rules: 1231 | - http: 1232 | paths: 1233 | - backend: 1234 | service: 1235 | name: upstream 1236 | port: 1237 | number: 8000 1238 | path: /62route 1239 | pathType: ImplementationSpecific 1240 | --- 1241 | apiVersion: networking.k8s.io/v1 1242 | kind: Ingress 1243 | metadata: 1244 | annotations: 1245 | konghq.com/strip-path: "true" 1246 | name: upstream-63 1247 | namespace: upstream 1248 | spec: 1249 | ingressClassName: kong 1250 | rules: 1251 | - http: 1252 | paths: 1253 | - backend: 1254 | service: 1255 | name: upstream 1256 | port: 1257 | number: 8000 1258 | path: /63route 1259 | pathType: ImplementationSpecific 1260 | --- 1261 | apiVersion: networking.k8s.io/v1 1262 | kind: Ingress 1263 | metadata: 1264 | annotations: 1265 | konghq.com/strip-path: "true" 1266 | name: upstream-64 1267 | namespace: upstream 1268 | spec: 1269 | ingressClassName: kong 1270 | rules: 1271 | - http: 1272 | paths: 1273 | - backend: 1274 | service: 1275 | name: upstream 1276 | port: 1277 | number: 8000 1278 | path: /64route 1279 | pathType: ImplementationSpecific 1280 | --- 1281 | apiVersion: networking.k8s.io/v1 1282 | kind: Ingress 1283 | metadata: 1284 | annotations: 1285 | konghq.com/strip-path: "true" 1286 | name: upstream-65 1287 | namespace: upstream 1288 | spec: 1289 | ingressClassName: kong 1290 | rules: 1291 | - http: 1292 | paths: 1293 | - backend: 1294 | service: 1295 | name: upstream 1296 | port: 1297 | number: 8000 1298 | path: /65route 1299 | pathType: ImplementationSpecific 1300 | --- 1301 | apiVersion: networking.k8s.io/v1 1302 | kind: Ingress 1303 | metadata: 1304 | annotations: 1305 | konghq.com/strip-path: "true" 1306 | name: upstream-66 1307 | namespace: upstream 1308 | spec: 1309 | ingressClassName: kong 1310 | rules: 1311 | - http: 1312 | paths: 1313 | - backend: 1314 | service: 1315 | name: upstream 1316 | port: 1317 | number: 8000 1318 | path: /66route 1319 | pathType: ImplementationSpecific 1320 | --- 1321 | apiVersion: networking.k8s.io/v1 1322 | kind: Ingress 1323 | metadata: 1324 | annotations: 1325 | konghq.com/strip-path: "true" 1326 | name: upstream-67 1327 | namespace: upstream 1328 | spec: 1329 | ingressClassName: kong 1330 | rules: 1331 | - http: 1332 | paths: 1333 | - backend: 1334 | service: 1335 | name: upstream 1336 | port: 1337 | number: 8000 1338 | path: /67route 1339 | pathType: ImplementationSpecific 1340 | --- 1341 | apiVersion: networking.k8s.io/v1 1342 | kind: Ingress 1343 | metadata: 1344 | annotations: 1345 | konghq.com/strip-path: "true" 1346 | name: upstream-68 1347 | namespace: upstream 1348 | spec: 1349 | ingressClassName: kong 1350 | rules: 1351 | - http: 1352 | paths: 1353 | - backend: 1354 | service: 1355 | name: upstream 1356 | port: 1357 | number: 8000 1358 | path: /68route 1359 | pathType: ImplementationSpecific 1360 | --- 1361 | apiVersion: networking.k8s.io/v1 1362 | kind: Ingress 1363 | metadata: 1364 | annotations: 1365 | konghq.com/strip-path: "true" 1366 | name: upstream-69 1367 | namespace: upstream 1368 | spec: 1369 | ingressClassName: kong 1370 | rules: 1371 | - http: 1372 | paths: 1373 | - backend: 1374 | service: 1375 | name: upstream 1376 | port: 1377 | number: 8000 1378 | path: /69route 1379 | pathType: ImplementationSpecific 1380 | --- 1381 | apiVersion: networking.k8s.io/v1 1382 | kind: Ingress 1383 | metadata: 1384 | annotations: 1385 | konghq.com/strip-path: "true" 1386 | name: upstream-70 1387 | namespace: upstream 1388 | spec: 1389 | ingressClassName: kong 1390 | rules: 1391 | - http: 1392 | paths: 1393 | - backend: 1394 | service: 1395 | name: upstream 1396 | port: 1397 | number: 8000 1398 | path: /70route 1399 | pathType: ImplementationSpecific 1400 | --- 1401 | apiVersion: networking.k8s.io/v1 1402 | kind: Ingress 1403 | metadata: 1404 | annotations: 1405 | konghq.com/strip-path: "true" 1406 | name: upstream-71 1407 | namespace: upstream 1408 | spec: 1409 | ingressClassName: kong 1410 | rules: 1411 | - http: 1412 | paths: 1413 | - backend: 1414 | service: 1415 | name: upstream 1416 | port: 1417 | number: 8000 1418 | path: /71route 1419 | pathType: ImplementationSpecific 1420 | --- 1421 | apiVersion: networking.k8s.io/v1 1422 | kind: Ingress 1423 | metadata: 1424 | annotations: 1425 | konghq.com/strip-path: "true" 1426 | name: upstream-72 1427 | namespace: upstream 1428 | spec: 1429 | ingressClassName: kong 1430 | rules: 1431 | - http: 1432 | paths: 1433 | - backend: 1434 | service: 1435 | name: upstream 1436 | port: 1437 | number: 8000 1438 | path: /72route 1439 | pathType: ImplementationSpecific 1440 | --- 1441 | apiVersion: networking.k8s.io/v1 1442 | kind: Ingress 1443 | metadata: 1444 | annotations: 1445 | konghq.com/strip-path: "true" 1446 | name: upstream-73 1447 | namespace: upstream 1448 | spec: 1449 | ingressClassName: kong 1450 | rules: 1451 | - http: 1452 | paths: 1453 | - backend: 1454 | service: 1455 | name: upstream 1456 | port: 1457 | number: 8000 1458 | path: /73route 1459 | pathType: ImplementationSpecific 1460 | --- 1461 | apiVersion: networking.k8s.io/v1 1462 | kind: Ingress 1463 | metadata: 1464 | annotations: 1465 | konghq.com/strip-path: "true" 1466 | name: upstream-74 1467 | namespace: upstream 1468 | spec: 1469 | ingressClassName: kong 1470 | rules: 1471 | - http: 1472 | paths: 1473 | - backend: 1474 | service: 1475 | name: upstream 1476 | port: 1477 | number: 8000 1478 | path: /74route 1479 | pathType: ImplementationSpecific 1480 | --- 1481 | apiVersion: networking.k8s.io/v1 1482 | kind: Ingress 1483 | metadata: 1484 | annotations: 1485 | konghq.com/strip-path: "true" 1486 | name: upstream-75 1487 | namespace: upstream 1488 | spec: 1489 | ingressClassName: kong 1490 | rules: 1491 | - http: 1492 | paths: 1493 | - backend: 1494 | service: 1495 | name: upstream 1496 | port: 1497 | number: 8000 1498 | path: /75route 1499 | pathType: ImplementationSpecific 1500 | --- 1501 | apiVersion: networking.k8s.io/v1 1502 | kind: Ingress 1503 | metadata: 1504 | annotations: 1505 | konghq.com/strip-path: "true" 1506 | name: upstream-76 1507 | namespace: upstream 1508 | spec: 1509 | ingressClassName: kong 1510 | rules: 1511 | - http: 1512 | paths: 1513 | - backend: 1514 | service: 1515 | name: upstream 1516 | port: 1517 | number: 8000 1518 | path: /76route 1519 | pathType: ImplementationSpecific 1520 | --- 1521 | apiVersion: networking.k8s.io/v1 1522 | kind: Ingress 1523 | metadata: 1524 | annotations: 1525 | konghq.com/strip-path: "true" 1526 | name: upstream-77 1527 | namespace: upstream 1528 | spec: 1529 | ingressClassName: kong 1530 | rules: 1531 | - http: 1532 | paths: 1533 | - backend: 1534 | service: 1535 | name: upstream 1536 | port: 1537 | number: 8000 1538 | path: /77route 1539 | pathType: ImplementationSpecific 1540 | --- 1541 | apiVersion: networking.k8s.io/v1 1542 | kind: Ingress 1543 | metadata: 1544 | annotations: 1545 | konghq.com/strip-path: "true" 1546 | name: upstream-78 1547 | namespace: upstream 1548 | spec: 1549 | ingressClassName: kong 1550 | rules: 1551 | - http: 1552 | paths: 1553 | - backend: 1554 | service: 1555 | name: upstream 1556 | port: 1557 | number: 8000 1558 | path: /78route 1559 | pathType: ImplementationSpecific 1560 | --- 1561 | apiVersion: networking.k8s.io/v1 1562 | kind: Ingress 1563 | metadata: 1564 | annotations: 1565 | konghq.com/strip-path: "true" 1566 | name: upstream-79 1567 | namespace: upstream 1568 | spec: 1569 | ingressClassName: kong 1570 | rules: 1571 | - http: 1572 | paths: 1573 | - backend: 1574 | service: 1575 | name: upstream 1576 | port: 1577 | number: 8000 1578 | path: /79route 1579 | pathType: ImplementationSpecific 1580 | --- 1581 | apiVersion: networking.k8s.io/v1 1582 | kind: Ingress 1583 | metadata: 1584 | annotations: 1585 | konghq.com/strip-path: "true" 1586 | name: upstream-80 1587 | namespace: upstream 1588 | spec: 1589 | ingressClassName: kong 1590 | rules: 1591 | - http: 1592 | paths: 1593 | - backend: 1594 | service: 1595 | name: upstream 1596 | port: 1597 | number: 8000 1598 | path: /80route 1599 | pathType: ImplementationSpecific 1600 | --- 1601 | apiVersion: networking.k8s.io/v1 1602 | kind: Ingress 1603 | metadata: 1604 | annotations: 1605 | konghq.com/strip-path: "true" 1606 | name: upstream-81 1607 | namespace: upstream 1608 | spec: 1609 | ingressClassName: kong 1610 | rules: 1611 | - http: 1612 | paths: 1613 | - backend: 1614 | service: 1615 | name: upstream 1616 | port: 1617 | number: 8000 1618 | path: /81route 1619 | pathType: ImplementationSpecific 1620 | --- 1621 | apiVersion: networking.k8s.io/v1 1622 | kind: Ingress 1623 | metadata: 1624 | annotations: 1625 | konghq.com/strip-path: "true" 1626 | name: upstream-82 1627 | namespace: upstream 1628 | spec: 1629 | ingressClassName: kong 1630 | rules: 1631 | - http: 1632 | paths: 1633 | - backend: 1634 | service: 1635 | name: upstream 1636 | port: 1637 | number: 8000 1638 | path: /82route 1639 | pathType: ImplementationSpecific 1640 | --- 1641 | apiVersion: networking.k8s.io/v1 1642 | kind: Ingress 1643 | metadata: 1644 | annotations: 1645 | konghq.com/strip-path: "true" 1646 | name: upstream-83 1647 | namespace: upstream 1648 | spec: 1649 | ingressClassName: kong 1650 | rules: 1651 | - http: 1652 | paths: 1653 | - backend: 1654 | service: 1655 | name: upstream 1656 | port: 1657 | number: 8000 1658 | path: /83route 1659 | pathType: ImplementationSpecific 1660 | --- 1661 | apiVersion: networking.k8s.io/v1 1662 | kind: Ingress 1663 | metadata: 1664 | annotations: 1665 | konghq.com/strip-path: "true" 1666 | name: upstream-84 1667 | namespace: upstream 1668 | spec: 1669 | ingressClassName: kong 1670 | rules: 1671 | - http: 1672 | paths: 1673 | - backend: 1674 | service: 1675 | name: upstream 1676 | port: 1677 | number: 8000 1678 | path: /84route 1679 | pathType: ImplementationSpecific 1680 | --- 1681 | apiVersion: networking.k8s.io/v1 1682 | kind: Ingress 1683 | metadata: 1684 | annotations: 1685 | konghq.com/strip-path: "true" 1686 | name: upstream-85 1687 | namespace: upstream 1688 | spec: 1689 | ingressClassName: kong 1690 | rules: 1691 | - http: 1692 | paths: 1693 | - backend: 1694 | service: 1695 | name: upstream 1696 | port: 1697 | number: 8000 1698 | path: /85route 1699 | pathType: ImplementationSpecific 1700 | --- 1701 | apiVersion: networking.k8s.io/v1 1702 | kind: Ingress 1703 | metadata: 1704 | annotations: 1705 | konghq.com/strip-path: "true" 1706 | name: upstream-86 1707 | namespace: upstream 1708 | spec: 1709 | ingressClassName: kong 1710 | rules: 1711 | - http: 1712 | paths: 1713 | - backend: 1714 | service: 1715 | name: upstream 1716 | port: 1717 | number: 8000 1718 | path: /86route 1719 | pathType: ImplementationSpecific 1720 | --- 1721 | apiVersion: networking.k8s.io/v1 1722 | kind: Ingress 1723 | metadata: 1724 | annotations: 1725 | konghq.com/strip-path: "true" 1726 | name: upstream-87 1727 | namespace: upstream 1728 | spec: 1729 | ingressClassName: kong 1730 | rules: 1731 | - http: 1732 | paths: 1733 | - backend: 1734 | service: 1735 | name: upstream 1736 | port: 1737 | number: 8000 1738 | path: /87route 1739 | pathType: ImplementationSpecific 1740 | --- 1741 | apiVersion: networking.k8s.io/v1 1742 | kind: Ingress 1743 | metadata: 1744 | annotations: 1745 | konghq.com/strip-path: "true" 1746 | name: upstream-88 1747 | namespace: upstream 1748 | spec: 1749 | ingressClassName: kong 1750 | rules: 1751 | - http: 1752 | paths: 1753 | - backend: 1754 | service: 1755 | name: upstream 1756 | port: 1757 | number: 8000 1758 | path: /88route 1759 | pathType: ImplementationSpecific 1760 | --- 1761 | apiVersion: networking.k8s.io/v1 1762 | kind: Ingress 1763 | metadata: 1764 | annotations: 1765 | konghq.com/strip-path: "true" 1766 | name: upstream-89 1767 | namespace: upstream 1768 | spec: 1769 | ingressClassName: kong 1770 | rules: 1771 | - http: 1772 | paths: 1773 | - backend: 1774 | service: 1775 | name: upstream 1776 | port: 1777 | number: 8000 1778 | path: /89route 1779 | pathType: ImplementationSpecific 1780 | --- 1781 | apiVersion: networking.k8s.io/v1 1782 | kind: Ingress 1783 | metadata: 1784 | annotations: 1785 | konghq.com/strip-path: "true" 1786 | name: upstream-90 1787 | namespace: upstream 1788 | spec: 1789 | ingressClassName: kong 1790 | rules: 1791 | - http: 1792 | paths: 1793 | - backend: 1794 | service: 1795 | name: upstream 1796 | port: 1797 | number: 8000 1798 | path: /90route 1799 | pathType: ImplementationSpecific 1800 | --- 1801 | apiVersion: networking.k8s.io/v1 1802 | kind: Ingress 1803 | metadata: 1804 | annotations: 1805 | konghq.com/strip-path: "true" 1806 | name: upstream-91 1807 | namespace: upstream 1808 | spec: 1809 | ingressClassName: kong 1810 | rules: 1811 | - http: 1812 | paths: 1813 | - backend: 1814 | service: 1815 | name: upstream 1816 | port: 1817 | number: 8000 1818 | path: /91route 1819 | pathType: ImplementationSpecific 1820 | --- 1821 | apiVersion: networking.k8s.io/v1 1822 | kind: Ingress 1823 | metadata: 1824 | annotations: 1825 | konghq.com/strip-path: "true" 1826 | name: upstream-92 1827 | namespace: upstream 1828 | spec: 1829 | ingressClassName: kong 1830 | rules: 1831 | - http: 1832 | paths: 1833 | - backend: 1834 | service: 1835 | name: upstream 1836 | port: 1837 | number: 8000 1838 | path: /92route 1839 | pathType: ImplementationSpecific 1840 | --- 1841 | apiVersion: networking.k8s.io/v1 1842 | kind: Ingress 1843 | metadata: 1844 | annotations: 1845 | konghq.com/strip-path: "true" 1846 | name: upstream-93 1847 | namespace: upstream 1848 | spec: 1849 | ingressClassName: kong 1850 | rules: 1851 | - http: 1852 | paths: 1853 | - backend: 1854 | service: 1855 | name: upstream 1856 | port: 1857 | number: 8000 1858 | path: /93route 1859 | pathType: ImplementationSpecific 1860 | --- 1861 | apiVersion: networking.k8s.io/v1 1862 | kind: Ingress 1863 | metadata: 1864 | annotations: 1865 | konghq.com/strip-path: "true" 1866 | name: upstream-94 1867 | namespace: upstream 1868 | spec: 1869 | ingressClassName: kong 1870 | rules: 1871 | - http: 1872 | paths: 1873 | - backend: 1874 | service: 1875 | name: upstream 1876 | port: 1877 | number: 8000 1878 | path: /94route 1879 | pathType: ImplementationSpecific 1880 | --- 1881 | apiVersion: networking.k8s.io/v1 1882 | kind: Ingress 1883 | metadata: 1884 | annotations: 1885 | konghq.com/strip-path: "true" 1886 | name: upstream-95 1887 | namespace: upstream 1888 | spec: 1889 | ingressClassName: kong 1890 | rules: 1891 | - http: 1892 | paths: 1893 | - backend: 1894 | service: 1895 | name: upstream 1896 | port: 1897 | number: 8000 1898 | path: /95route 1899 | pathType: ImplementationSpecific 1900 | --- 1901 | apiVersion: networking.k8s.io/v1 1902 | kind: Ingress 1903 | metadata: 1904 | annotations: 1905 | konghq.com/strip-path: "true" 1906 | name: upstream-96 1907 | namespace: upstream 1908 | spec: 1909 | ingressClassName: kong 1910 | rules: 1911 | - http: 1912 | paths: 1913 | - backend: 1914 | service: 1915 | name: upstream 1916 | port: 1917 | number: 8000 1918 | path: /96route 1919 | pathType: ImplementationSpecific 1920 | --- 1921 | apiVersion: networking.k8s.io/v1 1922 | kind: Ingress 1923 | metadata: 1924 | annotations: 1925 | konghq.com/strip-path: "true" 1926 | name: upstream-97 1927 | namespace: upstream 1928 | spec: 1929 | ingressClassName: kong 1930 | rules: 1931 | - http: 1932 | paths: 1933 | - backend: 1934 | service: 1935 | name: upstream 1936 | port: 1937 | number: 8000 1938 | path: /97route 1939 | pathType: ImplementationSpecific 1940 | --- 1941 | apiVersion: networking.k8s.io/v1 1942 | kind: Ingress 1943 | metadata: 1944 | annotations: 1945 | konghq.com/strip-path: "true" 1946 | name: upstream-98 1947 | namespace: upstream 1948 | spec: 1949 | ingressClassName: kong 1950 | rules: 1951 | - http: 1952 | paths: 1953 | - backend: 1954 | service: 1955 | name: upstream 1956 | port: 1957 | number: 8000 1958 | path: /98route 1959 | pathType: ImplementationSpecific 1960 | --- 1961 | apiVersion: networking.k8s.io/v1 1962 | kind: Ingress 1963 | metadata: 1964 | annotations: 1965 | konghq.com/strip-path: "true" 1966 | name: upstream-99 1967 | namespace: upstream 1968 | spec: 1969 | ingressClassName: kong 1970 | rules: 1971 | - http: 1972 | paths: 1973 | - backend: 1974 | service: 1975 | name: upstream 1976 | port: 1977 | number: 8000 1978 | path: /99route 1979 | pathType: ImplementationSpecific 1980 | --- 1981 | apiVersion: networking.k8s.io/v1 1982 | kind: Ingress 1983 | metadata: 1984 | annotations: 1985 | konghq.com/strip-path: "true" 1986 | name: upstream-100 1987 | namespace: upstream 1988 | spec: 1989 | ingressClassName: kong 1990 | rules: 1991 | - http: 1992 | paths: 1993 | - backend: 1994 | service: 1995 | name: upstream 1996 | port: 1997 | number: 8000 1998 | path: /100route 1999 | pathType: ImplementationSpecific 2000 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/key-auth-plugin.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongClusterPlugin 3 | metadata: 4 | name: key-auth-global 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | labels: 8 | global: "true" 9 | plugin: key-auth 10 | config: 11 | key_names: 12 | - apikey -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/key-auth-testuser-secret-100.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | data: 4 | key: dGVzdHVzZXJwYXNzd29yZDE= ## testuserpassword1 5 | kind: Secret 6 | metadata: 7 | name: test-user-key-auth-1 8 | labels: 9 | konghq.com/credential: key-auth 10 | type: Opaque 11 | --- 12 | apiVersion: v1 13 | data: 14 | key: dGVzdHVzZXJwYXNzd29yZDI= ## testuserpassword2 15 | kind: Secret 16 | metadata: 17 | name: test-user-key-auth-2 18 | labels: 19 | konghq.com/credential: key-auth 20 | type: Opaque 21 | --- 22 | apiVersion: v1 23 | data: 24 | key: dGVzdHVzZXJwYXNzd29yZDM= ## testuserpassword3 25 | kind: Secret 26 | metadata: 27 | name: test-user-key-auth-3 28 | labels: 29 | konghq.com/credential: key-auth 30 | type: Opaque 31 | --- 32 | apiVersion: v1 33 | data: 34 | key: dGVzdHVzZXJwYXNzd29yZDQ= ## testuserpassword4 35 | kind: Secret 36 | metadata: 37 | name: test-user-key-auth-4 38 | labels: 39 | konghq.com/credential: key-auth 40 | type: Opaque 41 | --- 42 | apiVersion: v1 43 | data: 44 | key: dGVzdHVzZXJwYXNzd29yZDU= ## testuserpassword5 45 | kind: Secret 46 | metadata: 47 | name: test-user-key-auth-5 48 | labels: 49 | konghq.com/credential: key-auth 50 | type: Opaque 51 | --- 52 | apiVersion: v1 53 | data: 54 | key: dGVzdHVzZXJwYXNzd29yZDY= ## testuserpassword6 55 | kind: Secret 56 | metadata: 57 | name: test-user-key-auth-6 58 | labels: 59 | konghq.com/credential: key-auth 60 | type: Opaque 61 | --- 62 | apiVersion: v1 63 | data: 64 | key: dGVzdHVzZXJwYXNzd29yZDc= ## testuserpassword7 65 | kind: Secret 66 | metadata: 67 | name: test-user-key-auth-7 68 | labels: 69 | konghq.com/credential: key-auth 70 | type: Opaque 71 | --- 72 | apiVersion: v1 73 | data: 74 | key: dGVzdHVzZXJwYXNzd29yZDg= ## testuserpassword8 75 | kind: Secret 76 | metadata: 77 | name: test-user-key-auth-8 78 | labels: 79 | konghq.com/credential: key-auth 80 | type: Opaque 81 | --- 82 | apiVersion: v1 83 | data: 84 | key: dGVzdHVzZXJwYXNzd29yZDk= ## testuserpassword9 85 | kind: Secret 86 | metadata: 87 | name: test-user-key-auth-9 88 | labels: 89 | konghq.com/credential: key-auth 90 | type: Opaque 91 | --- 92 | apiVersion: v1 93 | data: 94 | key: dGVzdHVzZXJwYXNzd29yZDEw ## testuserpassword10 95 | kind: Secret 96 | metadata: 97 | name: test-user-key-auth-10 98 | labels: 99 | konghq.com/credential: key-auth 100 | type: Opaque 101 | --- 102 | apiVersion: v1 103 | data: 104 | key: dGVzdHVzZXJwYXNzd29yZDEx ## testuserpassword11 105 | kind: Secret 106 | metadata: 107 | name: test-user-key-auth-11 108 | labels: 109 | konghq.com/credential: key-auth 110 | type: Opaque 111 | --- 112 | apiVersion: v1 113 | data: 114 | key: dGVzdHVzZXJwYXNzd29yZDEy ## testuserpassword12 115 | kind: Secret 116 | metadata: 117 | name: test-user-key-auth-12 118 | labels: 119 | konghq.com/credential: key-auth 120 | type: Opaque 121 | --- 122 | apiVersion: v1 123 | data: 124 | key: dGVzdHVzZXJwYXNzd29yZDEz ## testuserpassword13 125 | kind: Secret 126 | metadata: 127 | name: test-user-key-auth-13 128 | labels: 129 | konghq.com/credential: key-auth 130 | type: Opaque 131 | --- 132 | apiVersion: v1 133 | data: 134 | key: dGVzdHVzZXJwYXNzd29yZDE0 ## testuserpassword14 135 | kind: Secret 136 | metadata: 137 | name: test-user-key-auth-14 138 | labels: 139 | konghq.com/credential: key-auth 140 | type: Opaque 141 | --- 142 | apiVersion: v1 143 | data: 144 | key: dGVzdHVzZXJwYXNzd29yZDE1 ## testuserpassword15 145 | kind: Secret 146 | metadata: 147 | name: test-user-key-auth-15 148 | labels: 149 | konghq.com/credential: key-auth 150 | type: Opaque 151 | --- 152 | apiVersion: v1 153 | data: 154 | key: dGVzdHVzZXJwYXNzd29yZDE2 ## testuserpassword16 155 | kind: Secret 156 | metadata: 157 | name: test-user-key-auth-16 158 | labels: 159 | konghq.com/credential: key-auth 160 | type: Opaque 161 | --- 162 | apiVersion: v1 163 | data: 164 | key: dGVzdHVzZXJwYXNzd29yZDE3 ## testuserpassword17 165 | kind: Secret 166 | metadata: 167 | name: test-user-key-auth-17 168 | labels: 169 | konghq.com/credential: key-auth 170 | type: Opaque 171 | --- 172 | apiVersion: v1 173 | data: 174 | key: dGVzdHVzZXJwYXNzd29yZDE4 ## testuserpassword18 175 | kind: Secret 176 | metadata: 177 | name: test-user-key-auth-18 178 | labels: 179 | konghq.com/credential: key-auth 180 | type: Opaque 181 | --- 182 | apiVersion: v1 183 | data: 184 | key: dGVzdHVzZXJwYXNzd29yZDE5 ## testuserpassword19 185 | kind: Secret 186 | metadata: 187 | name: test-user-key-auth-19 188 | labels: 189 | konghq.com/credential: key-auth 190 | type: Opaque 191 | --- 192 | apiVersion: v1 193 | data: 194 | key: dGVzdHVzZXJwYXNzd29yZDIw ## testuserpassword20 195 | kind: Secret 196 | metadata: 197 | name: test-user-key-auth-20 198 | labels: 199 | konghq.com/credential: key-auth 200 | type: Opaque 201 | --- 202 | apiVersion: v1 203 | data: 204 | key: dGVzdHVzZXJwYXNzd29yZDIx ## testuserpassword21 205 | kind: Secret 206 | metadata: 207 | name: test-user-key-auth-21 208 | labels: 209 | konghq.com/credential: key-auth 210 | type: Opaque 211 | --- 212 | apiVersion: v1 213 | data: 214 | key: dGVzdHVzZXJwYXNzd29yZDIy ## testuserpassword22 215 | kind: Secret 216 | metadata: 217 | name: test-user-key-auth-22 218 | labels: 219 | konghq.com/credential: key-auth 220 | type: Opaque 221 | --- 222 | apiVersion: v1 223 | data: 224 | key: dGVzdHVzZXJwYXNzd29yZDIz ## testuserpassword23 225 | kind: Secret 226 | metadata: 227 | name: test-user-key-auth-23 228 | labels: 229 | konghq.com/credential: key-auth 230 | type: Opaque 231 | --- 232 | apiVersion: v1 233 | data: 234 | key: dGVzdHVzZXJwYXNzd29yZDI0 ## testuserpassword24 235 | kind: Secret 236 | metadata: 237 | name: test-user-key-auth-24 238 | labels: 239 | konghq.com/credential: key-auth 240 | type: Opaque 241 | --- 242 | apiVersion: v1 243 | data: 244 | key: dGVzdHVzZXJwYXNzd29yZDI1 ## testuserpassword25 245 | kind: Secret 246 | metadata: 247 | name: test-user-key-auth-25 248 | labels: 249 | konghq.com/credential: key-auth 250 | type: Opaque 251 | --- 252 | apiVersion: v1 253 | data: 254 | key: dGVzdHVzZXJwYXNzd29yZDI2 ## testuserpassword26 255 | kind: Secret 256 | metadata: 257 | name: test-user-key-auth-26 258 | labels: 259 | konghq.com/credential: key-auth 260 | type: Opaque 261 | --- 262 | apiVersion: v1 263 | data: 264 | key: dGVzdHVzZXJwYXNzd29yZDI3 ## testuserpassword27 265 | kind: Secret 266 | metadata: 267 | name: test-user-key-auth-27 268 | labels: 269 | konghq.com/credential: key-auth 270 | type: Opaque 271 | --- 272 | apiVersion: v1 273 | data: 274 | key: dGVzdHVzZXJwYXNzd29yZDI4 ## testuserpassword28 275 | kind: Secret 276 | metadata: 277 | name: test-user-key-auth-28 278 | labels: 279 | konghq.com/credential: key-auth 280 | type: Opaque 281 | --- 282 | apiVersion: v1 283 | data: 284 | key: dGVzdHVzZXJwYXNzd29yZDI5 ## testuserpassword29 285 | kind: Secret 286 | metadata: 287 | name: test-user-key-auth-29 288 | labels: 289 | konghq.com/credential: key-auth 290 | type: Opaque 291 | --- 292 | apiVersion: v1 293 | data: 294 | key: dGVzdHVzZXJwYXNzd29yZDMw ## testuserpassword30 295 | kind: Secret 296 | metadata: 297 | name: test-user-key-auth-30 298 | labels: 299 | konghq.com/credential: key-auth 300 | type: Opaque 301 | --- 302 | apiVersion: v1 303 | data: 304 | key: dGVzdHVzZXJwYXNzd29yZDMx ## testuserpassword31 305 | kind: Secret 306 | metadata: 307 | name: test-user-key-auth-31 308 | labels: 309 | konghq.com/credential: key-auth 310 | type: Opaque 311 | --- 312 | apiVersion: v1 313 | data: 314 | key: dGVzdHVzZXJwYXNzd29yZDMy ## testuserpassword32 315 | kind: Secret 316 | metadata: 317 | name: test-user-key-auth-32 318 | labels: 319 | konghq.com/credential: key-auth 320 | type: Opaque 321 | --- 322 | apiVersion: v1 323 | data: 324 | key: dGVzdHVzZXJwYXNzd29yZDMz ## testuserpassword33 325 | kind: Secret 326 | metadata: 327 | name: test-user-key-auth-33 328 | labels: 329 | konghq.com/credential: key-auth 330 | type: Opaque 331 | --- 332 | apiVersion: v1 333 | data: 334 | key: dGVzdHVzZXJwYXNzd29yZDM0 ## testuserpassword34 335 | kind: Secret 336 | metadata: 337 | name: test-user-key-auth-34 338 | labels: 339 | konghq.com/credential: key-auth 340 | type: Opaque 341 | --- 342 | apiVersion: v1 343 | data: 344 | key: dGVzdHVzZXJwYXNzd29yZDM1 ## testuserpassword35 345 | kind: Secret 346 | metadata: 347 | name: test-user-key-auth-35 348 | labels: 349 | konghq.com/credential: key-auth 350 | type: Opaque 351 | --- 352 | apiVersion: v1 353 | data: 354 | key: dGVzdHVzZXJwYXNzd29yZDM2 ## testuserpassword36 355 | kind: Secret 356 | metadata: 357 | name: test-user-key-auth-36 358 | labels: 359 | konghq.com/credential: key-auth 360 | type: Opaque 361 | --- 362 | apiVersion: v1 363 | data: 364 | key: dGVzdHVzZXJwYXNzd29yZDM3 ## testuserpassword37 365 | kind: Secret 366 | metadata: 367 | name: test-user-key-auth-37 368 | labels: 369 | konghq.com/credential: key-auth 370 | type: Opaque 371 | --- 372 | apiVersion: v1 373 | data: 374 | key: dGVzdHVzZXJwYXNzd29yZDM4 ## testuserpassword38 375 | kind: Secret 376 | metadata: 377 | name: test-user-key-auth-38 378 | labels: 379 | konghq.com/credential: key-auth 380 | type: Opaque 381 | --- 382 | apiVersion: v1 383 | data: 384 | key: dGVzdHVzZXJwYXNzd29yZDM5 ## testuserpassword39 385 | kind: Secret 386 | metadata: 387 | name: test-user-key-auth-39 388 | labels: 389 | konghq.com/credential: key-auth 390 | type: Opaque 391 | --- 392 | apiVersion: v1 393 | data: 394 | key: dGVzdHVzZXJwYXNzd29yZDQw ## testuserpassword40 395 | kind: Secret 396 | metadata: 397 | name: test-user-key-auth-40 398 | labels: 399 | konghq.com/credential: key-auth 400 | type: Opaque 401 | --- 402 | apiVersion: v1 403 | data: 404 | key: dGVzdHVzZXJwYXNzd29yZDQx ## testuserpassword41 405 | kind: Secret 406 | metadata: 407 | name: test-user-key-auth-41 408 | labels: 409 | konghq.com/credential: key-auth 410 | type: Opaque 411 | --- 412 | apiVersion: v1 413 | data: 414 | key: dGVzdHVzZXJwYXNzd29yZDQy ## testuserpassword42 415 | kind: Secret 416 | metadata: 417 | name: test-user-key-auth-42 418 | labels: 419 | konghq.com/credential: key-auth 420 | type: Opaque 421 | --- 422 | apiVersion: v1 423 | data: 424 | key: dGVzdHVzZXJwYXNzd29yZDQz ## testuserpassword43 425 | kind: Secret 426 | metadata: 427 | name: test-user-key-auth-43 428 | labels: 429 | konghq.com/credential: key-auth 430 | type: Opaque 431 | --- 432 | apiVersion: v1 433 | data: 434 | key: dGVzdHVzZXJwYXNzd29yZDQ0 ## testuserpassword44 435 | kind: Secret 436 | metadata: 437 | name: test-user-key-auth-44 438 | labels: 439 | konghq.com/credential: key-auth 440 | type: Opaque 441 | --- 442 | apiVersion: v1 443 | data: 444 | key: dGVzdHVzZXJwYXNzd29yZDQ1 ## testuserpassword45 445 | kind: Secret 446 | metadata: 447 | name: test-user-key-auth-45 448 | labels: 449 | konghq.com/credential: key-auth 450 | type: Opaque 451 | --- 452 | apiVersion: v1 453 | data: 454 | key: dGVzdHVzZXJwYXNzd29yZDQ2 ## testuserpassword46 455 | kind: Secret 456 | metadata: 457 | name: test-user-key-auth-46 458 | labels: 459 | konghq.com/credential: key-auth 460 | type: Opaque 461 | --- 462 | apiVersion: v1 463 | data: 464 | key: dGVzdHVzZXJwYXNzd29yZDQ3 ## testuserpassword47 465 | kind: Secret 466 | metadata: 467 | name: test-user-key-auth-47 468 | labels: 469 | konghq.com/credential: key-auth 470 | type: Opaque 471 | --- 472 | apiVersion: v1 473 | data: 474 | key: dGVzdHVzZXJwYXNzd29yZDQ4 ## testuserpassword48 475 | kind: Secret 476 | metadata: 477 | name: test-user-key-auth-48 478 | labels: 479 | konghq.com/credential: key-auth 480 | type: Opaque 481 | --- 482 | apiVersion: v1 483 | data: 484 | key: dGVzdHVzZXJwYXNzd29yZDQ5 ## testuserpassword49 485 | kind: Secret 486 | metadata: 487 | name: test-user-key-auth-49 488 | labels: 489 | konghq.com/credential: key-auth 490 | type: Opaque 491 | --- 492 | apiVersion: v1 493 | data: 494 | key: dGVzdHVzZXJwYXNzd29yZDUw ## testuserpassword50 495 | kind: Secret 496 | metadata: 497 | name: test-user-key-auth-50 498 | labels: 499 | konghq.com/credential: key-auth 500 | type: Opaque 501 | --- 502 | apiVersion: v1 503 | data: 504 | key: dGVzdHVzZXJwYXNzd29yZDUx ## testuserpassword51 505 | kind: Secret 506 | metadata: 507 | name: test-user-key-auth-51 508 | labels: 509 | konghq.com/credential: key-auth 510 | type: Opaque 511 | --- 512 | apiVersion: v1 513 | data: 514 | key: dGVzdHVzZXJwYXNzd29yZDUy ## testuserpassword52 515 | kind: Secret 516 | metadata: 517 | name: test-user-key-auth-52 518 | labels: 519 | konghq.com/credential: key-auth 520 | type: Opaque 521 | --- 522 | apiVersion: v1 523 | data: 524 | key: dGVzdHVzZXJwYXNzd29yZDUz ## testuserpassword53 525 | kind: Secret 526 | metadata: 527 | name: test-user-key-auth-53 528 | labels: 529 | konghq.com/credential: key-auth 530 | type: Opaque 531 | --- 532 | apiVersion: v1 533 | data: 534 | key: dGVzdHVzZXJwYXNzd29yZDU0 ## testuserpassword54 535 | kind: Secret 536 | metadata: 537 | name: test-user-key-auth-54 538 | labels: 539 | konghq.com/credential: key-auth 540 | type: Opaque 541 | --- 542 | apiVersion: v1 543 | data: 544 | key: dGVzdHVzZXJwYXNzd29yZDU1 ## testuserpassword55 545 | kind: Secret 546 | metadata: 547 | name: test-user-key-auth-55 548 | labels: 549 | konghq.com/credential: key-auth 550 | type: Opaque 551 | --- 552 | apiVersion: v1 553 | data: 554 | key: dGVzdHVzZXJwYXNzd29yZDU2 ## testuserpassword56 555 | kind: Secret 556 | metadata: 557 | name: test-user-key-auth-56 558 | labels: 559 | konghq.com/credential: key-auth 560 | type: Opaque 561 | --- 562 | apiVersion: v1 563 | data: 564 | key: dGVzdHVzZXJwYXNzd29yZDU3 ## testuserpassword57 565 | kind: Secret 566 | metadata: 567 | name: test-user-key-auth-57 568 | labels: 569 | konghq.com/credential: key-auth 570 | type: Opaque 571 | --- 572 | apiVersion: v1 573 | data: 574 | key: dGVzdHVzZXJwYXNzd29yZDU4 ## testuserpassword58 575 | kind: Secret 576 | metadata: 577 | name: test-user-key-auth-58 578 | labels: 579 | konghq.com/credential: key-auth 580 | type: Opaque 581 | --- 582 | apiVersion: v1 583 | data: 584 | key: dGVzdHVzZXJwYXNzd29yZDU5 ## testuserpassword59 585 | kind: Secret 586 | metadata: 587 | name: test-user-key-auth-59 588 | labels: 589 | konghq.com/credential: key-auth 590 | type: Opaque 591 | --- 592 | apiVersion: v1 593 | data: 594 | key: dGVzdHVzZXJwYXNzd29yZDYw ## testuserpassword60 595 | kind: Secret 596 | metadata: 597 | name: test-user-key-auth-60 598 | labels: 599 | konghq.com/credential: key-auth 600 | type: Opaque 601 | --- 602 | apiVersion: v1 603 | data: 604 | key: dGVzdHVzZXJwYXNzd29yZDYx ## testuserpassword61 605 | kind: Secret 606 | metadata: 607 | name: test-user-key-auth-61 608 | labels: 609 | konghq.com/credential: key-auth 610 | type: Opaque 611 | --- 612 | apiVersion: v1 613 | data: 614 | key: dGVzdHVzZXJwYXNzd29yZDYy ## testuserpassword62 615 | kind: Secret 616 | metadata: 617 | name: test-user-key-auth-62 618 | labels: 619 | konghq.com/credential: key-auth 620 | type: Opaque 621 | --- 622 | apiVersion: v1 623 | data: 624 | key: dGVzdHVzZXJwYXNzd29yZDYz ## testuserpassword63 625 | kind: Secret 626 | metadata: 627 | name: test-user-key-auth-63 628 | labels: 629 | konghq.com/credential: key-auth 630 | type: Opaque 631 | --- 632 | apiVersion: v1 633 | data: 634 | key: dGVzdHVzZXJwYXNzd29yZDY0 ## testuserpassword64 635 | kind: Secret 636 | metadata: 637 | name: test-user-key-auth-64 638 | labels: 639 | konghq.com/credential: key-auth 640 | type: Opaque 641 | --- 642 | apiVersion: v1 643 | data: 644 | key: dGVzdHVzZXJwYXNzd29yZDY1 ## testuserpassword65 645 | kind: Secret 646 | metadata: 647 | name: test-user-key-auth-65 648 | labels: 649 | konghq.com/credential: key-auth 650 | type: Opaque 651 | --- 652 | apiVersion: v1 653 | data: 654 | key: dGVzdHVzZXJwYXNzd29yZDY2 ## testuserpassword66 655 | kind: Secret 656 | metadata: 657 | name: test-user-key-auth-66 658 | labels: 659 | konghq.com/credential: key-auth 660 | type: Opaque 661 | --- 662 | apiVersion: v1 663 | data: 664 | key: dGVzdHVzZXJwYXNzd29yZDY3 ## testuserpassword67 665 | kind: Secret 666 | metadata: 667 | name: test-user-key-auth-67 668 | labels: 669 | konghq.com/credential: key-auth 670 | type: Opaque 671 | --- 672 | apiVersion: v1 673 | data: 674 | key: dGVzdHVzZXJwYXNzd29yZDY4 ## testuserpassword68 675 | kind: Secret 676 | metadata: 677 | name: test-user-key-auth-68 678 | labels: 679 | konghq.com/credential: key-auth 680 | type: Opaque 681 | --- 682 | apiVersion: v1 683 | data: 684 | key: dGVzdHVzZXJwYXNzd29yZDY5 ## testuserpassword69 685 | kind: Secret 686 | metadata: 687 | name: test-user-key-auth-69 688 | labels: 689 | konghq.com/credential: key-auth 690 | type: Opaque 691 | --- 692 | apiVersion: v1 693 | data: 694 | key: dGVzdHVzZXJwYXNzd29yZDcw ## testuserpassword70 695 | kind: Secret 696 | metadata: 697 | name: test-user-key-auth-70 698 | labels: 699 | konghq.com/credential: key-auth 700 | type: Opaque 701 | --- 702 | apiVersion: v1 703 | data: 704 | key: dGVzdHVzZXJwYXNzd29yZDcx ## testuserpassword71 705 | kind: Secret 706 | metadata: 707 | name: test-user-key-auth-71 708 | labels: 709 | konghq.com/credential: key-auth 710 | type: Opaque 711 | --- 712 | apiVersion: v1 713 | data: 714 | key: dGVzdHVzZXJwYXNzd29yZDcy ## testuserpassword72 715 | kind: Secret 716 | metadata: 717 | name: test-user-key-auth-72 718 | labels: 719 | konghq.com/credential: key-auth 720 | type: Opaque 721 | --- 722 | apiVersion: v1 723 | data: 724 | key: dGVzdHVzZXJwYXNzd29yZDcz ## testuserpassword73 725 | kind: Secret 726 | metadata: 727 | name: test-user-key-auth-73 728 | labels: 729 | konghq.com/credential: key-auth 730 | type: Opaque 731 | --- 732 | apiVersion: v1 733 | data: 734 | key: dGVzdHVzZXJwYXNzd29yZDc0 ## testuserpassword74 735 | kind: Secret 736 | metadata: 737 | name: test-user-key-auth-74 738 | labels: 739 | konghq.com/credential: key-auth 740 | type: Opaque 741 | --- 742 | apiVersion: v1 743 | data: 744 | key: dGVzdHVzZXJwYXNzd29yZDc1 ## testuserpassword75 745 | kind: Secret 746 | metadata: 747 | name: test-user-key-auth-75 748 | labels: 749 | konghq.com/credential: key-auth 750 | type: Opaque 751 | --- 752 | apiVersion: v1 753 | data: 754 | key: dGVzdHVzZXJwYXNzd29yZDc2 ## testuserpassword76 755 | kind: Secret 756 | metadata: 757 | name: test-user-key-auth-76 758 | labels: 759 | konghq.com/credential: key-auth 760 | type: Opaque 761 | --- 762 | apiVersion: v1 763 | data: 764 | key: dGVzdHVzZXJwYXNzd29yZDc3 ## testuserpassword77 765 | kind: Secret 766 | metadata: 767 | name: test-user-key-auth-77 768 | labels: 769 | konghq.com/credential: key-auth 770 | type: Opaque 771 | --- 772 | apiVersion: v1 773 | data: 774 | key: dGVzdHVzZXJwYXNzd29yZDc4 ## testuserpassword78 775 | kind: Secret 776 | metadata: 777 | name: test-user-key-auth-78 778 | labels: 779 | konghq.com/credential: key-auth 780 | type: Opaque 781 | --- 782 | apiVersion: v1 783 | data: 784 | key: dGVzdHVzZXJwYXNzd29yZDc5 ## testuserpassword79 785 | kind: Secret 786 | metadata: 787 | name: test-user-key-auth-79 788 | labels: 789 | konghq.com/credential: key-auth 790 | type: Opaque 791 | --- 792 | apiVersion: v1 793 | data: 794 | key: dGVzdHVzZXJwYXNzd29yZDgw ## testuserpassword80 795 | kind: Secret 796 | metadata: 797 | name: test-user-key-auth-80 798 | labels: 799 | konghq.com/credential: key-auth 800 | type: Opaque 801 | --- 802 | apiVersion: v1 803 | data: 804 | key: dGVzdHVzZXJwYXNzd29yZDgx ## testuserpassword81 805 | kind: Secret 806 | metadata: 807 | name: test-user-key-auth-81 808 | labels: 809 | konghq.com/credential: key-auth 810 | type: Opaque 811 | --- 812 | apiVersion: v1 813 | data: 814 | key: dGVzdHVzZXJwYXNzd29yZDgy ## testuserpassword82 815 | kind: Secret 816 | metadata: 817 | name: test-user-key-auth-82 818 | labels: 819 | konghq.com/credential: key-auth 820 | type: Opaque 821 | --- 822 | apiVersion: v1 823 | data: 824 | key: dGVzdHVzZXJwYXNzd29yZDgz ## testuserpassword83 825 | kind: Secret 826 | metadata: 827 | name: test-user-key-auth-83 828 | labels: 829 | konghq.com/credential: key-auth 830 | type: Opaque 831 | --- 832 | apiVersion: v1 833 | data: 834 | key: dGVzdHVzZXJwYXNzd29yZDg0 ## testuserpassword84 835 | kind: Secret 836 | metadata: 837 | name: test-user-key-auth-84 838 | labels: 839 | konghq.com/credential: key-auth 840 | type: Opaque 841 | --- 842 | apiVersion: v1 843 | data: 844 | key: dGVzdHVzZXJwYXNzd29yZDg1 ## testuserpassword85 845 | kind: Secret 846 | metadata: 847 | name: test-user-key-auth-85 848 | labels: 849 | konghq.com/credential: key-auth 850 | type: Opaque 851 | --- 852 | apiVersion: v1 853 | data: 854 | key: dGVzdHVzZXJwYXNzd29yZDg2 ## testuserpassword86 855 | kind: Secret 856 | metadata: 857 | name: test-user-key-auth-86 858 | labels: 859 | konghq.com/credential: key-auth 860 | type: Opaque 861 | --- 862 | apiVersion: v1 863 | data: 864 | key: dGVzdHVzZXJwYXNzd29yZDg3 ## testuserpassword87 865 | kind: Secret 866 | metadata: 867 | name: test-user-key-auth-87 868 | labels: 869 | konghq.com/credential: key-auth 870 | type: Opaque 871 | --- 872 | apiVersion: v1 873 | data: 874 | key: dGVzdHVzZXJwYXNzd29yZDg4 ## testuserpassword88 875 | kind: Secret 876 | metadata: 877 | name: test-user-key-auth-88 878 | labels: 879 | konghq.com/credential: key-auth 880 | type: Opaque 881 | --- 882 | apiVersion: v1 883 | data: 884 | key: dGVzdHVzZXJwYXNzd29yZDg5 ## testuserpassword89 885 | kind: Secret 886 | metadata: 887 | name: test-user-key-auth-89 888 | labels: 889 | konghq.com/credential: key-auth 890 | type: Opaque 891 | --- 892 | apiVersion: v1 893 | data: 894 | key: dGVzdHVzZXJwYXNzd29yZDkw ## testuserpassword90 895 | kind: Secret 896 | metadata: 897 | name: test-user-key-auth-90 898 | labels: 899 | konghq.com/credential: key-auth 900 | type: Opaque 901 | --- 902 | apiVersion: v1 903 | data: 904 | key: dGVzdHVzZXJwYXNzd29yZDkx ## testuserpassword91 905 | kind: Secret 906 | metadata: 907 | name: test-user-key-auth-91 908 | labels: 909 | konghq.com/credential: key-auth 910 | type: Opaque 911 | --- 912 | apiVersion: v1 913 | data: 914 | key: dGVzdHVzZXJwYXNzd29yZDky ## testuserpassword92 915 | kind: Secret 916 | metadata: 917 | name: test-user-key-auth-92 918 | labels: 919 | konghq.com/credential: key-auth 920 | type: Opaque 921 | --- 922 | apiVersion: v1 923 | data: 924 | key: dGVzdHVzZXJwYXNzd29yZDkz ## testuserpassword93 925 | kind: Secret 926 | metadata: 927 | name: test-user-key-auth-93 928 | labels: 929 | konghq.com/credential: key-auth 930 | type: Opaque 931 | --- 932 | apiVersion: v1 933 | data: 934 | key: dGVzdHVzZXJwYXNzd29yZDk0 ## testuserpassword94 935 | kind: Secret 936 | metadata: 937 | name: test-user-key-auth-94 938 | labels: 939 | konghq.com/credential: key-auth 940 | type: Opaque 941 | --- 942 | apiVersion: v1 943 | data: 944 | key: dGVzdHVzZXJwYXNzd29yZDk1 ## testuserpassword95 945 | kind: Secret 946 | metadata: 947 | name: test-user-key-auth-95 948 | labels: 949 | konghq.com/credential: key-auth 950 | type: Opaque 951 | --- 952 | apiVersion: v1 953 | data: 954 | key: dGVzdHVzZXJwYXNzd29yZDk2 ## testuserpassword96 955 | kind: Secret 956 | metadata: 957 | name: test-user-key-auth-96 958 | labels: 959 | konghq.com/credential: key-auth 960 | type: Opaque 961 | --- 962 | apiVersion: v1 963 | data: 964 | key: dGVzdHVzZXJwYXNzd29yZDk3 ## testuserpassword97 965 | kind: Secret 966 | metadata: 967 | name: test-user-key-auth-97 968 | labels: 969 | konghq.com/credential: key-auth 970 | type: Opaque 971 | --- 972 | apiVersion: v1 973 | data: 974 | key: dGVzdHVzZXJwYXNzd29yZDk4 ## testuserpassword98 975 | kind: Secret 976 | metadata: 977 | name: test-user-key-auth-98 978 | labels: 979 | konghq.com/credential: key-auth 980 | type: Opaque 981 | --- 982 | apiVersion: v1 983 | data: 984 | key: dGVzdHVzZXJwYXNzd29yZDk5 ## testuserpassword99 985 | kind: Secret 986 | metadata: 987 | name: test-user-key-auth-99 988 | labels: 989 | konghq.com/credential: key-auth 990 | type: Opaque 991 | --- 992 | apiVersion: v1 993 | data: 994 | key: dGVzdHVzZXJwYXNzd29yZDEwMA== ## testuserpassword100 995 | kind: Secret 996 | metadata: 997 | name: test-user-key-auth-100 998 | labels: 999 | konghq.com/credential: key-auth 1000 | type: Opaque 1001 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/key-auth-testuser-secret-generator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Function to base64 encode a string 4 | base64_encode() { 5 | echo -n "$1" | base64 6 | } 7 | 8 | # Function to generate YAML content for a key 9 | generate_key_yaml() { 10 | local index=$1 11 | local key="testuserpassword${index}" 12 | local encoded_key=$(base64_encode "$key") 13 | 14 | cat < "key-auth-testuser-secret-${index}.yaml" 35 | 36 | echo "YAML file 'key-auth-testuser-secret-${index}.yaml' generated successfully." 37 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/key-auth-testuser-secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | data: 3 | key: dGVzdHVzZXJwYXNzd29yZDE= # testuserpassword1 4 | kind: Secret 5 | metadata: 6 | name: test-user-key-auth 7 | labels: 8 | konghq.com/credential: key-auth 9 | type: Opaque -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/kong-ce-values.yaml: -------------------------------------------------------------------------------- 1 | # Basic values.yaml configuration for Kong for Kubernetes (with the ingress controller) 2 | 3 | env: 4 | prefix: /kong_prefix/ 5 | database: "off" 6 | anonymous_reports: "off" 7 | 8 | proxy: 9 | annotations: 10 | prometheus.io/scrape: "true" 11 | prometheus.io/port: "8100" 12 | 13 | manager: 14 | enabled: false 15 | 16 | admin: 17 | enabled: false 18 | 19 | ingressController: 20 | enabled: true 21 | 22 | tolerations: 23 | - key: "dedicated" 24 | value: "kong" 25 | effect: "NoSchedule" -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/kong-consumers-100.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongConsumer 3 | metadata: 4 | name: testuser1 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | username: testuser1 8 | custom_id: testuser1 9 | credentials: 10 | - test-user-basic-auth-1 11 | - test-user-key-auth-1 12 | --- 13 | apiVersion: configuration.konghq.com/v1 14 | kind: KongConsumer 15 | metadata: 16 | name: testuser2 17 | annotations: 18 | kubernetes.io/ingress.class: kong 19 | username: testuser2 20 | custom_id: testuser2 21 | credentials: 22 | - test-user-basic-auth-2 23 | - test-user-key-auth-2 24 | --- 25 | apiVersion: configuration.konghq.com/v1 26 | kind: KongConsumer 27 | metadata: 28 | name: testuser3 29 | annotations: 30 | kubernetes.io/ingress.class: kong 31 | username: testuser3 32 | custom_id: testuser3 33 | credentials: 34 | - test-user-basic-auth-3 35 | - test-user-key-auth-3 36 | --- 37 | apiVersion: configuration.konghq.com/v1 38 | kind: KongConsumer 39 | metadata: 40 | name: testuser4 41 | annotations: 42 | kubernetes.io/ingress.class: kong 43 | username: testuser4 44 | custom_id: testuser4 45 | credentials: 46 | - test-user-basic-auth-4 47 | - test-user-key-auth-4 48 | --- 49 | apiVersion: configuration.konghq.com/v1 50 | kind: KongConsumer 51 | metadata: 52 | name: testuser5 53 | annotations: 54 | kubernetes.io/ingress.class: kong 55 | username: testuser5 56 | custom_id: testuser5 57 | credentials: 58 | - test-user-basic-auth-5 59 | - test-user-key-auth-5 60 | --- 61 | apiVersion: configuration.konghq.com/v1 62 | kind: KongConsumer 63 | metadata: 64 | name: testuser6 65 | annotations: 66 | kubernetes.io/ingress.class: kong 67 | username: testuser6 68 | custom_id: testuser6 69 | credentials: 70 | - test-user-basic-auth-6 71 | - test-user-key-auth-6 72 | --- 73 | apiVersion: configuration.konghq.com/v1 74 | kind: KongConsumer 75 | metadata: 76 | name: testuser7 77 | annotations: 78 | kubernetes.io/ingress.class: kong 79 | username: testuser7 80 | custom_id: testuser7 81 | credentials: 82 | - test-user-basic-auth-7 83 | - test-user-key-auth-7 84 | --- 85 | apiVersion: configuration.konghq.com/v1 86 | kind: KongConsumer 87 | metadata: 88 | name: testuser8 89 | annotations: 90 | kubernetes.io/ingress.class: kong 91 | username: testuser8 92 | custom_id: testuser8 93 | credentials: 94 | - test-user-basic-auth-8 95 | - test-user-key-auth-8 96 | --- 97 | apiVersion: configuration.konghq.com/v1 98 | kind: KongConsumer 99 | metadata: 100 | name: testuser9 101 | annotations: 102 | kubernetes.io/ingress.class: kong 103 | username: testuser9 104 | custom_id: testuser9 105 | credentials: 106 | - test-user-basic-auth-9 107 | - test-user-key-auth-9 108 | --- 109 | apiVersion: configuration.konghq.com/v1 110 | kind: KongConsumer 111 | metadata: 112 | name: testuser10 113 | annotations: 114 | kubernetes.io/ingress.class: kong 115 | username: testuser10 116 | custom_id: testuser10 117 | credentials: 118 | - test-user-basic-auth-10 119 | - test-user-key-auth-10 120 | --- 121 | apiVersion: configuration.konghq.com/v1 122 | kind: KongConsumer 123 | metadata: 124 | name: testuser11 125 | annotations: 126 | kubernetes.io/ingress.class: kong 127 | username: testuser11 128 | custom_id: testuser11 129 | credentials: 130 | - test-user-basic-auth-11 131 | - test-user-key-auth-11 132 | --- 133 | apiVersion: configuration.konghq.com/v1 134 | kind: KongConsumer 135 | metadata: 136 | name: testuser12 137 | annotations: 138 | kubernetes.io/ingress.class: kong 139 | username: testuser12 140 | custom_id: testuser12 141 | credentials: 142 | - test-user-basic-auth-12 143 | - test-user-key-auth-12 144 | --- 145 | apiVersion: configuration.konghq.com/v1 146 | kind: KongConsumer 147 | metadata: 148 | name: testuser13 149 | annotations: 150 | kubernetes.io/ingress.class: kong 151 | username: testuser13 152 | custom_id: testuser13 153 | credentials: 154 | - test-user-basic-auth-13 155 | - test-user-key-auth-13 156 | --- 157 | apiVersion: configuration.konghq.com/v1 158 | kind: KongConsumer 159 | metadata: 160 | name: testuser14 161 | annotations: 162 | kubernetes.io/ingress.class: kong 163 | username: testuser14 164 | custom_id: testuser14 165 | credentials: 166 | - test-user-basic-auth-14 167 | - test-user-key-auth-14 168 | --- 169 | apiVersion: configuration.konghq.com/v1 170 | kind: KongConsumer 171 | metadata: 172 | name: testuser15 173 | annotations: 174 | kubernetes.io/ingress.class: kong 175 | username: testuser15 176 | custom_id: testuser15 177 | credentials: 178 | - test-user-basic-auth-15 179 | - test-user-key-auth-15 180 | --- 181 | apiVersion: configuration.konghq.com/v1 182 | kind: KongConsumer 183 | metadata: 184 | name: testuser16 185 | annotations: 186 | kubernetes.io/ingress.class: kong 187 | username: testuser16 188 | custom_id: testuser16 189 | credentials: 190 | - test-user-basic-auth-16 191 | - test-user-key-auth-16 192 | --- 193 | apiVersion: configuration.konghq.com/v1 194 | kind: KongConsumer 195 | metadata: 196 | name: testuser17 197 | annotations: 198 | kubernetes.io/ingress.class: kong 199 | username: testuser17 200 | custom_id: testuser17 201 | credentials: 202 | - test-user-basic-auth-17 203 | - test-user-key-auth-17 204 | --- 205 | apiVersion: configuration.konghq.com/v1 206 | kind: KongConsumer 207 | metadata: 208 | name: testuser18 209 | annotations: 210 | kubernetes.io/ingress.class: kong 211 | username: testuser18 212 | custom_id: testuser18 213 | credentials: 214 | - test-user-basic-auth-18 215 | - test-user-key-auth-18 216 | --- 217 | apiVersion: configuration.konghq.com/v1 218 | kind: KongConsumer 219 | metadata: 220 | name: testuser19 221 | annotations: 222 | kubernetes.io/ingress.class: kong 223 | username: testuser19 224 | custom_id: testuser19 225 | credentials: 226 | - test-user-basic-auth-19 227 | - test-user-key-auth-19 228 | --- 229 | apiVersion: configuration.konghq.com/v1 230 | kind: KongConsumer 231 | metadata: 232 | name: testuser20 233 | annotations: 234 | kubernetes.io/ingress.class: kong 235 | username: testuser20 236 | custom_id: testuser20 237 | credentials: 238 | - test-user-basic-auth-20 239 | - test-user-key-auth-20 240 | --- 241 | apiVersion: configuration.konghq.com/v1 242 | kind: KongConsumer 243 | metadata: 244 | name: testuser21 245 | annotations: 246 | kubernetes.io/ingress.class: kong 247 | username: testuser21 248 | custom_id: testuser21 249 | credentials: 250 | - test-user-basic-auth-21 251 | - test-user-key-auth-21 252 | --- 253 | apiVersion: configuration.konghq.com/v1 254 | kind: KongConsumer 255 | metadata: 256 | name: testuser22 257 | annotations: 258 | kubernetes.io/ingress.class: kong 259 | username: testuser22 260 | custom_id: testuser22 261 | credentials: 262 | - test-user-basic-auth-22 263 | - test-user-key-auth-22 264 | --- 265 | apiVersion: configuration.konghq.com/v1 266 | kind: KongConsumer 267 | metadata: 268 | name: testuser23 269 | annotations: 270 | kubernetes.io/ingress.class: kong 271 | username: testuser23 272 | custom_id: testuser23 273 | credentials: 274 | - test-user-basic-auth-23 275 | - test-user-key-auth-23 276 | --- 277 | apiVersion: configuration.konghq.com/v1 278 | kind: KongConsumer 279 | metadata: 280 | name: testuser24 281 | annotations: 282 | kubernetes.io/ingress.class: kong 283 | username: testuser24 284 | custom_id: testuser24 285 | credentials: 286 | - test-user-basic-auth-24 287 | - test-user-key-auth-24 288 | --- 289 | apiVersion: configuration.konghq.com/v1 290 | kind: KongConsumer 291 | metadata: 292 | name: testuser25 293 | annotations: 294 | kubernetes.io/ingress.class: kong 295 | username: testuser25 296 | custom_id: testuser25 297 | credentials: 298 | - test-user-basic-auth-25 299 | - test-user-key-auth-25 300 | --- 301 | apiVersion: configuration.konghq.com/v1 302 | kind: KongConsumer 303 | metadata: 304 | name: testuser26 305 | annotations: 306 | kubernetes.io/ingress.class: kong 307 | username: testuser26 308 | custom_id: testuser26 309 | credentials: 310 | - test-user-basic-auth-26 311 | - test-user-key-auth-26 312 | --- 313 | apiVersion: configuration.konghq.com/v1 314 | kind: KongConsumer 315 | metadata: 316 | name: testuser27 317 | annotations: 318 | kubernetes.io/ingress.class: kong 319 | username: testuser27 320 | custom_id: testuser27 321 | credentials: 322 | - test-user-basic-auth-27 323 | - test-user-key-auth-27 324 | --- 325 | apiVersion: configuration.konghq.com/v1 326 | kind: KongConsumer 327 | metadata: 328 | name: testuser28 329 | annotations: 330 | kubernetes.io/ingress.class: kong 331 | username: testuser28 332 | custom_id: testuser28 333 | credentials: 334 | - test-user-basic-auth-28 335 | - test-user-key-auth-28 336 | --- 337 | apiVersion: configuration.konghq.com/v1 338 | kind: KongConsumer 339 | metadata: 340 | name: testuser29 341 | annotations: 342 | kubernetes.io/ingress.class: kong 343 | username: testuser29 344 | custom_id: testuser29 345 | credentials: 346 | - test-user-basic-auth-29 347 | - test-user-key-auth-29 348 | --- 349 | apiVersion: configuration.konghq.com/v1 350 | kind: KongConsumer 351 | metadata: 352 | name: testuser30 353 | annotations: 354 | kubernetes.io/ingress.class: kong 355 | username: testuser30 356 | custom_id: testuser30 357 | credentials: 358 | - test-user-basic-auth-30 359 | - test-user-key-auth-30 360 | --- 361 | apiVersion: configuration.konghq.com/v1 362 | kind: KongConsumer 363 | metadata: 364 | name: testuser31 365 | annotations: 366 | kubernetes.io/ingress.class: kong 367 | username: testuser31 368 | custom_id: testuser31 369 | credentials: 370 | - test-user-basic-auth-31 371 | - test-user-key-auth-31 372 | --- 373 | apiVersion: configuration.konghq.com/v1 374 | kind: KongConsumer 375 | metadata: 376 | name: testuser32 377 | annotations: 378 | kubernetes.io/ingress.class: kong 379 | username: testuser32 380 | custom_id: testuser32 381 | credentials: 382 | - test-user-basic-auth-32 383 | - test-user-key-auth-32 384 | --- 385 | apiVersion: configuration.konghq.com/v1 386 | kind: KongConsumer 387 | metadata: 388 | name: testuser33 389 | annotations: 390 | kubernetes.io/ingress.class: kong 391 | username: testuser33 392 | custom_id: testuser33 393 | credentials: 394 | - test-user-basic-auth-33 395 | - test-user-key-auth-33 396 | --- 397 | apiVersion: configuration.konghq.com/v1 398 | kind: KongConsumer 399 | metadata: 400 | name: testuser34 401 | annotations: 402 | kubernetes.io/ingress.class: kong 403 | username: testuser34 404 | custom_id: testuser34 405 | credentials: 406 | - test-user-basic-auth-34 407 | - test-user-key-auth-34 408 | --- 409 | apiVersion: configuration.konghq.com/v1 410 | kind: KongConsumer 411 | metadata: 412 | name: testuser35 413 | annotations: 414 | kubernetes.io/ingress.class: kong 415 | username: testuser35 416 | custom_id: testuser35 417 | credentials: 418 | - test-user-basic-auth-35 419 | - test-user-key-auth-35 420 | --- 421 | apiVersion: configuration.konghq.com/v1 422 | kind: KongConsumer 423 | metadata: 424 | name: testuser36 425 | annotations: 426 | kubernetes.io/ingress.class: kong 427 | username: testuser36 428 | custom_id: testuser36 429 | credentials: 430 | - test-user-basic-auth-36 431 | - test-user-key-auth-36 432 | --- 433 | apiVersion: configuration.konghq.com/v1 434 | kind: KongConsumer 435 | metadata: 436 | name: testuser37 437 | annotations: 438 | kubernetes.io/ingress.class: kong 439 | username: testuser37 440 | custom_id: testuser37 441 | credentials: 442 | - test-user-basic-auth-37 443 | - test-user-key-auth-37 444 | --- 445 | apiVersion: configuration.konghq.com/v1 446 | kind: KongConsumer 447 | metadata: 448 | name: testuser38 449 | annotations: 450 | kubernetes.io/ingress.class: kong 451 | username: testuser38 452 | custom_id: testuser38 453 | credentials: 454 | - test-user-basic-auth-38 455 | - test-user-key-auth-38 456 | --- 457 | apiVersion: configuration.konghq.com/v1 458 | kind: KongConsumer 459 | metadata: 460 | name: testuser39 461 | annotations: 462 | kubernetes.io/ingress.class: kong 463 | username: testuser39 464 | custom_id: testuser39 465 | credentials: 466 | - test-user-basic-auth-39 467 | - test-user-key-auth-39 468 | --- 469 | apiVersion: configuration.konghq.com/v1 470 | kind: KongConsumer 471 | metadata: 472 | name: testuser40 473 | annotations: 474 | kubernetes.io/ingress.class: kong 475 | username: testuser40 476 | custom_id: testuser40 477 | credentials: 478 | - test-user-basic-auth-40 479 | - test-user-key-auth-40 480 | --- 481 | apiVersion: configuration.konghq.com/v1 482 | kind: KongConsumer 483 | metadata: 484 | name: testuser41 485 | annotations: 486 | kubernetes.io/ingress.class: kong 487 | username: testuser41 488 | custom_id: testuser41 489 | credentials: 490 | - test-user-basic-auth-41 491 | - test-user-key-auth-41 492 | --- 493 | apiVersion: configuration.konghq.com/v1 494 | kind: KongConsumer 495 | metadata: 496 | name: testuser42 497 | annotations: 498 | kubernetes.io/ingress.class: kong 499 | username: testuser42 500 | custom_id: testuser42 501 | credentials: 502 | - test-user-basic-auth-42 503 | - test-user-key-auth-42 504 | --- 505 | apiVersion: configuration.konghq.com/v1 506 | kind: KongConsumer 507 | metadata: 508 | name: testuser43 509 | annotations: 510 | kubernetes.io/ingress.class: kong 511 | username: testuser43 512 | custom_id: testuser43 513 | credentials: 514 | - test-user-basic-auth-43 515 | - test-user-key-auth-43 516 | --- 517 | apiVersion: configuration.konghq.com/v1 518 | kind: KongConsumer 519 | metadata: 520 | name: testuser44 521 | annotations: 522 | kubernetes.io/ingress.class: kong 523 | username: testuser44 524 | custom_id: testuser44 525 | credentials: 526 | - test-user-basic-auth-44 527 | - test-user-key-auth-44 528 | --- 529 | apiVersion: configuration.konghq.com/v1 530 | kind: KongConsumer 531 | metadata: 532 | name: testuser45 533 | annotations: 534 | kubernetes.io/ingress.class: kong 535 | username: testuser45 536 | custom_id: testuser45 537 | credentials: 538 | - test-user-basic-auth-45 539 | - test-user-key-auth-45 540 | --- 541 | apiVersion: configuration.konghq.com/v1 542 | kind: KongConsumer 543 | metadata: 544 | name: testuser46 545 | annotations: 546 | kubernetes.io/ingress.class: kong 547 | username: testuser46 548 | custom_id: testuser46 549 | credentials: 550 | - test-user-basic-auth-46 551 | - test-user-key-auth-46 552 | --- 553 | apiVersion: configuration.konghq.com/v1 554 | kind: KongConsumer 555 | metadata: 556 | name: testuser47 557 | annotations: 558 | kubernetes.io/ingress.class: kong 559 | username: testuser47 560 | custom_id: testuser47 561 | credentials: 562 | - test-user-basic-auth-47 563 | - test-user-key-auth-47 564 | --- 565 | apiVersion: configuration.konghq.com/v1 566 | kind: KongConsumer 567 | metadata: 568 | name: testuser48 569 | annotations: 570 | kubernetes.io/ingress.class: kong 571 | username: testuser48 572 | custom_id: testuser48 573 | credentials: 574 | - test-user-basic-auth-48 575 | - test-user-key-auth-48 576 | --- 577 | apiVersion: configuration.konghq.com/v1 578 | kind: KongConsumer 579 | metadata: 580 | name: testuser49 581 | annotations: 582 | kubernetes.io/ingress.class: kong 583 | username: testuser49 584 | custom_id: testuser49 585 | credentials: 586 | - test-user-basic-auth-49 587 | - test-user-key-auth-49 588 | --- 589 | apiVersion: configuration.konghq.com/v1 590 | kind: KongConsumer 591 | metadata: 592 | name: testuser50 593 | annotations: 594 | kubernetes.io/ingress.class: kong 595 | username: testuser50 596 | custom_id: testuser50 597 | credentials: 598 | - test-user-basic-auth-50 599 | - test-user-key-auth-50 600 | --- 601 | apiVersion: configuration.konghq.com/v1 602 | kind: KongConsumer 603 | metadata: 604 | name: testuser51 605 | annotations: 606 | kubernetes.io/ingress.class: kong 607 | username: testuser51 608 | custom_id: testuser51 609 | credentials: 610 | - test-user-basic-auth-51 611 | - test-user-key-auth-51 612 | --- 613 | apiVersion: configuration.konghq.com/v1 614 | kind: KongConsumer 615 | metadata: 616 | name: testuser52 617 | annotations: 618 | kubernetes.io/ingress.class: kong 619 | username: testuser52 620 | custom_id: testuser52 621 | credentials: 622 | - test-user-basic-auth-52 623 | - test-user-key-auth-52 624 | --- 625 | apiVersion: configuration.konghq.com/v1 626 | kind: KongConsumer 627 | metadata: 628 | name: testuser53 629 | annotations: 630 | kubernetes.io/ingress.class: kong 631 | username: testuser53 632 | custom_id: testuser53 633 | credentials: 634 | - test-user-basic-auth-53 635 | - test-user-key-auth-53 636 | --- 637 | apiVersion: configuration.konghq.com/v1 638 | kind: KongConsumer 639 | metadata: 640 | name: testuser54 641 | annotations: 642 | kubernetes.io/ingress.class: kong 643 | username: testuser54 644 | custom_id: testuser54 645 | credentials: 646 | - test-user-basic-auth-54 647 | - test-user-key-auth-54 648 | --- 649 | apiVersion: configuration.konghq.com/v1 650 | kind: KongConsumer 651 | metadata: 652 | name: testuser55 653 | annotations: 654 | kubernetes.io/ingress.class: kong 655 | username: testuser55 656 | custom_id: testuser55 657 | credentials: 658 | - test-user-basic-auth-55 659 | - test-user-key-auth-55 660 | --- 661 | apiVersion: configuration.konghq.com/v1 662 | kind: KongConsumer 663 | metadata: 664 | name: testuser56 665 | annotations: 666 | kubernetes.io/ingress.class: kong 667 | username: testuser56 668 | custom_id: testuser56 669 | credentials: 670 | - test-user-basic-auth-56 671 | - test-user-key-auth-56 672 | --- 673 | apiVersion: configuration.konghq.com/v1 674 | kind: KongConsumer 675 | metadata: 676 | name: testuser57 677 | annotations: 678 | kubernetes.io/ingress.class: kong 679 | username: testuser57 680 | custom_id: testuser57 681 | credentials: 682 | - test-user-basic-auth-57 683 | - test-user-key-auth-57 684 | --- 685 | apiVersion: configuration.konghq.com/v1 686 | kind: KongConsumer 687 | metadata: 688 | name: testuser58 689 | annotations: 690 | kubernetes.io/ingress.class: kong 691 | username: testuser58 692 | custom_id: testuser58 693 | credentials: 694 | - test-user-basic-auth-58 695 | - test-user-key-auth-58 696 | --- 697 | apiVersion: configuration.konghq.com/v1 698 | kind: KongConsumer 699 | metadata: 700 | name: testuser59 701 | annotations: 702 | kubernetes.io/ingress.class: kong 703 | username: testuser59 704 | custom_id: testuser59 705 | credentials: 706 | - test-user-basic-auth-59 707 | - test-user-key-auth-59 708 | --- 709 | apiVersion: configuration.konghq.com/v1 710 | kind: KongConsumer 711 | metadata: 712 | name: testuser60 713 | annotations: 714 | kubernetes.io/ingress.class: kong 715 | username: testuser60 716 | custom_id: testuser60 717 | credentials: 718 | - test-user-basic-auth-60 719 | - test-user-key-auth-60 720 | --- 721 | apiVersion: configuration.konghq.com/v1 722 | kind: KongConsumer 723 | metadata: 724 | name: testuser61 725 | annotations: 726 | kubernetes.io/ingress.class: kong 727 | username: testuser61 728 | custom_id: testuser61 729 | credentials: 730 | - test-user-basic-auth-61 731 | - test-user-key-auth-61 732 | --- 733 | apiVersion: configuration.konghq.com/v1 734 | kind: KongConsumer 735 | metadata: 736 | name: testuser62 737 | annotations: 738 | kubernetes.io/ingress.class: kong 739 | username: testuser62 740 | custom_id: testuser62 741 | credentials: 742 | - test-user-basic-auth-62 743 | - test-user-key-auth-62 744 | --- 745 | apiVersion: configuration.konghq.com/v1 746 | kind: KongConsumer 747 | metadata: 748 | name: testuser63 749 | annotations: 750 | kubernetes.io/ingress.class: kong 751 | username: testuser63 752 | custom_id: testuser63 753 | credentials: 754 | - test-user-basic-auth-63 755 | - test-user-key-auth-63 756 | --- 757 | apiVersion: configuration.konghq.com/v1 758 | kind: KongConsumer 759 | metadata: 760 | name: testuser64 761 | annotations: 762 | kubernetes.io/ingress.class: kong 763 | username: testuser64 764 | custom_id: testuser64 765 | credentials: 766 | - test-user-basic-auth-64 767 | - test-user-key-auth-64 768 | --- 769 | apiVersion: configuration.konghq.com/v1 770 | kind: KongConsumer 771 | metadata: 772 | name: testuser65 773 | annotations: 774 | kubernetes.io/ingress.class: kong 775 | username: testuser65 776 | custom_id: testuser65 777 | credentials: 778 | - test-user-basic-auth-65 779 | - test-user-key-auth-65 780 | --- 781 | apiVersion: configuration.konghq.com/v1 782 | kind: KongConsumer 783 | metadata: 784 | name: testuser66 785 | annotations: 786 | kubernetes.io/ingress.class: kong 787 | username: testuser66 788 | custom_id: testuser66 789 | credentials: 790 | - test-user-basic-auth-66 791 | - test-user-key-auth-66 792 | --- 793 | apiVersion: configuration.konghq.com/v1 794 | kind: KongConsumer 795 | metadata: 796 | name: testuser67 797 | annotations: 798 | kubernetes.io/ingress.class: kong 799 | username: testuser67 800 | custom_id: testuser67 801 | credentials: 802 | - test-user-basic-auth-67 803 | - test-user-key-auth-67 804 | --- 805 | apiVersion: configuration.konghq.com/v1 806 | kind: KongConsumer 807 | metadata: 808 | name: testuser68 809 | annotations: 810 | kubernetes.io/ingress.class: kong 811 | username: testuser68 812 | custom_id: testuser68 813 | credentials: 814 | - test-user-basic-auth-68 815 | - test-user-key-auth-68 816 | --- 817 | apiVersion: configuration.konghq.com/v1 818 | kind: KongConsumer 819 | metadata: 820 | name: testuser69 821 | annotations: 822 | kubernetes.io/ingress.class: kong 823 | username: testuser69 824 | custom_id: testuser69 825 | credentials: 826 | - test-user-basic-auth-69 827 | - test-user-key-auth-69 828 | --- 829 | apiVersion: configuration.konghq.com/v1 830 | kind: KongConsumer 831 | metadata: 832 | name: testuser70 833 | annotations: 834 | kubernetes.io/ingress.class: kong 835 | username: testuser70 836 | custom_id: testuser70 837 | credentials: 838 | - test-user-basic-auth-70 839 | - test-user-key-auth-70 840 | --- 841 | apiVersion: configuration.konghq.com/v1 842 | kind: KongConsumer 843 | metadata: 844 | name: testuser71 845 | annotations: 846 | kubernetes.io/ingress.class: kong 847 | username: testuser71 848 | custom_id: testuser71 849 | credentials: 850 | - test-user-basic-auth-71 851 | - test-user-key-auth-71 852 | --- 853 | apiVersion: configuration.konghq.com/v1 854 | kind: KongConsumer 855 | metadata: 856 | name: testuser72 857 | annotations: 858 | kubernetes.io/ingress.class: kong 859 | username: testuser72 860 | custom_id: testuser72 861 | credentials: 862 | - test-user-basic-auth-72 863 | - test-user-key-auth-72 864 | --- 865 | apiVersion: configuration.konghq.com/v1 866 | kind: KongConsumer 867 | metadata: 868 | name: testuser73 869 | annotations: 870 | kubernetes.io/ingress.class: kong 871 | username: testuser73 872 | custom_id: testuser73 873 | credentials: 874 | - test-user-basic-auth-73 875 | - test-user-key-auth-73 876 | --- 877 | apiVersion: configuration.konghq.com/v1 878 | kind: KongConsumer 879 | metadata: 880 | name: testuser74 881 | annotations: 882 | kubernetes.io/ingress.class: kong 883 | username: testuser74 884 | custom_id: testuser74 885 | credentials: 886 | - test-user-basic-auth-74 887 | - test-user-key-auth-74 888 | --- 889 | apiVersion: configuration.konghq.com/v1 890 | kind: KongConsumer 891 | metadata: 892 | name: testuser75 893 | annotations: 894 | kubernetes.io/ingress.class: kong 895 | username: testuser75 896 | custom_id: testuser75 897 | credentials: 898 | - test-user-basic-auth-75 899 | - test-user-key-auth-75 900 | --- 901 | apiVersion: configuration.konghq.com/v1 902 | kind: KongConsumer 903 | metadata: 904 | name: testuser76 905 | annotations: 906 | kubernetes.io/ingress.class: kong 907 | username: testuser76 908 | custom_id: testuser76 909 | credentials: 910 | - test-user-basic-auth-76 911 | - test-user-key-auth-76 912 | --- 913 | apiVersion: configuration.konghq.com/v1 914 | kind: KongConsumer 915 | metadata: 916 | name: testuser77 917 | annotations: 918 | kubernetes.io/ingress.class: kong 919 | username: testuser77 920 | custom_id: testuser77 921 | credentials: 922 | - test-user-basic-auth-77 923 | - test-user-key-auth-77 924 | --- 925 | apiVersion: configuration.konghq.com/v1 926 | kind: KongConsumer 927 | metadata: 928 | name: testuser78 929 | annotations: 930 | kubernetes.io/ingress.class: kong 931 | username: testuser78 932 | custom_id: testuser78 933 | credentials: 934 | - test-user-basic-auth-78 935 | - test-user-key-auth-78 936 | --- 937 | apiVersion: configuration.konghq.com/v1 938 | kind: KongConsumer 939 | metadata: 940 | name: testuser79 941 | annotations: 942 | kubernetes.io/ingress.class: kong 943 | username: testuser79 944 | custom_id: testuser79 945 | credentials: 946 | - test-user-basic-auth-79 947 | - test-user-key-auth-79 948 | --- 949 | apiVersion: configuration.konghq.com/v1 950 | kind: KongConsumer 951 | metadata: 952 | name: testuser80 953 | annotations: 954 | kubernetes.io/ingress.class: kong 955 | username: testuser80 956 | custom_id: testuser80 957 | credentials: 958 | - test-user-basic-auth-80 959 | - test-user-key-auth-80 960 | --- 961 | apiVersion: configuration.konghq.com/v1 962 | kind: KongConsumer 963 | metadata: 964 | name: testuser81 965 | annotations: 966 | kubernetes.io/ingress.class: kong 967 | username: testuser81 968 | custom_id: testuser81 969 | credentials: 970 | - test-user-basic-auth-81 971 | - test-user-key-auth-81 972 | --- 973 | apiVersion: configuration.konghq.com/v1 974 | kind: KongConsumer 975 | metadata: 976 | name: testuser82 977 | annotations: 978 | kubernetes.io/ingress.class: kong 979 | username: testuser82 980 | custom_id: testuser82 981 | credentials: 982 | - test-user-basic-auth-82 983 | - test-user-key-auth-82 984 | --- 985 | apiVersion: configuration.konghq.com/v1 986 | kind: KongConsumer 987 | metadata: 988 | name: testuser83 989 | annotations: 990 | kubernetes.io/ingress.class: kong 991 | username: testuser83 992 | custom_id: testuser83 993 | credentials: 994 | - test-user-basic-auth-83 995 | - test-user-key-auth-83 996 | --- 997 | apiVersion: configuration.konghq.com/v1 998 | kind: KongConsumer 999 | metadata: 1000 | name: testuser84 1001 | annotations: 1002 | kubernetes.io/ingress.class: kong 1003 | username: testuser84 1004 | custom_id: testuser84 1005 | credentials: 1006 | - test-user-basic-auth-84 1007 | - test-user-key-auth-84 1008 | --- 1009 | apiVersion: configuration.konghq.com/v1 1010 | kind: KongConsumer 1011 | metadata: 1012 | name: testuser85 1013 | annotations: 1014 | kubernetes.io/ingress.class: kong 1015 | username: testuser85 1016 | custom_id: testuser85 1017 | credentials: 1018 | - test-user-basic-auth-85 1019 | - test-user-key-auth-85 1020 | --- 1021 | apiVersion: configuration.konghq.com/v1 1022 | kind: KongConsumer 1023 | metadata: 1024 | name: testuser86 1025 | annotations: 1026 | kubernetes.io/ingress.class: kong 1027 | username: testuser86 1028 | custom_id: testuser86 1029 | credentials: 1030 | - test-user-basic-auth-86 1031 | - test-user-key-auth-86 1032 | --- 1033 | apiVersion: configuration.konghq.com/v1 1034 | kind: KongConsumer 1035 | metadata: 1036 | name: testuser87 1037 | annotations: 1038 | kubernetes.io/ingress.class: kong 1039 | username: testuser87 1040 | custom_id: testuser87 1041 | credentials: 1042 | - test-user-basic-auth-87 1043 | - test-user-key-auth-87 1044 | --- 1045 | apiVersion: configuration.konghq.com/v1 1046 | kind: KongConsumer 1047 | metadata: 1048 | name: testuser88 1049 | annotations: 1050 | kubernetes.io/ingress.class: kong 1051 | username: testuser88 1052 | custom_id: testuser88 1053 | credentials: 1054 | - test-user-basic-auth-88 1055 | - test-user-key-auth-88 1056 | --- 1057 | apiVersion: configuration.konghq.com/v1 1058 | kind: KongConsumer 1059 | metadata: 1060 | name: testuser89 1061 | annotations: 1062 | kubernetes.io/ingress.class: kong 1063 | username: testuser89 1064 | custom_id: testuser89 1065 | credentials: 1066 | - test-user-basic-auth-89 1067 | - test-user-key-auth-89 1068 | --- 1069 | apiVersion: configuration.konghq.com/v1 1070 | kind: KongConsumer 1071 | metadata: 1072 | name: testuser90 1073 | annotations: 1074 | kubernetes.io/ingress.class: kong 1075 | username: testuser90 1076 | custom_id: testuser90 1077 | credentials: 1078 | - test-user-basic-auth-90 1079 | - test-user-key-auth-90 1080 | --- 1081 | apiVersion: configuration.konghq.com/v1 1082 | kind: KongConsumer 1083 | metadata: 1084 | name: testuser91 1085 | annotations: 1086 | kubernetes.io/ingress.class: kong 1087 | username: testuser91 1088 | custom_id: testuser91 1089 | credentials: 1090 | - test-user-basic-auth-91 1091 | - test-user-key-auth-91 1092 | --- 1093 | apiVersion: configuration.konghq.com/v1 1094 | kind: KongConsumer 1095 | metadata: 1096 | name: testuser92 1097 | annotations: 1098 | kubernetes.io/ingress.class: kong 1099 | username: testuser92 1100 | custom_id: testuser92 1101 | credentials: 1102 | - test-user-basic-auth-92 1103 | - test-user-key-auth-92 1104 | --- 1105 | apiVersion: configuration.konghq.com/v1 1106 | kind: KongConsumer 1107 | metadata: 1108 | name: testuser93 1109 | annotations: 1110 | kubernetes.io/ingress.class: kong 1111 | username: testuser93 1112 | custom_id: testuser93 1113 | credentials: 1114 | - test-user-basic-auth-93 1115 | - test-user-key-auth-93 1116 | --- 1117 | apiVersion: configuration.konghq.com/v1 1118 | kind: KongConsumer 1119 | metadata: 1120 | name: testuser94 1121 | annotations: 1122 | kubernetes.io/ingress.class: kong 1123 | username: testuser94 1124 | custom_id: testuser94 1125 | credentials: 1126 | - test-user-basic-auth-94 1127 | - test-user-key-auth-94 1128 | --- 1129 | apiVersion: configuration.konghq.com/v1 1130 | kind: KongConsumer 1131 | metadata: 1132 | name: testuser95 1133 | annotations: 1134 | kubernetes.io/ingress.class: kong 1135 | username: testuser95 1136 | custom_id: testuser95 1137 | credentials: 1138 | - test-user-basic-auth-95 1139 | - test-user-key-auth-95 1140 | --- 1141 | apiVersion: configuration.konghq.com/v1 1142 | kind: KongConsumer 1143 | metadata: 1144 | name: testuser96 1145 | annotations: 1146 | kubernetes.io/ingress.class: kong 1147 | username: testuser96 1148 | custom_id: testuser96 1149 | credentials: 1150 | - test-user-basic-auth-96 1151 | - test-user-key-auth-96 1152 | --- 1153 | apiVersion: configuration.konghq.com/v1 1154 | kind: KongConsumer 1155 | metadata: 1156 | name: testuser97 1157 | annotations: 1158 | kubernetes.io/ingress.class: kong 1159 | username: testuser97 1160 | custom_id: testuser97 1161 | credentials: 1162 | - test-user-basic-auth-97 1163 | - test-user-key-auth-97 1164 | --- 1165 | apiVersion: configuration.konghq.com/v1 1166 | kind: KongConsumer 1167 | metadata: 1168 | name: testuser98 1169 | annotations: 1170 | kubernetes.io/ingress.class: kong 1171 | username: testuser98 1172 | custom_id: testuser98 1173 | credentials: 1174 | - test-user-basic-auth-98 1175 | - test-user-key-auth-98 1176 | --- 1177 | apiVersion: configuration.konghq.com/v1 1178 | kind: KongConsumer 1179 | metadata: 1180 | name: testuser99 1181 | annotations: 1182 | kubernetes.io/ingress.class: kong 1183 | username: testuser99 1184 | custom_id: testuser99 1185 | credentials: 1186 | - test-user-basic-auth-99 1187 | - test-user-key-auth-99 1188 | --- 1189 | apiVersion: configuration.konghq.com/v1 1190 | kind: KongConsumer 1191 | metadata: 1192 | name: testuser100 1193 | annotations: 1194 | kubernetes.io/ingress.class: kong 1195 | username: testuser100 1196 | custom_id: testuser100 1197 | credentials: 1198 | - test-user-basic-auth-100 1199 | - test-user-key-auth-100 1200 | --- 1201 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/kong-ee-values.yaml: -------------------------------------------------------------------------------- 1 | # Basic values.yaml for Kong for Kubernetes with Kong Enterprise 2 | # Several settings (search for the string "CHANGEME") require user-provided 3 | # Secrets. These Secrets must be created before installation. 4 | # 5 | # This installation does not create an Ingress or LoadBalancer Service for 6 | # the Admin API or Kong Manager. They require port-forwards to access without 7 | # further configuration to add them: 8 | # kubectl port-forward deploy/your-deployment-kong 8001:8001 8002:8002 9 | 10 | proxy: 11 | annotations: 12 | prometheus.io/scrape: "true" 13 | prometheus.io/port: "8100" 14 | 15 | admin: 16 | enabled: false 17 | 18 | manager: 19 | enabled: false 20 | 21 | enterprise: 22 | enabled: true 23 | license_secret: kong-enterprise-license 24 | vitals: 25 | enabled: false 26 | portal: 27 | enabled: false 28 | rbac: 29 | enabled: false 30 | smtp: 31 | enabled: false 32 | 33 | portal: 34 | enabled: false 35 | 36 | portalapi: 37 | enabled: false 38 | 39 | env: 40 | prefix: /kong_prefix/ 41 | database: "off" 42 | anonymous_reports: "off" 43 | 44 | ingressController: 45 | enabled: true 46 | 47 | tolerations: 48 | - key: "dedicated" 49 | value: "kong" 50 | effect: "NoSchedule" -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/license.json: -------------------------------------------------------------------------------- 1 | { 2 | "license": { 3 | "payload": { 4 | "note": "PLEASE REACHOUT TO KONG FOR A TEST LICENSE FOR KONG ENTERPRISE" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/prometheus-plugin.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongClusterPlugin 3 | metadata: 4 | name: prometheus-global 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | labels: 8 | global: "true" 9 | config: 10 | status_code_metrics: true 11 | latency_metrics: true 12 | bandwidth_metrics: true 13 | plugin: prometheus 14 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/rate-limiting-advanced-plugin.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongClusterPlugin 3 | metadata: 4 | name: rate-limit-1 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | labels: 8 | global: "true" 9 | config: 10 | window_type: fixed 11 | limit: 12 | - 1000000000000 13 | window_size: 14 | - 7200 15 | identifier: consumer 16 | sync_rate: -1 17 | namespace: rate-limit-1 18 | strategy: local 19 | hide_client_headers: false 20 | plugin: rate-limiting-advanced 21 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/rate-limiting-plugin.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: configuration.konghq.com/v1 2 | kind: KongClusterPlugin 3 | metadata: 4 | name: rate-limit-1 5 | annotations: 6 | kubernetes.io/ingress.class: kong 7 | labels: 8 | global: "true" 9 | config: 10 | day: 1000000000000 11 | policy: local 12 | plugin: rate-limiting -------------------------------------------------------------------------------- /deploy-k8s-resources/kong_helm/upstream-generator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Number of routes 4 | num_routes=${1:-100} 5 | 6 | # Output file name 7 | output_file="expanded-ingresses-$num_routes.yaml" 8 | 9 | # Remove existing output file if it exists 10 | [ -e "$output_file" ] && rm "$output_file" 11 | 12 | # Start writing the YAML 13 | echo -e "apiVersion: networking.k8s.io/v1\nkind: Ingress" > "$output_file" 14 | 15 | # Loop to generate Ingress blocks with parameterized names and paths 16 | for ((i=1; i<=$num_routes; i++)); do 17 | echo -e "metadata:\n annotations:\n konghq.com/strip-path: \"true\"" >> "$output_file" 18 | echo " name: upstream-${i}" >> "$output_file" 19 | echo " namespace: upstream" >> "$output_file" 20 | echo -e "spec:\n ingressClassName: kong\n rules:" >> "$output_file" 21 | echo -e " - http:\n paths:" >> "$output_file" 22 | echo -e " - backend:\n service:\n name: upstream\n port:\n number: 8000" >> "$output_file" 23 | echo " path: /${i}route" >> "$output_file" 24 | echo " pathType: ImplementationSpecific" >> "$output_file" 25 | if [ "$i" -lt "$num_routes" ]; then 26 | echo -e "---\napiVersion: networking.k8s.io/v1\nkind: Ingress" >> "$output_file" 27 | fi 28 | done 29 | 30 | echo "Expansion complete. Output file: $output_file" 31 | -------------------------------------------------------------------------------- /deploy-k8s-resources/kubernetes.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | region = var.region 3 | } 4 | 5 | data "terraform_remote_state" "eks" { 6 | backend = "local" 7 | config = { 8 | path = "../provision-eks-cluster/terraform.tfstate" 9 | } 10 | } 11 | 12 | # Retrieve EKS cluster configuration 13 | data "aws_eks_cluster" "cluster" { 14 | name = data.terraform_remote_state.eks.outputs.cluster_name 15 | } 16 | 17 | data "aws_eks_cluster_auth" "cluster" { 18 | name = data.terraform_remote_state.eks.outputs.cluster_name 19 | } 20 | 21 | provider "kubernetes" { 22 | host = data.aws_eks_cluster.cluster.endpoint 23 | cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data) 24 | exec { 25 | api_version = "client.authentication.k8s.io/v1beta1" 26 | args = ["eks", "get-token", "--cluster-name", data.aws_eks_cluster.cluster.name] 27 | command = "aws" 28 | } 29 | } 30 | 31 | resource "kubernetes_namespace" "kong" { 32 | metadata { 33 | name = "kong" 34 | } 35 | } 36 | 37 | resource "kubernetes_namespace" "k6" { 38 | metadata { 39 | name = "k6" 40 | } 41 | } 42 | 43 | resource "kubernetes_namespace" "upstream" { 44 | metadata { 45 | name = "upstream" 46 | } 47 | } 48 | 49 | resource "kubernetes_namespace" "observability" { 50 | metadata { 51 | name = "observability" 52 | } 53 | } 54 | 55 | resource "kubernetes_secret" "kong_license" { 56 | count = (var.kong_enterprise ? 1 : 0) 57 | metadata { 58 | name = "kong-enterprise-license" 59 | namespace = "kong" 60 | } 61 | 62 | data = { 63 | "license" = "${file("${path.module}/kong_helm/license.json")}" 64 | } 65 | 66 | depends_on = [ kubernetes_namespace.kong ] 67 | } 68 | 69 | resource "kubernetes_config_map" "kong_load_test" { 70 | metadata { 71 | name = "kong-load-test" 72 | namespace = "k6" 73 | } 74 | 75 | data = { 76 | "test.js" = "${file("${path.module}/k6_tests/test.js")}" 77 | "k6_tests_01.js" = "${file("${path.module}/k6_tests/k6_tests_01.js")}" 78 | } 79 | 80 | depends_on = [ kubernetes_namespace.k6 ] 81 | } 82 | 83 | resource "kubernetes_deployment" "upstream" { 84 | metadata { 85 | name = "upstream" 86 | namespace = "upstream" 87 | } 88 | spec { 89 | replicas = 1 90 | selector { 91 | match_labels = { 92 | app = "upstream" 93 | } 94 | } 95 | template { 96 | metadata { 97 | labels = { 98 | app = "upstream" 99 | } 100 | } 101 | spec { 102 | container { 103 | command = [ 104 | "./go-bench-suite", 105 | "upstream", 106 | ] 107 | image = "mangomm/go-bench-suite:latest" 108 | name = "upstream" 109 | } 110 | } 111 | } 112 | } 113 | depends_on = [ kubernetes_namespace.upstream ] 114 | } 115 | 116 | resource "kubernetes_service" "upstream" { 117 | metadata { 118 | name = "upstream" 119 | namespace = "upstream" 120 | labels = { 121 | "run" = "upstream" 122 | } 123 | } 124 | spec { 125 | selector = { 126 | app = "upstream" 127 | } 128 | port { 129 | port = 8000 130 | target_port = 8000 131 | } 132 | 133 | type = "ClusterIP" 134 | } 135 | depends_on = [ kubernetes_namespace.upstream ] 136 | } 137 | 138 | resource "kubernetes_ingress_v1" "upstream" { 139 | metadata { 140 | name = "upstream" 141 | namespace = "upstream" 142 | annotations = { 143 | "konghq.com/strip-path" = "true" 144 | } 145 | } 146 | 147 | spec { 148 | ingress_class_name = "kong" 149 | rule { 150 | http { 151 | path { 152 | backend { 153 | service { 154 | name = "upstream" 155 | port { 156 | number = 8000 157 | } 158 | } 159 | } 160 | 161 | path = "/upstream" 162 | } 163 | } 164 | } 165 | } 166 | depends_on = [ kubernetes_namespace.upstream ] 167 | } 168 | 169 | data "kubernetes_service" "kong" { 170 | depends_on = [helm_release.kong] 171 | metadata { 172 | name = "kong-kong-proxy" 173 | namespace = "kong" 174 | } 175 | } 176 | 177 | # data "kubernetes_secret_v1" "grafana_password" { 178 | # metadata { 179 | # name = "grafana" 180 | # namespace = "observability" 181 | # } 182 | 183 | # depends_on = [ helm_release.grafana ] 184 | # } -------------------------------------------------------------------------------- /deploy-k8s-resources/outputs.tf: -------------------------------------------------------------------------------- 1 | output "kong_endpoint" { 2 | value = "http://${data.kubernetes_service.kong.status.0.load_balancer.0.ingress.0.hostname}" 3 | } -------------------------------------------------------------------------------- /deploy-k8s-resources/prometheus_helm/prometheus-values.yaml: -------------------------------------------------------------------------------- 1 | server: 2 | extraFlags: 3 | - web.enable-remote-write-receiver 4 | extraArgs: 5 | enable-feature: native-histograms 6 | global: 7 | scrape_interval: 10s -------------------------------------------------------------------------------- /deploy-k8s-resources/redis-values.yaml: -------------------------------------------------------------------------------- 1 | auth: 2 | password: redispassword1 3 | 4 | architecture: standalone 5 | 6 | master: 7 | tolerations: 8 | - key: "dedicated" 9 | value: "kong" 10 | effect: "NoSchedule" -------------------------------------------------------------------------------- /deploy-k8s-resources/variables.tf: -------------------------------------------------------------------------------- 1 | variable "region" { 2 | default = "us-west-2" 3 | } 4 | 5 | variable "kong_enterprise" { 6 | description = "Use Kong Enterprise?" 7 | type = bool 8 | default = false 9 | } 10 | 11 | variable "kong_repository" { 12 | description = "Kong image repository" 13 | type = string 14 | default = "kong/kong" 15 | } 16 | 17 | variable "kong_version" { 18 | description = "Kong version to deploy" 19 | type = string 20 | default = "3.6" 21 | } 22 | 23 | variable "kong_effective_semver" { 24 | description = "Semantic version, required if using a kong_version that does not look like a semver, e.g. 'nightly'" 25 | type = string 26 | default = null 27 | } 28 | 29 | variable "kong_worker_processes" { 30 | 31 | description = "Number of nginx worker processes, set this to be the same as the number of CPU cores allocated to Kong" 32 | type = number 33 | default = 16 34 | } -------------------------------------------------------------------------------- /deploy-k8s-resources/versions.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | required_providers { 3 | helm = { 4 | source = "hashicorp/helm" 5 | version = "~> 2.8.0" 6 | } 7 | kubernetes = { 8 | source = "hashicorp/kubernetes" 9 | version = "~> 2.17.0" 10 | } 11 | aws = { 12 | source = "hashicorp/aws" 13 | version = "~> 4.52.0" 14 | } 15 | } 16 | required_version = "~> 1.3" 17 | } 18 | -------------------------------------------------------------------------------- /grafana.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kong/kong-gateway-performance-benchmark/2988eb41071bd0592c4546d4170b06f893738556/grafana.gif -------------------------------------------------------------------------------- /provision-eks-cluster/main.tf: -------------------------------------------------------------------------------- 1 | provider "aws" { 2 | region = var.region 3 | } 4 | 5 | # Filter out local zones, which are not currently supported 6 | # with managed node groups 7 | data "aws_availability_zones" "available" { 8 | filter { 9 | name = "opt-in-status" 10 | values = ["opt-in-not-required"] 11 | } 12 | } 13 | 14 | locals { 15 | cluster_name = "${var.cluster_name}-${random_string.suffix.result}" 16 | } 17 | 18 | resource "random_string" "suffix" { 19 | length = 8 20 | special = false 21 | } 22 | 23 | module "vpc" { 24 | source = "terraform-aws-modules/vpc/aws" 25 | version = "5.0.0" 26 | 27 | name = local.cluster_name 28 | 29 | cidr = "10.0.0.0/16" 30 | azs = slice(data.aws_availability_zones.available.names, 0, 3) 31 | 32 | private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"] 33 | public_subnets = ["10.0.4.0/24", "10.0.5.0/24", "10.0.6.0/24"] 34 | 35 | enable_nat_gateway = true 36 | single_nat_gateway = true 37 | enable_dns_hostnames = true 38 | 39 | public_subnet_tags = { 40 | "kubernetes.io/cluster/${local.cluster_name}" = "shared" 41 | "kubernetes.io/role/elb" = 1 42 | } 43 | 44 | private_subnet_tags = { 45 | "kubernetes.io/cluster/${local.cluster_name}" = "shared" 46 | "kubernetes.io/role/internal-elb" = 1 47 | } 48 | } 49 | 50 | module "eks" { 51 | source = "terraform-aws-modules/eks/aws" 52 | version = "19.15.3" 53 | 54 | cluster_name = local.cluster_name 55 | cluster_version = "1.27" 56 | 57 | vpc_id = module.vpc.vpc_id 58 | subnet_ids = module.vpc.private_subnets 59 | cluster_endpoint_public_access = true 60 | 61 | eks_managed_node_group_defaults = { 62 | ami_type = "AL2_x86_64" 63 | 64 | } 65 | # TODO: rename node groups, kong-perf-node-group-n 66 | eks_managed_node_groups = { 67 | one = { 68 | name = "node-group-1" 69 | 70 | instance_types = [var.instance_type] 71 | 72 | min_size = 1 73 | max_size = 3 74 | desired_size = 1 75 | } 76 | 77 | two = { 78 | name = "node-group-2" 79 | 80 | instance_types = [var.instance_type_kong] 81 | 82 | min_size = 1 83 | max_size = 2 84 | desired_size = 1 85 | 86 | taints = { 87 | dedicated = { 88 | key = "dedicated" 89 | value = "kong" 90 | effect = "NO_SCHEDULE" 91 | } 92 | } 93 | } 94 | } 95 | } 96 | 97 | 98 | # https://aws.amazon.com/blogs/containers/amazon-ebs-csi-driver-is-now-generally-available-in-amazon-eks-add-ons/ 99 | data "aws_iam_policy" "ebs_csi_policy" { 100 | arn = "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" 101 | } 102 | 103 | module "irsa-ebs-csi" { 104 | source = "terraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidc" 105 | version = "4.7.0" 106 | 107 | create_role = true 108 | role_name = "AmazonEKSTFEBSCSIRole-${module.eks.cluster_name}" 109 | provider_url = module.eks.oidc_provider 110 | role_policy_arns = [data.aws_iam_policy.ebs_csi_policy.arn] 111 | oidc_fully_qualified_subjects = ["system:serviceaccount:kube-system:ebs-csi-controller-sa"] 112 | } 113 | 114 | resource "aws_eks_addon" "ebs-csi" { 115 | cluster_name = module.eks.cluster_name 116 | addon_name = "aws-ebs-csi-driver" 117 | addon_version = "v1.20.0-eksbuild.1" 118 | service_account_role_arn = module.irsa-ebs-csi.iam_role_arn 119 | tags = { 120 | "eks_addon" = "ebs-csi" 121 | "terraform" = "true" 122 | } 123 | } -------------------------------------------------------------------------------- /provision-eks-cluster/outputs.tf: -------------------------------------------------------------------------------- 1 | output "cluster_endpoint" { 2 | description = "Endpoint for EKS control plane" 3 | value = module.eks.cluster_endpoint 4 | } 5 | 6 | output "cluster_security_group_id" { 7 | description = "Security group ids attached to the cluster control plane" 8 | value = module.eks.cluster_security_group_id 9 | } 10 | 11 | output "region" { 12 | description = "AWS region" 13 | value = var.region 14 | } 15 | 16 | output "cluster_name" { 17 | description = "Kubernetes Cluster Name" 18 | value = module.eks.cluster_name 19 | } 20 | -------------------------------------------------------------------------------- /provision-eks-cluster/terraform.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | 3 | required_providers { 4 | aws = { 5 | source = "hashicorp/aws" 6 | version = "~> 5.7.0" 7 | } 8 | 9 | random = { 10 | source = "hashicorp/random" 11 | version = "~> 3.5.1" 12 | } 13 | 14 | tls = { 15 | source = "hashicorp/tls" 16 | version = "~> 4.0.4" 17 | } 18 | 19 | cloudinit = { 20 | source = "hashicorp/cloudinit" 21 | version = "~> 2.3.2" 22 | } 23 | } 24 | 25 | required_version = "~> 1.3" 26 | } 27 | 28 | -------------------------------------------------------------------------------- /provision-eks-cluster/variables.tf: -------------------------------------------------------------------------------- 1 | variable "region" { 2 | description = "AWS region" 3 | type = string 4 | default = "us-west-2" 5 | } 6 | 7 | variable "cluster_name" { 8 | description = "EKS cluster name" 9 | type = string 10 | default = "kong-perf" 11 | } 12 | 13 | variable "instance_type" { 14 | description = "EKS node instance type" 15 | type = string 16 | default = "c5.metal" 17 | } 18 | 19 | variable "instance_type_kong" { 20 | description = "EKS node instance type for kong" 21 | type = string 22 | default = "c5.4xlarge" 23 | } --------------------------------------------------------------------------------