kubernetes-guide/docs/chap18/18.6.md

3.1 KiB
Raw Permalink Blame History

Gateway配置

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # 使用默认的istio ingress gateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "bookinfo.kubeasy.com" # 发布域名

配置VirtualService

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

vim reviews-dr.yaml

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1 # subset v1指向具有version=v1的Pod
  - name: v2
    labels:
      version: v2 # subset v2指向具有version=v2的Pod
  - name: v3
    labels:
      version: v3 # subset v3指向具有version=v3的Pod

vim reviews-v1-all.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1 # 将流量指向v1

vim reviews-20v2-80v1.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1 # 将80%流量指向v1
      weight: 80 # 只需要配置一个weight参数即可
    - destination:
        host: reviews
        subset: v2 # 将20%流量指向v2
      weight: 20

vim reviews-v2-all.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2 # 指向v2

cat reviews-jasonv3.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers: # 匹配请求头
        end-user: # 匹配请求头的key为end-user
          exact: jason # value为jason
    route:
    - destination:
        host: reviews
        subset: v3 # 匹配到end-user=jason路由至v3版本
  - route:
    - destination:
        host: reviews
        subset: v2 # 其余的路由至v2版本

vim details-delay.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: details
spec:
  hosts:
  - details
  http:
  - fault: # 添加一个错误
      delay: # 添加类型为delay的故障
        percentage:	# 故障注入的百分比
          value: 100	# 对所有请求注入故障
        fixedDelay: 5s	# 注入的延迟时间
    route:
    - destination:
        host: details

vim details-abort.yaml