KNative 与 Istio 监听端口 8080

KNative with Istio Listening on Port 8080

我已将 Istio 的 "ingress gateway" 设置为侦听 8080,但 运行 Knative hello-world 存在问题。有人像这样设置 Knative 吗?

我希望进入端口 8080 的互联网流量能够显示 Knative hello world 的输出。

如果您有一个侦听端口 80 而不是 $PORT 的现有容器,您可以设置 spec.template.spec.containers[0].ports[0].containerPort 以指示容器侦听哪个端口。

例如:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
 name: helloworld-go
 namespace: default
spec:
 template:
  spec:
   containers:
    - image: gcr.io/knative-samples/helloworld-go
      env:
      - name: TARGET
       value: "Go Sample v1"
      ports:
      - containerPort: 80

Knative 会自动将 $PORT 环境变量设置为请求的容器端口,因此设置 containerPort 应该适用于任何 Knative 示例。

如果我理解这个问题,这类似于我 运行 尝试在非标准端口上使用 Istio 入口网关配置 Knative 的问题。按照 Istio 集成的 Knative 说明,我应用了 Knative Istio 控制器 (net-istio)。这包括选择 istio: ingressgatewaynetworking.istio.io Gateway,指定端口 80。将此资源修改为正确的端口(问题中的 8080)应该可以解决问题。