在头盔值文件中,有一个带有说明的设置global.k8sIngressSelector。
用于传统k8s入口资源的网关。默认情况下是 使用'istio:ingress'来匹配0.8配置。它要求 ingress.enabled设置为true。你也可以设置 到入口网关或您在“网关”中定义的任何其他网关 部分。
我对此的解释是,istio入口应该选择正常的入口配置,而不必提供虚拟服务。它是否正确?我尝试过,但对我不起作用。
kind: Deployment
apiVersion: apps/v1
metadata:
name: echo
spec:
replicas: 1
selector:
matchLabels:
app: echo
template:
metadata:
labels:
app: echo
spec:
containers:
- name: echo
image: mendhak/http-https-echo
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: echo
spec:
type: ClusterIP
selector:
app: echo
ports:
- port: 80
name: http
这有效
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- '*.dev.example.com'
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: echo
spec:
hosts:
- echo.dev.example.com
gateways:
- gateway
http:
- route:
- destination:
host: echo
这不是
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: echo
spec:
rules:
- host: echo.dev.example.com
http:
paths:
- backend:
serviceName: echo
servicePort: 80
答案 0 :(得分:2)
您的Ingress需要具有注释:kubernetes.io/ingress.class: istio
。
根据您使用的Istio版本,它可能始终无法工作。当前存在一个开放的问题,即Ingress无法在最新的驱动程序中运行,听起来好像已经被破解了一段时间。