一点背景是我已经设置了Azure Kubernetes服务集群并部署了一个基本的.Net Core api作为部署对象。然后我部署了一个nodeport服务来公开api,然后部署了一个nginx-controller和一个ingress对象来配置它。我使用入口控制器的IP来路由请求,例如。http://1.2.3.4/hello-world-one/api/values。但是当我用生成的dns替换Ip时,路径被忽略了,我得到了默认的后端 - 从nginx控制器返回的404。预期的行为是dns将解析然后路径“api / values”将被发送到我的服务。
谁能帮我这个?提前致谢。
我的部署,服务和入口配置如下。
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: test-deployment
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: test
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: test
spec:
containers:
- name: test-service
image: <my-repo>.azurecr.io/testservice
imagePullPolicy: Always
ports:
- name: tcp
containerPort: 80
imagePullSecrets:
- name: regsecret
---
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
type: NodePort
selector:
app: test
ports:
- name: http
port: 32768
targetPort: 80
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-world-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.global-static-ip-name: dev-pip-usw-qa-aks
kubernetes.io/ingress.class: addon-http-application-routing
spec:
rules:
http:
paths:
path: /
backend:
serviceName: frontend
servicePort: http
path: /hello-world-one
backend:
serviceName: frontend
servicePort: http
path: /hello-world-two
backend:
serviceName: frontend
servicePort: http
非常肯定rules应该是这样的:
rules:
host: hello-world-ingress.be543d4af69d4c7ca489.westus.aksapp.io
http:
paths:
path: /
backend:
serviceName: frontend
servicePort: http
path: /hello-world-one
backend:
serviceName: frontend
servicePort: http
path: /hello-world-two
backend:
serviceName: frontend
servicePort: http
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。