牧场主 2.x 通过入口控制器 returns 404
rancher 2.x thru ingress controller returns 404
Rancher 服务:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rancher ClusterIP 10.10.17.245 <none> 80/TCP,443/TCP 1h
入口控制器服务:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress nginx-ingress LoadBalancer 10.10.15.181 <ext-IP> 80:30324/TCP,443:31022/TCP 3h
入口角色:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: rancher-ing
annotations:
kubernetes.io/ingress.class: "rancher"
spec:
rules:
- host: api.sample.com
http:
paths:
- path: /
backend:
serviceName: rancher
servicePort: 443
入口:
$ kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
rancher api.sample.com 80 19s
当我试图通过入口控制器分机 IP 连接牧场主时:
$ curl http://api.sample.com
作为回应,我有一些未编码的字符串。如果我通过网络浏览器执行此操作,则会下载此字符串并且我得到 404.
通过 http(没有 https)的一些随机服务的类似角色工作正常,所以这不是入口控制器配置错误的问题。
如果您想使用 kubernetes.io/ingress.class: "rancher"
,您必须使用 --ingress-class=rancher
注释部署入口控制器。
有很多
https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/multiple-ingress-controllers and https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
干杯
如果我按照默认入口控制器安装:
https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md
并应用牧场主入口角色,如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
app: rancher
name: rancher
namespace: cattle-system
spec:
tls:
- hosts:
- api.sample.com
secretName: default-server-secret
rules:
- host: api.sample.com
http:
paths:
- path: /
backend:
serviceName: rancher
servicePort: 80
此解决方案通过入口控制器启用 https 到 Rancher UI,无需注释。
Rancher 服务:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rancher ClusterIP 10.10.17.245 <none> 80/TCP,443/TCP 1h
入口控制器服务:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress nginx-ingress LoadBalancer 10.10.15.181 <ext-IP> 80:30324/TCP,443:31022/TCP 3h
入口角色:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: rancher-ing
annotations:
kubernetes.io/ingress.class: "rancher"
spec:
rules:
- host: api.sample.com
http:
paths:
- path: /
backend:
serviceName: rancher
servicePort: 443
入口:
$ kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
rancher api.sample.com 80 19s
当我试图通过入口控制器分机 IP 连接牧场主时:
$ curl http://api.sample.com
作为回应,我有一些未编码的字符串。如果我通过网络浏览器执行此操作,则会下载此字符串并且我得到 404.
通过 http(没有 https)的一些随机服务的类似角色工作正常,所以这不是入口控制器配置错误的问题。
如果您想使用 kubernetes.io/ingress.class: "rancher"
,您必须使用 --ingress-class=rancher
注释部署入口控制器。
有很多 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/multiple-ingress-controllers and https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/
干杯
如果我按照默认入口控制器安装:
https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/installation.md
并应用牧场主入口角色,如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
app: rancher
name: rancher
namespace: cattle-system
spec:
tls:
- hosts:
- api.sample.com
secretName: default-server-secret
rules:
- host: api.sample.com
http:
paths:
- path: /
backend:
serviceName: rancher
servicePort: 80
此解决方案通过入口控制器启用 https 到 Rancher UI,无需注释。