Puncte:0

Limita globală a ratei Istio TCP

drapel in

Încerc să implementez o limită globală de rată pentru conexiunile tcp prin gateway-ul de intrare istio.Am urmat documentele oficiale pentru implementarea unui serviciu global de limitare a ratei http și am reușit să-l fac să funcționeze https://istio.io/latest/docs/tasks/policy-enforcement/rate-limit/, dar nu gestionează conexiunile TCP.

Iată configurațiile limitei ratei http

apiVersion: networking.istio.io/v1alpha3
fel: EnvoyFilter
metadate:
  nume: filter-ratelimit
  #namespace: istio-ingress
specificație:
  workloadSelector:
    # selectați după etichetă în același spațiu de nume
    etichete:
      istio: intrare
  configPatches:
    # Configurația Envoy pe care doriți să o modificați
    - applyTo: HTTP_FILTER
      Meci:
        context: GATEWAY
        ascultător:
          filterChain:
            filtru:
              nume: „envoy.filters.network.http_connection_manager”
              subfiltru:
                nume: „envoy.filters.http.router”
      plasture:
        operațiune: INSERT_BEFORE
        # Adaugă filtrul Envoy Rate Limit în lanțul de filtre HTTP.
        valoare:
          nume: envoy.filters.http.ratelimit
          typed_config:
            „@type”: type.googleapis.com/envoy.extensions.filters.http.ratelimit.v3.RateLimit
            # domeniul poate fi orice! Potriviți-l cu configurația serviciului ratelimter
            domeniu: ctfd-ratelimit
            failure_mode_deny: adevărat
            timeout: 10s
            rate_limit_service:
              grpc_service:
                envoy_grpc:
                  nume_cluster: rate_limit_cluster
                timeout: 10s
              transport_api_version: V3
    - applyTo: CLUSTER
      Meci:
        context: GATEWAY
        cluster:
          serviciu: ratelimit.istio-ingress.svc.cluster.local
      plasture:
        operațiune: ADD
        # Adaugă clusterul de servicii cu limită de rată pentru serviciul cu limită de rată definit la pasul 1.
        valoare:
          nume: rate_limit_cluster
          tip: STRICT_DNS
          connect_timeout: 10s
          lb_policy: ROUND_ROBIN
          http2_protocol_options: {}
          load_assignment:
            nume_cluster: rate_limit_cluster
            puncte finale:
            - lb_endpoints:
              - punct final:
                  abordare:
                    adresa_socket:
                      adresa: ratelimit.istio-ingress.svc.cluster.local
                      valoarea_portului: 8081
apiVersion: networking.istio.io/v1alpha3
fel: EnvoyFilter
metadate:
  nume: filter-ratelimit-svc
  #namespace: istio-ingress
specificație:
  workloadSelector:
    etichete:
      istio: intrare
  configPatches:
    - aplicați la: VIRTUAL_HOST
      Meci:
        context: GATEWAY
        routeConfiguration:
          vhost:
            Nume: ""
            traseu:
              acțiune: ORICE
      plasture:
        operațiune: MERGE
        # Aplică regulile limitei ratei.
        valoare:
          rate_limits:
            - acțiuni: # orice acțiuni aici
              - request_headers:
                  header_name: ":cale"
                  descriptor_key: „CALEA”
apiVersion: v1
fel: ConfigMap
metadate:
  nume: ratelimit-config
date:
  config.yaml: |
    domeniu: tcp-ratelimit
    descriptori:
      - cheie: CALEA
        rate_limit:
          unitate: minut
          cereri_per_unitate: 1

Am început să schimb referințele filtrului Envoy pentru a fi mai bazate pe rețea, dar nu sunt sigur ce altceva îmi lipsește sau dacă acesta este chiar modul corect de a proceda. Iată ce am schimbat până acum față de configurația anterioară

apiVersion: networking.istio.io/v1alpha3
fel: EnvoyFilter
metadate:
  nume: filter-ratelimit
  #namespace: istio-ingress
specificație:
  workloadSelector:
    # selectați după etichetă în același spațiu de nume
    etichete:
      istio: intrare
  configPatches:
    # Configurația Envoy pe care doriți să o modificați
    - applyTo: NETWORK_FILTER
      Meci:
        context: GATEWAY
        ascultător:
          filterChain:
            filtru:
              nume: „envoy.filters.network.ratelimit”
      plasture:
        operațiune: INSERT_BEFORE
        # Adaugă filtrul Envoy Rate Limit în lanțul de filtre HTTP.
        valoare:
          nume: envoy.filters.network.ratelimit
          typed_config:
            „@type”: type.googleapis.com/envoy.extensions.filters.network.ratelimit.v3.RateLimit
            # domeniul poate fi orice! Potriviți-l cu configurația serviciului ratelimter
            domeniu: tcp-ratelimit
            failure_mode_deny: adevărat
            timeout: 10s
            rate_limit_service:
              grpc_service:
                envoy_grpc:
                  nume_cluster: rate_limit_cluster
                timeout: 10s
              transport_api_version: V3
    - applyTo: CLUSTER
      Meci:
        context: GATEWAY
        cluster:
          serviciu: ratelimit.istio-ingress.svc.cluster.local
      plasture:
        operațiune: ADD
        # Adaugă clusterul de servicii cu limită de rată pentru serviciul cu limită de rată definit la pasul 1.
        valoare:
          nume: rate_limit_cluster
          tip: STRICT_DNS
          connect_timeout: 10s
          lb_policy: ROUND_ROBIN
          http2_protocol_options: {}
          load_assignment:
            nume_cluster: rate_limit_cluster
            puncte finale:
            - lb_endpoints:
              - punct final:
                  abordare:
                    adresa_socket:
                      adresa: ratelimit.istio-ingress.svc.cluster.local
                      valoarea_portului: 8081

Este chiar posibil ceea ce încerc să fac?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.