nginx - Minikube Ingress 无法解析,但 minikube IP 可以
问题描述
我正在 Windows 10 上的 minikube 集群中运行一个简单的 pod,其中包含来自本地映像注册表的映像。我还在运行一个简单的 nodeport 服务。当我尝试使用 <minikube_ip>:30080 从浏览器访问该容器时,该容器可用。
但是,现在我想设置一个入口控制器,因为我想设置一个域而不是使用 IP 访问它。入口适用于基本 nginx pod 等简单的东西,但不适用于我正在尝试使用的这个 pod。我以前在 docker-compose 中使用 jwilder/nginx-proxy,它有一些需要附加到 conf.d 目录中的 conf 文件。但是,由于我要迁移到 Kubernetes,我想完全省略 conf 文件和反向代理映像。
现在主机文件更新后,可以通过 curl 访问域,域也可以 ping,但是,在浏览器上根本无法访问。
豆荚yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
io.kompose.service: api
name: api
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: api
strategy:
type: RollingUpdate
template:
metadata:
labels:
io.kompose.service: api
spec:
containers:
- env:
- name: DEV_PORT
value: "80"
image: localhost:5000/api:2.3
imagePullPolicy: "IfNotPresent"
name: api
resources: {}
restartPolicy: Always
serviceAccountName: ""
status: {}
服务.yaml
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: C:\Users\***kompose.exe
convert
kompose.version: 1.21.0 (992df58d8)
creationTimestamp: null
labels:
io.kompose.service: api
name: api
spec:
selector:
io.kompose.service: api
type: NodePort
ports:
- name: "http"
port: 80
targetPort: 80
nodePort: 30080
入口.yaml
apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
name: tls-ingress
spec:
tls:
- secretName: oaky-tls
hosts:
- api.localhost
rules:
- host: api.localhost
http:
paths:
- path: /
backend:
serviceName: api
servicePort: 80
我已经检查并且 TLS 密码可用,我不理解这里的问题,非常感谢一些帮助。
解决方案
已解决:Chrome 忽略了 etc hosts 文件,所以我做了以下操作:
- 切换到 Firefox,URL 立即生效。
- 添加注释来表示类:
kubernetes.io/ingress.class:nginx
- 添加注释以确保将请求重定向到 ssl
nginx.ingress.kubernetes.io/ssl-redirect:“真”
推荐阅读
- android - WAMP 未连接到我的 Android 手机
- c# - 为什么只能用 getter 覆盖 C# 中的完整属性,但仍然可以设置?
- vba - 设置格式条件不适用于某些范围?
- jquery - 如何选择不包含数据的元素(不敏感的方式)?
- javascript - jQuery scrollTop() 方法不起作用
- c++ - 为什么抛出引用调用复制构造函数的异常?
- python - 功能:在 Python 3.6 中使用 .append() 以外的方法将列表插入到另一个列表中
- css - 网站标题被切断
- typescript - 续集导入遇到 TypeScript 问题
- android - 如何忽略缺少电池的无效数据?