kubernetes - 默认后端 - 使用 dns 时从 nginx-controller 返回 404
问题描述
一些背景知识是我已经设置了一个 Azure Kubernetes 服务集群并部署了一个基本的 .Net Core api 作为部署对象。然后我部署了一个 nodeport 服务来公开 api,然后部署了一个 nginx-controller 和一个入口对象来配置它。我使用入口控制器的 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:
- 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
解决方案
很确定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
阅读:https ://kubernetes.io/docs/concepts/services-networking/ingress/#types-of-ingress
推荐阅读
- selenium - Selenium 测试,位于内部 IP 地址上的 URL,使用酱实验室驱动程序?
- reactjs - ReactJS 历史推送未将状态传递给所有组件
- ibm-mobilefirst - mobilefirst 无法删除机密客户端
- algorithm - 如何计算 O((L+1)n) 中两个等长字符串的最长公共子序列?
- ruby-on-rails - Rails 5 - 来自 StripeError 的自定义验证
- azure - 如何解决逻辑应用程序中的 CosmosDB 连接器给出未经授权的错误?
- angular - 如何做 console.log(data) outsite .subsrcibe()
- javascript - IE 11 beforeunload 事件不会被触发
- ruby-on-rails - HTTP Origin 标头与 request.base_url 不匹配
- opensql - 打开销售订单