【发布时间】:2020-04-15 18:58:41
【问题描述】:
我有一个应用程序,其 Ingress 资源如下所示。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}-stateful
labels:
app: oxauth
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/ssl-services: "oxtrust"
nginx.ingress.kubernetes.io/app-root: "/identity"
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
nginx.ingress.kubernetes.io/proxy-next-upstream: "error timeout invalid_header http_500 http_502 http_503 http_504"
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: /identity
backend:
serviceName: oxtrust
servicePort: 8080
- path: /idp
backend:
serviceName: oxshibboleth
servicePort: 8080
- path: /passport
backend:
serviceName: oxpassport
servicePort: 8090
我想把它翻译成一个VirtualService 供 Istio 网关使用。但是一旦我这样做,服务oxpassport 总是在日志中返回503 错误。这意味着无法到达部署。
下面是Service的定义
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2020-04-15T18:21:12Z"
labels:
app: oxpassport
app.kubernetes.io/instance: kk
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/version: 4.1.0_01
helm.sh/chart: oxpassport-1.0.0
name: oxpassport
namespace: test
spec:
clusterIP: 10.111.71.120
ports:
- name: tcp-oxpassport
port: 8090
protocol: TCP
targetPort: 8090
selector:
app: oxpassport
release: kk
type: ClusterIP
status:
loadBalancer: {}
最后是我尝试使用的VS:
VirtualService
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: {{ include "istio.fullname" . }}-oxpassport
namespace: {{ .Release.Namespace }}
spec:
hosts:
- oxpassport.{{ .Release.Namespace }}.svc.cluster.local
gateways:
- {{ .Release.Name }}-global-gtw
http:
- match:
- uri:
prefix: /passport
rewrite:
uri: /identity
route:
- destination:
host: oxpassport.{{ .Release.Namespace }}.svc.cluster.local
port:
number: 8090
Gatewaysn-p:
- port:
number: 8090
name: tcp-oxpassport
protocol: HTTP
hosts:
- oxpassport.{{ .Release.Namespace }}.svc.cluster.local
注意事项:
-
有一个带有这些标签的后端应用程序。这有它自己的 VS 并且它正在工作:
labels: app: oxauth -
Oxpassport 有一个带有标签的部署
labels: app: oxpassport
我知道这是一个很长的帖子,但它现在已经有好几天了。如果可以,请解释一下。
谢谢
【问题讨论】:
-
看起来您的一些对象定义是 Helm 模板。为了清楚起见,您可以发布实际定义吗?
标签: kubernetes kubernetes-ingress istio