istio-ratelimit-operator

Automatically create global & local rate limit in Istio, support EnvoyFilter versioning, ratelimit metrics, shadow mode, and ratelimit based on route!

https://github.com/zufardhiyaulhaq/istio-ratelimit-operator

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.3%) to scientific vocabulary

Keywords

api-gateway envoy istio kubernetes kubernetes-operator operator ratelimit ratelimit-operator service-mesh

Keywords from Contributors

interactive mesh interpretability sequences generic projection optim embedded hacking network-simulation
Last synced: 6 months ago · JSON representation ·

Repository

Automatically create global & local rate limit in Istio, support EnvoyFilter versioning, ratelimit metrics, shadow mode, and ratelimit based on route!

Basic Info
  • Host: GitHub
  • Owner: zufardhiyaulhaq
  • License: mit
  • Language: Go
  • Default Branch: master
  • Homepage:
  • Size: 747 KB
Statistics
  • Stars: 48
  • Watchers: 4
  • Forks: 10
  • Open Issues: 4
  • Releases: 25
Topics
api-gateway envoy istio kubernetes kubernetes-operator operator ratelimit ratelimit-operator service-mesh
Created over 4 years ago · Last pushed 8 months ago
Metadata Files
Readme Contributing Funding License Code of conduct Citation Codeowners

README.md

istio-ratelimit-operator

Istio ratelimit operator provide an easy way to configure Global or Local Ratelimit in Istio mesh. Istio ratelimit operator also support EnvoyFilter versioning!

Version: 2.15.0 Type: application AppVersion: 2.15.0 made with Go GitHub issues GitHub pull requestsArtifact Hub

Installation

To install the chart with the release name my-istio-ratelimit-operator:

console helm repo add istio-ratelimit-operator https://zufardhiyaulhaq.com/istio-ratelimit-operator/charts/releases/ helm install my-istio-ratelimit-operator istio-ratelimit-operator/istio-ratelimit-operator --version 2.15.0 --values values.yaml

Usage

  1. Apply Global ratelimit example console kubectl apply -f examples/global/gateway/ratelimitservice/

  2. Check Object ``` kubectl get GlobalRateLimitConfig NAME AGE istio-public-gateway 3m1s

kubectl get GlobalRateLimit NAME AGE helloworld-zufardhiyaulhaq-com-bar-route 2m57s helloworld-zufardhiyaulhaq-com-baz-route 2m56s helloworld-zufardhiyaulhaq-com-corge-route 2m53s helloworld-zufardhiyaulhaq-com-foo-route 2m57s helloworld-zufardhiyaulhaq-com-garply-route 2m51s helloworld-zufardhiyaulhaq-com-grault-route 2m52s helloworld-zufardhiyaulhaq-com-quux-route 2m54s helloworld-zufardhiyaulhaq-com-qux-route 2m55s

kubectl get RateLimitService NAME AGE public-gateway-ratelimit-service 2m33s ```

  1. Check EnvoyFilter ``` kubectl get envoyfilter NAME AGE helloworld-zufardhiyaulhaq-com-bar-route-1.8 3m7s helloworld-zufardhiyaulhaq-com-bar-route-1.9 3m7s helloworld-zufardhiyaulhaq-com-baz-route-1.8 3m7s helloworld-zufardhiyaulhaq-com-baz-route-1.9 3m6s helloworld-zufardhiyaulhaq-com-corge-route-1.8 3m8s helloworld-zufardhiyaulhaq-com-corge-route-1.9 3m4s helloworld-zufardhiyaulhaq-com-foo-route-1.8 3m8s helloworld-zufardhiyaulhaq-com-foo-route-1.9 3m7s helloworld-zufardhiyaulhaq-com-garply-route-1.8 3m10s helloworld-zufardhiyaulhaq-com-garply-route-1.9 3m8s helloworld-zufardhiyaulhaq-com-grault-route-1.8 3m10s helloworld-zufardhiyaulhaq-com-grault-route-1.9 3m7s helloworld-zufardhiyaulhaq-com-quux-route-1.8 3m9s helloworld-zufardhiyaulhaq-com-quux-route-1.9 3m5s helloworld-zufardhiyaulhaq-com-qux-route-1.8 3m11s helloworld-zufardhiyaulhaq-com-qux-route-1.9 3m6s

istio-public-gateway-1.8 3m11s istio-public-gateway-1.9 3m11s ```

  1. Check Ratelimit ``` kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE public-gateway-ratelimit-service ClusterIP 10.32.214.174 8080/TCP,8081/TCP,6070/TCP 4m17s

kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE public-gateway-ratelimit-service 2/2 2 2 4m53s

kubectl get configmap NAME DATA AGE public-gateway-ratelimit-service-config 1 5m14s public-gateway-ratelimit-service-config-env 4 5m14s

kubectl port-forward svc/public-gateway-ratelimit-service 6070:6070 curl http://127.0.0.1:6070/rlconfig

public-gateway.path.corge-routecorge-route: unit=HOUR requestsperunit=120 public-gateway.path.quux-routequux-route: unit=HOUR requestsperunit=60 public-gateway.method.garply-routegarply-route: unit=HOUR requestsperunit=120 public-gateway.method.path.bar-routebar-route: unit=HOUR requestsperunit=120 public-gateway.method.path.foo-routefoo-route: unit=HOUR requestsperunit=60 public-gateway.method.machineid.qux-routequx-route: unit=HOUR requestsperunit=90 public-gateway.method.machineid.baz-routebaz-route: unit=HOUR requestsperunit=90 public-gateway.method.grault-routegrault-route: unit=HOUR requestsperunit=60 ```

Values

| Key | Type | Default | Description | |-----|------|---------|-------------| | extraLabels | object | {} | | | operator.image | string | "zufardhiyaulhaq/istio-ratelimit-operator" | | | operator.replica | int | 1 | | | operator.tag | string | "v2.15.0" | | | resources.limits.cpu | string | "512m" | | | resources.limits.memory | string | "512Mi" | | | resources.requests.cpu | string | "256m" | | | resources.requests.memory | string | "256Mi" | | | serviceAccount.imagePullSecrets | list | [] | | | settings.ratelimitservice.image | string | "envoyproxy/ratelimit:5e1be594" | | | settings.statsdExporter.image | string | "prom/statsd-exporter:v0.26.1" | |

Supported Releases

| Operator Version | Istio Version | |-----|------| | 2.13.0 | <= 1.21.x | | 2.12.0 | <= 1.20.x | | 2.11.2 | <= 1.17.x | | 2.9.0 | <= 1.16.x | | 2.8.0 | <= 1.15.x | | 2.5.1 | <= 1.13.x |

Owner

  • Name: Zufar Dhiyaulhaq
  • Login: zufardhiyaulhaq
  • Kind: user
  • Location: Indonesia
  • Company: GoTo Financial

@gopaytech Engineering, @cloudnative-id lead organizer

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Dhiyaulhaq"
  given-names: "Zufar"
title: "Istio Ratelimit Operator"
version: 2.10.0
date-released: 2022-07-27
url: "https://github.com/zufardhiyaulhaq/istio-ratelimit-operator"

GitHub Events

Total
  • Create event: 2
  • Issues event: 1
  • Release event: 1
  • Watch event: 5
  • Push event: 6
  • Pull request event: 1
  • Fork event: 1
Last Year
  • Create event: 2
  • Issues event: 1
  • Release event: 1
  • Watch event: 5
  • Push event: 6
  • Pull request event: 1
  • Fork event: 1

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 79
  • Total Committers: 3
  • Avg Commits per committer: 26.333
  • Development Distribution Score (DDS): 0.063
Past Year
  • Commits: 8
  • Committers: 2
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.125
Top Committers
Name Email Commits
zufardhiyaulhaq z****q@g****m 74
dependabot[bot] 4****] 4
Andre Ferraz 3****z 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 9
  • Total pull requests: 35
  • Average time to close issues: 3 months
  • Average time to close pull requests: 8 days
  • Total issue authors: 7
  • Total pull request authors: 5
  • Average comments per issue: 1.89
  • Average comments per pull request: 0.46
  • Merged pull requests: 29
  • Bot issues: 0
  • Bot pull requests: 6
Past Year
  • Issues: 1
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: 9 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 2
Top Authors
Issue Authors
  • zufardhiyaulhaq (3)
  • WagnerCarvalho (1)
  • camilamacedo86 (1)
  • deferraz (1)
  • scrollins (1)
  • rs324 (1)
  • Abhishek627 (1)
Pull Request Authors
  • zufardhiyaulhaq (24)
  • dependabot[bot] (6)
  • deferraz (2)
  • rs324 (1)
  • gauravrautela (1)
  • el4v (1)
Top Labels
Issue Labels
enhancement (1) help wanted (1)
Pull Request Labels
dependencies (6) go (3) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 1
proxy.golang.org: github.com/zufardhiyaulhaq/istio-ratelimit-operator
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Stargazers count: 4.4%
Forks count: 4.7%
Average: 6.4%
Dependent packages count: 7.0%
Dependent repos count: 9.3%
Last synced: 6 months ago

Dependencies

go.mod go
  • github.com/Masterminds/semver v1.5.0
  • github.com/champly/lib4go v0.0.0-20210810011059-eb374f933ec2
  • github.com/go-lintpack/lintpack v0.5.2
  • github.com/gogo/protobuf v1.3.2
  • github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6
  • github.com/golangci/go-tools v0.0.0-20190318055746-e32c54105b7c
  • github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3
  • github.com/golangci/gocyclo v0.0.0-20180528134321-2becd97e67ee
  • github.com/golangci/golangci-lint v1.41.1
  • github.com/golangci/gosec v0.0.0-20190211064107-66fb7fc33547
  • github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc
  • github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21
  • github.com/klauspost/cpuid v1.2.0
  • github.com/norwoodj/helm-docs v1.10.0
  • github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7
  • github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4
  • github.com/stretchr/testify v1.7.0
  • github.com/thoas/go-funk v0.9.1
  • golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f
  • golang.org/x/tools v0.1.10
  • google.golang.org/protobuf v1.27.1
  • gopkg.in/airbrake/gobrake.v2 v2.0.9
  • gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2
  • gopkg.in/yaml.v2 v2.4.0
  • istio.io/api v0.0.0-20210910210758-d6ce87e3e159
  • istio.io/client-go v1.12.0-alpha.1
  • k8s.io/api v0.21.2
  • k8s.io/apimachinery v0.21.2
  • k8s.io/client-go v0.21.2
  • sigs.k8s.io/controller-runtime v0.9.2
  • sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4
go.sum go
  • 1553 dependencies
e2e/scripts/requirements.txt pypi
  • click *
  • requests *
Dockerfile docker
  • gcr.io/distroless/static nonroot build
  • golang 1.18 build
.github/workflows/master.yml actions
  • actions/checkout v2 composite
  • actions/setup-go v2 composite
  • actions/setup-python v2 composite
  • azure/setup-helm v1 composite
  • azure/setup-kubectl v1 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
  • github/codeql-action/analyze v1 composite
  • github/codeql-action/init v1 composite
  • nolar/setup-k3d-k3s v1 composite
  • py-actions/py-dependency-install v2 composite
  • yokawasa/action-setup-kube-tools v0.7.1 composite
  • zufardhiyaulhaq/setup-istioctl v1.0.0 composite
.github/workflows/publish.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
.github/workflows/pullrequest.yml actions
  • actions/checkout v2 composite
  • actions/setup-go v2 composite
  • actions/setup-python v2 composite
  • azure/setup-helm v1 composite
  • azure/setup-kubectl v1 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • nolar/setup-k3d-k3s v1 composite
  • py-actions/py-dependency-install v2 composite
  • yokawasa/action-setup-kube-tools v0.7.1 composite
  • zufardhiyaulhaq/setup-istioctl v1.0.0 composite