All Projects → kaidotdev → vegeta-controller

kaidotdev / vegeta-controller

Licence: MIT license
VegetaController is Kubernetes Custom Controller that allows distributed execution of tsenart/vegeta.

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to vegeta-controller

K8gb
A cloud native Kubernetes Global Balancer
Stars: ✭ 113 (+391.3%)
Mutual labels:  kubernetes-controller
Operators
Collection of Kubernetes Operators built with KUDO.
Stars: ✭ 175 (+660.87%)
Mutual labels:  kubernetes-controller
Chowkidar
A kubernetes controller that watches/observes events & then takes configured actions – [✩Star] if you're using it!
Stars: ✭ 55 (+139.13%)
Mutual labels:  kubernetes-controller
Kube Httpcache
Varnish Reverse Proxy on Kubernetes
Stars: ✭ 119 (+417.39%)
Mutual labels:  kubernetes-controller
Frameworkcontroller
General-Purpose Kubernetes Pod Controller
Stars: ✭ 139 (+504.35%)
Mutual labels:  kubernetes-controller
Bonny
The Elixir based Kubernetes Development Framework
Stars: ✭ 190 (+726.09%)
Mutual labels:  kubernetes-controller
Community
AWS Controllers for Kubernetes (ACK) is a project enabling you to manage AWS services from Kubernetes
Stars: ✭ 1,390 (+5943.48%)
Mutual labels:  kubernetes-controller
kotary
Managing Kubernetes Quota with confidence
Stars: ✭ 85 (+269.57%)
Mutual labels:  kubernetes-controller
Cronjobber
Cronjobber is a cronjob controller for Kubernetes with support for time zones
Stars: ✭ 169 (+634.78%)
Mutual labels:  kubernetes-controller
Skipper
An HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress
Stars: ✭ 2,606 (+11230.43%)
Mutual labels:  kubernetes-controller
Wordpress Operator
WordPress operator for Kubernetes
Stars: ✭ 127 (+452.17%)
Mutual labels:  kubernetes-controller
Kubernetes Reflector
Custom Kubernetes controller that can be used to replicate secrets, configmaps and certificates.
Stars: ✭ 129 (+460.87%)
Mutual labels:  kubernetes-controller
Rbacsync
Automatically sync groups into Kubernetes RBAC
Stars: ✭ 197 (+756.52%)
Mutual labels:  kubernetes-controller
Kubernetes Letsencrypt
A Kubernetes controller to retrieve Let's Encrypt certificates based on service annotations (unmaintained)
Stars: ✭ 117 (+408.7%)
Mutual labels:  kubernetes-controller
cf-k8s-networking
building a cloud foundry without gorouter....
Stars: ✭ 33 (+43.48%)
Mutual labels:  kubernetes-controller
Spark On K8s Operator
Kubernetes operator for managing the lifecycle of Apache Spark applications on Kubernetes.
Stars: ✭ 1,780 (+7639.13%)
Mutual labels:  kubernetes-controller
Dark
(grafana) Dashboards As Resources in Kubernetes
Stars: ✭ 190 (+726.09%)
Mutual labels:  kubernetes-controller
smartnat
Kubernetes controller to expose Services with TCP/UDP
Stars: ✭ 25 (+8.7%)
Mutual labels:  kubernetes-controller
vault-sidecar-injector
Kubernetes admission webhook for secure, seamless and dynamic handling of secrets in your applications
Stars: ✭ 55 (+139.13%)
Mutual labels:  kubernetes-controller
Strimzi Kafka Operator
Apache Kafka running on Kubernetes
Stars: ✭ 2,833 (+12217.39%)
Mutual labels:  kubernetes-controller

VegetaController

VegetaController is Kubernetes Custom Controller that allows distributed execution of tsenart/vegeta.

Installation

$ kubectl apply -k manifests

Usage

Applying the following manifest enables distributed execution of vegeta.

$ cat <<EOS | kubectl apply -f -
apiVersion: vegeta.kaidotdev.github.io/v1
kind: Attack
metadata:
  name: sample
spec:
  parallelism: 2
  scenario: |-
    GET http://httpbin/delay/1
    GET http://httpbin/delay/3
  output: text
EOS
$ kubectl get attack sample
NAME            AGE
sample   7s
$ kubectl get job sample-attack
NAME                COMPLETIONS   DURATION   AGE
sample-attack       0/1 of 2      10s        10s
$ kubectl get pod | grep attack-sample
sample-attack-7487s          1/1     Running   0          13s
sample-attack-z879t          1/1     Running   0          13s

$ kubectl logs -l app=sample-attack
Requests      [total, rate, throughput]  500, 50.10, 38.51
Duration      [total, attack, wait]      12.984487191s, 9.979884149s, 3.004603042s
Latencies     [mean, 50, 95, 99, max]    2.003985261s, 2.081863241s, 3.005786028s, 3.02320498s, 3.053911426s
Bytes In      [total, mean]              121500, 243.00
Bytes Out     [total, mean]              0, 0.00
Success       [ratio]                    100.00%
Status Codes  [code:count]               200:500
Error Set:
Requests      [total, rate, throughput]  500, 50.10, 38.51
Duration      [total, attack, wait]      12.982401798s, 9.979968589s, 3.002433209s
Latencies     [mean, 50, 95, 99, max]    2.002969191s, 2.068438165s, 3.004653479s, 3.01070406s, 3.032810373s
Bytes In      [total, mean]              121500, 243.00
Bytes Out     [total, mean]              0, 0.00
Success       [ratio]                    100.00%
Status Codes  [code:count]               200:500
Error Set:

You can also specify vegeta options via manifest,

apiVersion: vegeta.kaidotdev.github.io/v1
kind: Attack
metadata:
  name: sample
spec:
  parallelism: 2
  scenario: |-
    {"method":"GET","url":"http://httpbin/delay/1"}
    {"method":"GET","url":"http://httpbin/delay/3"}
  output: text
  option:
    duration: 10s
    rate: 10
    connections: 10000
    timeout: 10s
    workers: 10
    format: json

if you are using istio etc., you can control their sidecar through pod annotation.

apiVersion: vegeta.kaidotdev.github.io/v1
kind: Attack
metadata:
  name: sample
spec:
  parallelism: 2
  scenario: |-
    GET http://httpbin/delay/1
    GET http://httpbin/delay/3
  output: text
  template:
    metadata:
      labels:
        version: v1
      annotations:
        sidecar.istio.io/inject: "true"

See CRD for other available fields and detailed descriptions: vegeta.kaidotdev.github.io_attacks.yaml

How to develop

skaffold dev

$ make dev

Test

$ make test

Lint

$ make lint

Generate CRD from *_types.go by controller-gen

$ make gen
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].