| # Copyright Istio Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| ################################################################################################## |
| # Redis service and deployment |
| # Ratelimit service and deployment |
| |
| # Note: a configmap is needed to make the rate limit deployment work properly, for example: |
| # |
| # apiVersion: v1 |
| # kind: ConfigMap |
| # metadata: |
| # name: ratelimit-config |
| # data: |
| # config.yaml: | |
| # domain: echo-ratelimit |
| # descriptors: |
| # - key: PATH |
| # value: "/" |
| # rate_limit: |
| # unit: minute |
| # requests_per_unit: 1 |
| # - key: PATH |
| # rate_limit: |
| # unit: minute |
| # requests_per_unit: 100 |
| ################################################################################################## |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: redis |
| labels: |
| app: redis |
| spec: |
| ports: |
| - name: redis |
| port: 6379 |
| selector: |
| app: redis |
| --- |
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| name: redis |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| app: redis |
| template: |
| metadata: |
| labels: |
| app: redis |
| spec: |
| containers: |
| - image: redis:alpine |
| imagePullPolicy: Always |
| name: redis |
| ports: |
| - name: redis |
| containerPort: 6379 |
| restartPolicy: Always |
| serviceAccountName: "" |
| --- |
| apiVersion: v1 |
| kind: Service |
| metadata: |
| name: ratelimit |
| labels: |
| app: ratelimit |
| spec: |
| ports: |
| - name: http-port |
| port: 8080 |
| targetPort: 8080 |
| protocol: TCP |
| - name: grpc-port |
| port: 8081 |
| targetPort: 8081 |
| protocol: TCP |
| - name: http-debug |
| port: 6070 |
| targetPort: 6070 |
| protocol: TCP |
| selector: |
| app: ratelimit |
| --- |
| apiVersion: apps/v1 |
| kind: Deployment |
| metadata: |
| name: ratelimit |
| spec: |
| replicas: 1 |
| selector: |
| matchLabels: |
| app: ratelimit |
| strategy: |
| type: Recreate |
| template: |
| metadata: |
| labels: |
| app: ratelimit |
| spec: |
| containers: |
| - image: envoyproxy/ratelimit:b163a2d5 # 2021/11/04 |
| imagePullPolicy: Always |
| name: ratelimit |
| command: ["/bin/ratelimit"] |
| env: |
| - name: LOG_LEVEL |
| value: debug |
| - name: REDIS_SOCKET_TYPE |
| value: tcp |
| - name: REDIS_URL |
| value: redis:6379 |
| - name: USE_STATSD |
| value: "false" |
| - name: RUNTIME_ROOT |
| value: /data |
| - name: RUNTIME_SUBDIRECTORY |
| value: ratelimit |
| - name: RUNTIME_WATCH_ROOT |
| value: "false" |
| - name: RUNTIME_IGNOREDOTFILES |
| value: "true" |
| - name: HOST |
| value: "::" |
| - name: GRPC_HOST |
| value: "::" |
| ports: |
| - containerPort: 8080 |
| - containerPort: 8081 |
| - containerPort: 6070 |
| volumeMounts: |
| - name: config-volume |
| mountPath: /data/ratelimit/config |
| volumes: |
| - name: config-volume |
| configMap: |
| name: ratelimit-config |