Kubernetes 如何在istio入口后到达港口?

Kubernetes 如何在istio入口后到达港口?,kubernetes,istio,harbor,Kubernetes,Istio,Harbor,我已按如下方式安装了Harbor: helm install hub harbor/harbor \ --version 1.3.2 \ --namespace tool \ --set expose.ingress.hosts.core=hub.service.example.io \ --set expose.ingress.annotations.'kubernetes\.io/ingress\.class'=istio \ --set expose.ingress.a

我已按如下方式安装了Harbor:

helm install hub harbor/harbor \
  --version 1.3.2 \
  --namespace tool \
  --set expose.ingress.hosts.core=hub.service.example.io \
  --set expose.ingress.annotations.'kubernetes\.io/ingress\.class'=istio \
  --set expose.ingress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \
  --set externalURL=https://hub.service.example.io \
  --set notary.enabled=false \
  --set secretkey=secret \
  --set harborAdminPassword=pw  
一切都已启动并运行,但无法通过
https://hub.service.example.io
。这里也会出现同样的问题,但是如何在Helm中设置通配符
*

更新

Istio支持入口网关。例如,此示例在没有网关和VirtualService定义的情况下工作:

apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes-first
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app: hello-kubernetes-first
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes-first
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-kubernetes-first
  template:
    metadata:
      labels:
        app: hello-kubernetes-first
    spec:
      containers:
        - name: hello-kubernetes
          image: paulbouwer/hello-kubernetes:1.8
          ports:
            - containerPort: 8080
          env:
            - name: MESSAGE
              value: Hello from the first deployment!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: istio
  name: helloworld-ingress
spec:
  rules:
    - host: "hw.service.example.io"
      http:
        paths:
          - path: "/*"
            backend:
              serviceName: hello-kubernetes-first
              servicePort: 80
---

如果你看这里,他们的路径硬编码到几个入口选项。特使/伊斯蒂奥不是其中之一。但是,您可能很幸运-expose.ingres.controller设置为“gce”似乎可以按您需要的方式设置路径。(我从未用过gce,也许他们甚至用过istio?)

编辑-原始答案如下。显然,您可以在istio中启用入口控制器。上面绝对没有文档,但是我应该期待什么呢

但在你的情况下,掌舵不是你的问题。istio不使用入口对象,它使用“网关”和“虚拟服务”。无法使用kubernetes.io/ingres.class注释将应用程序配置为使用istio ingress系统


(至少,这是我的经验,我在他们的文档中找不到任何与此相矛盾的东西,但完全有可能存在一个istio入口控制器,我想说的是,它不适用于入口和istio

如上所述

简单的入口规范,包括主机、TLS和精确的基于路径的匹配,无需路由规则即可实现。但是,请注意,入口资源中使用的路径不应包含任何.字符

例如,以下入口资源匹配example.com主机的请求,URL为/helloworld

$kubectl创建-f-
$ kubectl create -f - <<EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: simple-ingress
annotations:
  kubernetes.io/ingress.class: istio
spec:
rules:
- host: example.com
  http:
    paths:
    - path: /helloworld
      backend:
        serviceName: myservice
        servicePort: grpc
EOF
$ kubectl create -f - <<EOF
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: this-will-not-work
annotations:
  kubernetes.io/ingress.class: istio
  # Ingress annotations other than ingress class will not be honored
  ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: example.com
  http:
    paths:
    - path: /hello(.*?)world/
      backend:
        serviceName: myservice
        servicePort: grpc
EOF