首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用istio和特使过滤器的redis故障注入

使用istio和特使过滤器的redis故障注入
EN

Stack Overflow用户
提问于 2021-04-04 20:51:17
回答 1查看 286关注 0票数 0

我正在尝试使用istio向一个redis实例(不在集群中)注入2s的延迟。所以,首先,我创建了一个ExternalName k8s服务来访问外部redis,这样istio就可以知道这个服务了。这是可行的。但是,当我创建EnvoyFilter来添加错误时,我在istioctl pc listeners <pod-name> -o json中看不到同一名称空间中的pod的redis_proxy过滤器。(也不会引入延迟)

代码语言:javascript
复制
apiVersion: v1
kind: Namespace
metadata:
  name: chaos
  labels:
    istio-injection: enabled
---
apiVersion: v1
kind: Service
metadata:
  name: redis-proxy
  namespace: chaos
spec:
  type: ExternalName
  externalName: redis-external.bla
  ports:
    - name: tcp
      protocol: TCP
      port: 6379
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: redis-proxy-filter
  namespace: chaos
spec:
  configPatches:
    - applyTo: NETWORK_FILTER
      match:
        listener:
          portNumber: 6379
          filterChain:
            filter:
              name: "envoy.filters.network.redis_proxy"
      patch:
        operation: MERGE
        value:
          name: "envoy.filters.network.redis_proxy"
          typed_config:
            "@type": type.googleapis.com/envoy.extensions.filters.network.redis_proxy.v3.RedisProxy
            faults:
              - fault_type: DELAY
                fault_enabled:
                  default_value:
                    numerator: 100
                    denominator: HUNDRED
                delay: 2s

有没有人能给出一个想法?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-04-04 23:11:46

我在本地的istio 1.8.2中试用了您的yaml。下面是一些可能对您有帮助的更改

  • 在istiod环境变量中设置PILOT_ENABLE_REDIS_FILTER。否则,过滤器名称将为" name ":"envoy.filters.network.tcp_proxy"

  • 添加匹配上下文

匹配:上下文: SIDECAR_OUTBOUND

  • 使用redis协议

端口:-名称: redis-proxy端口: 6379 appProtocol: redis

我可以看到以下内容

代码语言:javascript
复制
% istioctl pc listener nginx.chaos --port 6379 -o json
[
    {
        "name": "0.0.0.0_6379",
        "address": {
            "socketAddress": {
                "address": "0.0.0.0",
                "portValue": 6379
            }
        },
        "filterChains": [
            {
                "filters": [
                    {
                        "name": "envoy.filters.network.redis_proxy",
                        "typedConfig": {
                            "@type": "type.googleapis.com/envoy.extensions.filters.network.redis_proxy.v3.RedisProxy",
                            "statPrefix": "outbound|6379||redis-proxy.chaos.svc.cluster.local",
                            "settings": {
                                "opTimeout": "5s"
                            },
                            "latencyInMicros": true,
                            "prefixRoutes": {
                                "catchAllRoute": {
                                    "cluster": "outbound|6379||redis-proxy.chaos.svc.cluster.local"
                                }
                            },
                            "faults": [
                                {
                                    "faultEnabled": {
                                        "defaultValue": {
                                            "numerator": 100
                                        }
                                    },
                                    "delay": "2s"
                                }
                            ]
                        }
                    }
                ]
            }
        ],
        "deprecatedV1": {
            "bindToPort": false
        },
        "trafficDirection": "OUTBOUND"
    }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66941477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档