故障注入 - 延迟和中止在 Istio 中不起作用

Fault Injection - delays and aborts not working in Istio

我已经将 Istio 配置为 delay/abort http-traffic 30 秒到我的目录服务,但是当我刷新我的页面时,目录显示没有任何延迟。

这是 Google 的 GKE 中的设置。我正在使用 sock-shop 演示来测试 Istio 功能的几个方面。

我当前的设置如下:这是我的包含所有服务和部署的 yaml 文件(简称为 Catalog 和使用目录的前端的配置):

#################################################
# Catalogue-db
#################################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: catalogue-db-v1
  labels:
    name: catalogue-db
    version: v1
  namespace: sock-shop
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: catalogue-db
        version: v1
    spec:
      containers:
      - name: catalogue-db
        image: weaveworksdemos/catalogue-db:0.3.0
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: fake_password
          - name: MYSQL_DATABASE
            value: socksdb
        ports:
        - name: mysql
          containerPort: 3306
      nodeSelector:
        beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
  name: catalogue-db
  labels:
    name: catalogue-db
  namespace: sock-shop
spec:
  ports:
    # the port that this service should serve on
  - port: 3306
    targetPort: 3306
  selector:
    name: catalogue-db
---
######################################################
#Catalogue
######################################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: catalogue
  labels:
    name: catalogue
    version: v1
  namespace: sock-shop
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: catalogue
        version: v1
    spec:
      containers:
      - name: catalogue
        image: weaveworksdemos/catalogue:0.3.5
        ports:
        - containerPort: 80
        securityContext:
          runAsNonRoot: true
          runAsUser: 10001
          capabilities:
            drop:
              - all
            add:
              - NET_BIND_SERVICE
          readOnlyRootFilesystem: true
      nodeSelector:
        beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
  name: catalogue
  labels:
    name: catalogue
  namespace: sock-shop
spec:
  ports:
    # the port that this service should serve on
  - port: 80
    name: http-catalogue
    targetPort: 80
  selector:
    name: catalogue
---
##############################################
# Front-End
##############################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: front-end-v1
  labels:
     name: front-end
     version: v1
  namespace: sock-shop
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: front-end
        version: v1
    spec:
      containers:
      - name: front-end
        image: weaveworksdemos/front-end:0.3.12
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 8079
        securityContext:
          runAsNonRoot: true
          runAsUser: 10001
          capabilities:
            drop:
              - all
          readOnlyRootFilesystem: true
      nodeSelector:
        beta.kubernetes.io/os: linux
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: front-end-v2
  labels:
     name: front-end
     version: v2
  namespace: sock-shop
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: front-end
        version: v2
    spec:
      containers:
      - name: front-end
        image: vinayakinfrac/front-end:0.3.12
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 8079
        securityContext:
          runAsNonRoot: true
          runAsUser: 10001
          capabilities:
            drop:
              - all
          readOnlyRootFilesystem: true
      nodeSelector:
        beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
  name: front-end
  labels:
    name: front-end
  namespace: sock-shop
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8079
    name: http-front-end
    nodePort: 30001
  selector:
    name: front-end

这是我目录的目的地规则:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: catalogue
  namespace: sock-shop
spec:
  host: catalogue
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
  subsets:
  - name: v1
    labels:
      version: v1

这是虚拟服务,其中包括故障注入:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: catalogue
  namespace: sock-shop
spec:
  hosts:
  - catalogue
  http:
  - fault:
      delay:
        fixedDelay: 30s
        percent: 100
    route:
    - destination:
        host: catalogue.sock-shop.svc.cluster.local
        subset: v1

看来这是我的失误。我再次尝试使用与原始问题中发布的配置相同的配置,现在可以使用了。