首页 > 解决方案 > Istio WorkloadEntry + 本地 Pod

问题描述

我需要实现这个场景https://istio.io/latest/blog/2020/workload-entry/负载应该分配到本地 pod 和外部服务(外部服务实现与本地 pod 相同的功能)。

本地 pod 服务:

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  selector:
    app: myapp
  ports:
    - name: http
      appProtocol: http
      targetPort: http
      port: 80

对外服务:

apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
  name: myapp
spec:
  address: example.net
  labels:
    app: myapp

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: myapp
spec:
  hosts:
    - myapp.default.svc.cluster.local
  location: MESH_INTERNAL
  ports:
    - number: 8000
      name: http
      protocol: HTTP
      targetPort: 80
  resolution: DNS
  workloadSelector:
    labels:
      app: myapp
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: myapp
spec:
  hosts:
    - '*.mydomain.net'

  gateways:
    - gw
    - mesh

  http:
    - name: myapp
      match:
        - uri:
            prefix: /
      route:
        - destination:
            host: myapp.default.svc.cluster.local
            port:
              number: 8000

      retries:
        attempts: 20
        retryOn: 503,retriable-status-codes,connect-failure,reset
        retryRemoteLocalities: true

使用此设置,本地 Pod 永远不会被选择并始终路由到外部服务。负载应该在本地和外部服务之间平衡。

Istio v1.9.4

标签: kubernetesistio

解决方案


推荐阅读