From fbb5ef118be62fa62636dbc1a0a4b8f319d9bc1b Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 22 Aug 2024 20:03:51 +0530 Subject: [PATCH 01/12] add kube-burner config Signed-off-by: Mangaal --- tools/kube-burner/config.yaml | 60 +++++++++++++++++++ tools/kube-burner/metric/ep.yaml | 7 +++ tools/kube-burner/metric/metrics-profile.yaml | 34 +++++++++++ .../sample-test-resource/deployment.yaml | 25 ++++++++ .../sample-test-resource/service.yaml | 14 +++++ tools/kube-burner/template/application.yaml | 16 +++++ tools/kube-burner/template/namespace.yaml | 6 ++ tools/kube-burner/template/role.yaml | 13 ++++ tools/kube-burner/template/rolebinding.yaml | 13 ++++ 9 files changed, 188 insertions(+) create mode 100644 tools/kube-burner/config.yaml create mode 100644 tools/kube-burner/metric/ep.yaml create mode 100644 tools/kube-burner/metric/metrics-profile.yaml create mode 100644 tools/kube-burner/sample-test-resource/deployment.yaml create mode 100644 tools/kube-burner/sample-test-resource/service.yaml create mode 100644 tools/kube-burner/template/application.yaml create mode 100644 tools/kube-burner/template/namespace.yaml create mode 100644 tools/kube-burner/template/role.yaml create mode 100644 tools/kube-burner/template/rolebinding.yaml diff --git a/tools/kube-burner/config.yaml b/tools/kube-burner/config.yaml new file mode 100644 index 0000000..8b5eafe --- /dev/null +++ b/tools/kube-burner/config.yaml @@ -0,0 +1,60 @@ +# Global configuration +global: + gc: false + +# Jobs configuration +jobs: + # Job to create Namespaces, Roles, and RoleBindings + - name: create-namespaces + jobIterations: 100 + namespace: kube-burner-argocd-test + namespacedIterations: true + cleanup: false + iterationsPerNamespace: 1 + qps: 50 # Increased qps to handle more requests + burst: 100 # Increased burst to allow higher initial throughput + objects: + - kind: Namespace + objectTemplate: template/namespace.yaml + replicas: 1 + - name: create-role + jobIterations: 100 + namespace: kube-burner-argocd-test + namespacedIterations: true + cleanup: false + iterationsPerNamespace: 1 + qps: 50 + burst: 100 + objects: + - kind: Role + objectTemplate: template/role.yaml + replicas: 1 + - name: create-rolebinding + jobIterations: 100 + namespace: kube-burner-argocd-test + namespacedIterations: true + cleanup: false + iterationsPerNamespace: 1 + qps: 50 + burst: 100 + objects: + - kind: RoleBinding + objectTemplate: template/rolebinding.yaml + replicas: 1 + # Job to create ArgoCD applications + - name: create-applications + jobIterations: 100 + namespace: kube-burner-argocd-test + namespacedIterations: true + cleanup: false + iterationsPerNamespace: 1 + waitWhenFinished: true + qps: 50 + burst: 100 + objects: + - kind: Application + objectTemplate: template/application.yaml + replicas: 1 + waitOptions: + kind: Deployment + labelSelector: {kube-burner: argocd-performance-test} diff --git a/tools/kube-burner/metric/ep.yaml b/tools/kube-burner/metric/ep.yaml new file mode 100644 index 0000000..4f04467 --- /dev/null +++ b/tools/kube-burner/metric/ep.yaml @@ -0,0 +1,7 @@ +- endpoint: + token: "" + metrics: + - metric/metrics-profile.yaml + indexer: + type: local + metricsDirectory: my-metrics \ No newline at end of file diff --git a/tools/kube-burner/metric/metrics-profile.yaml b/tools/kube-burner/metric/metrics-profile.yaml new file mode 100644 index 0000000..62d5e42 --- /dev/null +++ b/tools/kube-burner/metric/metrics-profile.yaml @@ -0,0 +1,34 @@ +# Metrics Profile for ArgoCD Performance Testing + +# CPU Usage of ArgoCD Application Controller +- query: irate(process_cpu_seconds_total{container="argocd-application-controller",namespace=~".+"}[1m]) + metricName: argocdAppControllerCPU + +# Memory Usage of ArgoCD Application Controller +- query: go_memstats_heap_alloc_bytes{container="argocd-application-controller",namespace=~".+"} + metricName: argocdAppControllerHeapAllocMemory + +- query: go_memstats_heap_inuse_bytes{container="argocd-application-controller",namespace=~".+"} + metricName: argocdAppControllerHeapInuseMemory + + +# Number of k8s resource objects in the cache +- query: sum(argocd_cluster_api_resource_objects{namespace=~".+"}) + metricName: argocdClusterApiResourceObjects + +# Number of monitored Kubernetes API resources +- query: sum(argocd_cluster_api_resources{namespace=~".+"}) + metricName: argocdClusterApiResources + +# Total IO Operations of ArgoCD Application Controller +- query: sum(rate(container_fs_reads_total{pod=~"openshift-gitops-application-controller-.*",namespace=~".+"}[1m]))+ sum(rate(container_fs_writes_total{pod=~"openshift-gitops-application-controller-.*",namespace=~".+"}[1m])) + metricName: argocdAppControllerIO + + +# ArgoCD Pending Kubectl Exec +- query: sum(argocd_kubectl_exec_pending{namespace=~".+"}) + metricName: argocdPendingKubectlExec + + + + diff --git a/tools/kube-burner/sample-test-resource/deployment.yaml b/tools/kube-burner/sample-test-resource/deployment.yaml new file mode 100644 index 0000000..bb52860 --- /dev/null +++ b/tools/kube-burner/sample-test-resource/deployment.yaml @@ -0,0 +1,25 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + kube-burner: argocd-performance-test + app: bubble-animation + name: bubble-animation +spec: + replicas: 1 + selector: + matchLabels: + app: bubble-animation + strategy: {} + template: + metadata: + labels: + app: bubble-animation + spec: + containers: + - image: quay.io/rhdevelopers/bgd:1.0.0 + name: bubble-animation + env: + - name: COLOR + value: "blue" diff --git a/tools/kube-burner/sample-test-resource/service.yaml b/tools/kube-burner/sample-test-resource/service.yaml new file mode 100644 index 0000000..3f38923 --- /dev/null +++ b/tools/kube-burner/sample-test-resource/service.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: bubble-animation + name: bubble-animation +spec: + ports: + - port: 8081 + protocol: TCP + targetPort: 8080 + selector: + app: bubble-animation diff --git a/tools/kube-burner/template/application.yaml b/tools/kube-burner/template/application.yaml new file mode 100644 index 0000000..d0909c7 --- /dev/null +++ b/tools/kube-burner/template/application.yaml @@ -0,0 +1,16 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: app-{{.Iteration}} + namespace: +spec: + project: default + source: + repoURL: https://github.com/Mangaal/argocd-performance-test + targetRevision: HEAD + path: test-resources + destination: + server: https://kubernetes.default.svc + namespace: argocd-test-{{.Iteration}} + syncPolicy: + automated: {} diff --git a/tools/kube-burner/template/namespace.yaml b/tools/kube-burner/template/namespace.yaml new file mode 100644 index 0000000..ac1342a --- /dev/null +++ b/tools/kube-burner/template/namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + labels: + argocd.argoproj.io/managed-by: + name: argocd-test-{{.Iteration}} diff --git a/tools/kube-burner/template/role.yaml b/tools/kube-burner/template/role.yaml new file mode 100644 index 0000000..73cfa3c --- /dev/null +++ b/tools/kube-burner/template/role.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: argocd-role + namespace: argocd-test-{{.Iteration}} +rules: + - apiGroups: [""] + resources: ["services"] + verbs: ["create", "get", "list", "watch", "update", "patch", "delete"] + - apiGroups: ["apps"] + resources: ["deployments"] + verbs: ["create", "get", "list", "watch", "update", "patch", "delete"] + diff --git a/tools/kube-burner/template/rolebinding.yaml b/tools/kube-burner/template/rolebinding.yaml new file mode 100644 index 0000000..f9a2939 --- /dev/null +++ b/tools/kube-burner/template/rolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: argocd-rolebinding + namespace: argocd-test-{{.Iteration}} +subjects: + - kind: ServiceAccount + name: + namespace: +roleRef: + kind: Role + name: argocd-role + apiGroup: rbac.authorization.k8s.io From 2a48f481ec758f8e1fbd169690de39d886ff43e8 Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 22 Aug 2024 20:28:12 +0530 Subject: [PATCH 02/12] add readme for kube-burner Signed-off-by: Mangaal --- tools/kube-burner/readme.md | 166 ++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 tools/kube-burner/readme.md diff --git a/tools/kube-burner/readme.md b/tools/kube-burner/readme.md new file mode 100644 index 0000000..499f7b0 --- /dev/null +++ b/tools/kube-burner/readme.md @@ -0,0 +1,166 @@ +# ArgoCD Performance Testing with Kube-Burner + +This repository contains the configuration used to test ArgoCD's performance when managing multiple applications across different namespaces. + +## Prerequisites + +- **ArgoCD Installation**: Ensure that ArgoCD is installed and configured in your cluster. +- **OpenShift Cluster**: This setup is designed for an OpenShift cluster, but it should work on any Kubernetes-compatible environment. + +## Why Use Kube-Burner? + +[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a versatile tool that creates resources, waits for them to reach a desired state, and collects relevant metrics. This makes it ideal for performance testing and benchmarking. While Kube-Burner cannot directly check or wait for ArgoCD applications to sync, it can monitor the child resources created by ArgoCD using labels and collect the necessary metrics. + +### Wait Configuration Example + +The following example illustrates the wait configuration used in this setup: + +```yaml +objects: + - kind: Application + objectTemplate: template/application.yaml + replicas: 1 + waitOptions: + kind: Deployment + labelSelector: {kube-burner: argocd-performance-test} + ``` + +### Kube-Burner Configuration Details + +#### Metrics Profile + +The metric/metrics-profile.yaml file defines the metrics profile for ArgoCD performance testing, capturing essential metrics: + +- ***CPU Usage of ArgoCD Application Controller:*** +``` +- query: irate(process_cpu_seconds_total{container="argocd-application-controller",namespace=~".+"}[1m]) + metricName: argocdAppControllerCPU +``` +- ***Memory Usage of ArgoCD Application Controller:*** +``` +- query: go_memstats_heap_alloc_bytes{container="argocd-application-controller",namespace=~".+"} + metricName: argocdAppControllerHeapAllocMemory + +- query: go_memstats_heap_inuse_bytes{container="argocd-application-controller",namespace=~".+"} + metricName: argocdAppControllerHeapInuseMemory +``` +- ***Number of Kubernetes Resource Objects in the Cache:*** +``` +- query: sum(argocd_cluster_api_resource_objects{namespace=~".+"}) + metricName: argocdClusterApiResourceObjects +``` +- ***Number of Monitored Kubernetes API Resources:*** +``` +- query: sum(argocd_cluster_api_resources{namespace=~".+"}) + metricName: argocdClusterApiResources +``` +- ***Total IO Operations of ArgoCD Application Controller:*** +``` +- query: sum(rate(container_fs_reads_total{pod=~"openshift-gitops-application-controller-.*",namespace=~".+"}[1m])) + sum(rate(container_fs_writes_total{pod=~"openshift-gitops-application-controller-.*",namespace=~".+"}[1m])) + metricName: argocdAppControllerIO +``` +- ***ArgoCD Pending Kubectl Exec:*** +``` +- query: sum(argocd_kubectl_exec_pending{namespace=~".+"}) + metricName: argocdPendingKubectlExec +``` + +### Sample Metrics Data + +Below is a sample of metrics data collected using Kube-Burner: + +```json +[ + { + "timestamp": "2024-08-22T10:17:39.867Z", + "labels": { + "container": "argocd-application-controller", + "endpoint": "metrics", + "instance": "10.131.1.218:8082", + "job": "openshift-gitops-metrics", + "namespace": "openshift-gitops", + "pod": "openshift-gitops-application-controller-0", + "service": "openshift-gitops-metrics" + }, + "value": 1281433176, + "uuid": "1234", + "query": "go_memstats_heap_alloc_bytes{container=\"argocd-application-controller\",namespace=~\".+\"}", + "metricName": "argocdAppControllerHeapAllocMemory", + "jobName": "create-applications" + }, + { + "timestamp": "2024-08-22T10:16:53.241Z", + "labels": { + "container": "argocd-application-controller", + "endpoint": "metrics", + "instance": "10.131.1.218:8082", + "job": "openshift-gitops-metrics", + "namespace": "openshift-gitops", + "pod": "openshift-gitops-application-controller-0", + "service": "openshift-gitops-metrics" + }, + "value": 188994960, + "uuid": "1234", + "query": "go_memstats_heap_alloc_bytes{container=\"argocd-application-controller\",namespace=~\".+\"}", + "metricName": "argocdAppControllerHeapAllocMemory", + "jobName": "create-namespaces" + }, + { + "timestamp": "2024-08-22T10:17:04.303Z", + "labels": { + "container": "argocd-application-controller", + "endpoint": "metrics", + "instance": "10.131.1.218:8082", + "job": "openshift-gitops-metrics", + "namespace": "openshift-gitops", + "pod": "openshift-gitops-application-controller-0", + "service": "openshift-gitops-metrics" + }, + "value": 202814368, + "uuid": "1234", + "query": "go_memstats_heap_alloc_bytes{container=\"argocd-application-controller\",namespace=~\".+\"}", + "metricName": "argocdAppControllerHeapAllocMemory", + "jobName": "create-role" + } +] +``` + +### Metric Endpoint Configuration + +To configure metric collection, update the metric/ep.yaml file as follows: +``` +endpoint: +token: "" +metrics: + - metric/metrics-profile.yaml # Path to the metrics query profile +indexer: + type: local + metricsDirectory: my-metrics # Directory where metrics will be collected +``` +Replace with the appropriate endpoint for your setup. + +### Template Customization + +Customize the YAML templates in the kube-burner-config/template directory before deployment: + +- application.yaml: Update the namespace field with ``````. + +- namespace.yaml: +``` +labels: + argocd.argoproj.io/managed-by: +``` +- rolebinding.yaml: +``` +subjects: + - kind: ServiceAccount + name: + namespace: +``` + +Replace `````` and `````` with the values relevant to your environment. + +### Deploying the Test Setup +To deploy the applications and start the performance test, navigate to the kube-burner directory and execute: + +``` kube-burner init -c config.yaml -e metric/ep.yaml ``` From a0a667cd9cb204fab037814b1ddadcbff133b15e Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 22 Aug 2024 20:39:41 +0530 Subject: [PATCH 03/12] add readme for kube-burner Signed-off-by: Mangaal --- tools/kube-burner/readme.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/kube-burner/readme.md b/tools/kube-burner/readme.md index 499f7b0..e6c7c55 100644 --- a/tools/kube-burner/readme.md +++ b/tools/kube-burner/readme.md @@ -1,11 +1,12 @@ # ArgoCD Performance Testing with Kube-Burner -This repository contains the configuration used to test ArgoCD's performance when managing multiple applications across different namespaces. +This repository contains the configuration that is used to test ArgoCD's performance when managing multiple applications across different namespaces. ## Prerequisites - **ArgoCD Installation**: Ensure that ArgoCD is installed and configured in your cluster. - **OpenShift Cluster**: This setup is designed for an OpenShift cluster, but it should work on any Kubernetes-compatible environment. +- **Kube-Burner**: Install Kube-Burner for resource creation and metrics collection. You can find installation instructions on the [Kube-Burner GitHub page](https://github.com/kube-burner/kube-burner). ## Why Use Kube-Burner? @@ -128,7 +129,7 @@ Below is a sample of metrics data collected using Kube-Burner: ### Metric Endpoint Configuration To configure metric collection, update the metric/ep.yaml file as follows: -``` +```yaml endpoint: token: "" metrics: @@ -141,17 +142,17 @@ Replace with the appropriate endpoint for your setup. ### Template Customization -Customize the YAML templates in the kube-burner-config/template directory before deployment: +Customize the YAML templates in the template directory before deployment: - application.yaml: Update the namespace field with ``````. - namespace.yaml: -``` +```yaml labels: argocd.argoproj.io/managed-by: ``` - rolebinding.yaml: -``` +```yaml subjects: - kind: ServiceAccount name: @@ -161,6 +162,6 @@ subjects: Replace `````` and `````` with the values relevant to your environment. ### Deploying the Test Setup -To deploy the applications and start the performance test, navigate to the kube-burner directory and execute: +To deploy and start the performance test, navigate to the kube-burner directory and execute: ``` kube-burner init -c config.yaml -e metric/ep.yaml ``` From 16fe9f2d202e294f12a0abe1aeb7976d9527995d Mon Sep 17 00:00:00 2001 From: Mangaal Date: Tue, 3 Sep 2024 12:04:36 +0530 Subject: [PATCH 04/12] remove unwanted fields Signed-off-by: Mangaal --- tools/kube-burner/config.yaml | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/tools/kube-burner/config.yaml b/tools/kube-burner/config.yaml index 8b5eafe..26bf215 100644 --- a/tools/kube-burner/config.yaml +++ b/tools/kube-burner/config.yaml @@ -7,36 +7,27 @@ jobs: # Job to create Namespaces, Roles, and RoleBindings - name: create-namespaces jobIterations: 100 - namespace: kube-burner-argocd-test - namespacedIterations: true cleanup: false - iterationsPerNamespace: 1 - qps: 50 # Increased qps to handle more requests - burst: 100 # Increased burst to allow higher initial throughput + qps: 10 # Increased qps to handle more requests + burst: 50 # Increased burst to allow higher initial throughput objects: - kind: Namespace objectTemplate: template/namespace.yaml replicas: 1 - name: create-role jobIterations: 100 - namespace: kube-burner-argocd-test - namespacedIterations: true cleanup: false - iterationsPerNamespace: 1 - qps: 50 - burst: 100 + qps: 10 + burst: 50 objects: - kind: Role objectTemplate: template/role.yaml replicas: 1 - name: create-rolebinding jobIterations: 100 - namespace: kube-burner-argocd-test - namespacedIterations: true cleanup: false - iterationsPerNamespace: 1 - qps: 50 - burst: 100 + qps: 10 + burst: 50 objects: - kind: RoleBinding objectTemplate: template/rolebinding.yaml @@ -44,13 +35,10 @@ jobs: # Job to create ArgoCD applications - name: create-applications jobIterations: 100 - namespace: kube-burner-argocd-test - namespacedIterations: true cleanup: false - iterationsPerNamespace: 1 waitWhenFinished: true - qps: 50 - burst: 100 + qps: 10 + burst: 50 objects: - kind: Application objectTemplate: template/application.yaml From 196a1155009099126c4fd27582cbc83b3e907d5f Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:29:08 +0530 Subject: [PATCH 05/12] update kube-burner config for argocd application Signed-off-by: Mangaal --- tools/kube-burner/config.yaml | 4 ++-- tools/kube-burner/readme.md | 2 +- tools/kube-burner/template/application.yaml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/kube-burner/config.yaml b/tools/kube-burner/config.yaml index 26bf215..ae2b2b9 100644 --- a/tools/kube-burner/config.yaml +++ b/tools/kube-burner/config.yaml @@ -44,5 +44,5 @@ jobs: objectTemplate: template/application.yaml replicas: 1 waitOptions: - kind: Deployment - labelSelector: {kube-burner: argocd-performance-test} + forCondition: "Synced" + customStatusPath: ".operationState.syncResult.resources[].status" diff --git a/tools/kube-burner/readme.md b/tools/kube-burner/readme.md index e6c7c55..7becf6a 100644 --- a/tools/kube-burner/readme.md +++ b/tools/kube-burner/readme.md @@ -10,7 +10,7 @@ This repository contains the configuration that is used to test ArgoCD's perform ## Why Use Kube-Burner? -[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a versatile tool that creates resources, waits for them to reach a desired state, and collects relevant metrics. This makes it ideal for performance testing and benchmarking. While Kube-Burner cannot directly check or wait for ArgoCD applications to sync, it can monitor the child resources created by ArgoCD using labels and collect the necessary metrics. +[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a versatile tool that creates resources, waits for them to reach a desired state, and collects relevant metrics. This makes it ideal for performance testing and benchmarking. In the context of ArgoCD, Kube-Burner can efficiently manage the lifecycle of ArgoCD applications by creating them based on predefined templates, waiting for their status to meet specific conditions (such as synchronization), and gathering key metrics. For example, the configuration below specifies the creation of ArgoCD Application resources, waits until they are in a "Synced" state using the customStatusPath for detailed status checks, and collects relevant metrics for performance analysis: ### Wait Configuration Example diff --git a/tools/kube-burner/template/application.yaml b/tools/kube-burner/template/application.yaml index d0909c7..7270628 100644 --- a/tools/kube-burner/template/application.yaml +++ b/tools/kube-burner/template/application.yaml @@ -6,9 +6,9 @@ metadata: spec: project: default source: - repoURL: https://github.com/Mangaal/argocd-performance-test + repoURL: https://github.com/argoproj-labs/argocd-performance-test targetRevision: HEAD - path: test-resources + path: tools/kube-burner/sample-test-resource destination: server: https://kubernetes.default.svc namespace: argocd-test-{{.Iteration}} From 0a50041654f5f6c6c82b77c225eaa0bf118a055a Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:32:32 +0530 Subject: [PATCH 06/12] update readme Signed-off-by: Mangaal --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3ad2d14..1f93227 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,8 @@ This tooling is built on nodejs and utilizes various AWS tools to deploy and run * [Argo Workflows Controller Scalability Testing on Amazon EKS](https://cnoe.io/blog/argo-workflow-scalability) * [Adobe/AWS: Key Takeaways from Scaling Adobe's CI/CD Solution to Support 50K Argo CD Apps ](https://www.youtube.com/watch?v=7yVXMCX62tY) +### [Kube-Burner](./tools/kube-burner) + +[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](./tools/kube-burner/README.md). + From 9c6d9a745aaf731fd95b508436edaeade87f37fc Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:35:00 +0530 Subject: [PATCH 07/12] update readme Signed-off-by: Mangaal --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1f93227..f37fa03 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Current Tools -### ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) +###ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) This tooling is built on nodejs and utilizes various AWS tools to deploy and run benchmarks for both ArgoCD and ArgoWorkflows on Amazon EKS. This is the same tooling utilized to capture data for the following blog posts/talks: * [Argo CD Application Controller Scalability Testing on Amazon EKS](https://aws.amazon.com/blogs/opensource/argo-cd-application-controller-scalability-testing-on-amazon-eks/) @@ -10,8 +10,8 @@ This tooling is built on nodejs and utilizes various AWS tools to deploy and run * [Argo Workflows Controller Scalability Testing on Amazon EKS](https://cnoe.io/blog/argo-workflow-scalability) * [Adobe/AWS: Key Takeaways from Scaling Adobe's CI/CD Solution to Support 50K Argo CD Apps ](https://www.youtube.com/watch?v=7yVXMCX62tY) -### [Kube-Burner](./tools/kube-burner) +### Kube-Burner - [Link](tools/kube-burner) -[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](./tools/kube-burner/README.md). +[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](tools/kube-burner/README.md). From 18f86370559921f1187fcc812604ea4cbe500709 Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:35:36 +0530 Subject: [PATCH 08/12] update readme Signed-off-by: Mangaal --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f37fa03..03ed33d 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Current Tools -###ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) +### ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) This tooling is built on nodejs and utilizes various AWS tools to deploy and run benchmarks for both ArgoCD and ArgoWorkflows on Amazon EKS. This is the same tooling utilized to capture data for the following blog posts/talks: * [Argo CD Application Controller Scalability Testing on Amazon EKS](https://aws.amazon.com/blogs/opensource/argo-cd-application-controller-scalability-testing-on-amazon-eks/) From a0d8d3e40002f4968afc6301d6fd622d67c84ac9 Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:36:08 +0530 Subject: [PATCH 09/12] update readme Signed-off-by: Mangaal --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 03ed33d..93d7afc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Current Tools -### ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) +### 1 ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) This tooling is built on nodejs and utilizes various AWS tools to deploy and run benchmarks for both ArgoCD and ArgoWorkflows on Amazon EKS. This is the same tooling utilized to capture data for the following blog posts/talks: * [Argo CD Application Controller Scalability Testing on Amazon EKS](https://aws.amazon.com/blogs/opensource/argo-cd-application-controller-scalability-testing-on-amazon-eks/) @@ -10,7 +10,7 @@ This tooling is built on nodejs and utilizes various AWS tools to deploy and run * [Argo Workflows Controller Scalability Testing on Amazon EKS](https://cnoe.io/blog/argo-workflow-scalability) * [Adobe/AWS: Key Takeaways from Scaling Adobe's CI/CD Solution to Support 50K Argo CD Apps ](https://www.youtube.com/watch?v=7yVXMCX62tY) -### Kube-Burner - [Link](tools/kube-burner) +### 2 Kube-Burner - [Link](tools/kube-burner) [Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](tools/kube-burner/README.md). From 1cb8fe1448c811270df9daf957b97c580a5a992d Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:36:51 +0530 Subject: [PATCH 10/12] update readme Signed-off-by: Mangaal --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 93d7afc..e189df3 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Current Tools -### 1 ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) +### 1. ArgoCD/ArgoWorkflows tooling based on Amazon EKS - [Link](tools/awsbenchmarking-nodejs) This tooling is built on nodejs and utilizes various AWS tools to deploy and run benchmarks for both ArgoCD and ArgoWorkflows on Amazon EKS. This is the same tooling utilized to capture data for the following blog posts/talks: * [Argo CD Application Controller Scalability Testing on Amazon EKS](https://aws.amazon.com/blogs/opensource/argo-cd-application-controller-scalability-testing-on-amazon-eks/) @@ -10,7 +10,7 @@ This tooling is built on nodejs and utilizes various AWS tools to deploy and run * [Argo Workflows Controller Scalability Testing on Amazon EKS](https://cnoe.io/blog/argo-workflow-scalability) * [Adobe/AWS: Key Takeaways from Scaling Adobe's CI/CD Solution to Support 50K Argo CD Apps ](https://www.youtube.com/watch?v=7yVXMCX62tY) -### 2 Kube-Burner - [Link](tools/kube-burner) +### 2. Kube-Burner - [Link](tools/kube-burner) [Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](tools/kube-burner/README.md). From 3ca6f19453575817fb3d3d2b048695d210790cd8 Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:38:01 +0530 Subject: [PATCH 11/12] update readme Signed-off-by: Mangaal --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e189df3..56a2b5c 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,6 @@ This tooling is built on nodejs and utilizes various AWS tools to deploy and run ### 2. Kube-Burner - [Link](tools/kube-burner) -[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](tools/kube-burner/README.md). +[Kube-Burner](https://kube-burner.github.io/kube-burner/latest/) is a resource creation and metrics collection tool. It is used to test ArgoCD performance by creating multiple ArgoCD Applications and collecting performance metrics such as CPU, memory, and API server requests. For detailed setup and usage, check the [Kube-Burner README](tools/kube-burner/readme.md). From c18d19d29b77b0cc384b1139a341c75ccbb9784b Mon Sep 17 00:00:00 2001 From: Mangaal Date: Thu, 3 Oct 2024 12:52:04 +0530 Subject: [PATCH 12/12] update readme Signed-off-by: Mangaal --- tools/kube-burner/readme.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/kube-burner/readme.md b/tools/kube-burner/readme.md index 7becf6a..0374fc7 100644 --- a/tools/kube-burner/readme.md +++ b/tools/kube-burner/readme.md @@ -18,12 +18,12 @@ The following example illustrates the wait configuration used in this setup: ```yaml objects: - - kind: Application - objectTemplate: template/application.yaml - replicas: 1 - waitOptions: - kind: Deployment - labelSelector: {kube-burner: argocd-performance-test} + - kind: Application + objectTemplate: template/application.yaml + replicas: 1 + waitOptions: + forCondition: "Synced" + customStatusPath: ".operationState.syncResult.resources[].status" ``` ### Kube-Burner Configuration Details