Kubernetes 如何在istio入口后到达港口?
我已按如下方式安装了Harbor: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
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