Ingress .yml 文件未应用于 GKE,但在 minikube 中运行良好
Ingress .yml file isn't being applied to GKE but works fine in minikube
我一直在使用 minikube 和这个 yml 文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /?(.*)
pathType: Prefix
backend:
service:
name: client-cluster-ip
port:
number: 3000
- path: /api/?(.*)
pathType: Prefix
backend:
service:
name: server-cluster-ip
port:
number: 5000
我已经在我的 GKE 集群上安装了 helm,并按照他们的指示通过 helm 安装了 ingress-nginx here.
我 kubectl 应用了我的 k8s,除了上面文件中的入口服务之外,它们都启动了。
非常感谢任何帮助。
我试过这个:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
namespace: my-ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: client-cluster-ip
servicePort: 3000
- path: /api/*
backend:
serviceName: server-cluster-ip
servicePort: 5000
我真的被困在这里了。没有像在 minikube 中那样显示入口服务,我不知道为什么。
服务器集群IP:
apiVersion: v1
kind: Service
metadata:
name: server-cluster-ip
spec:
type: ClusterIP
selector:
component: server
ports:
- port: 5000
targetPort: 5000
客户端集群 IP:
apiVersion: v1
kind: Service
metadata:
name: client-cluster-ip
spec:
type: ClusterIP
selector:
component: web
ports:
- port: 3000
targetPort: 3000
上面的部署和 clusterIp 服务正在应用于集群,但将流量定向到它们的入口服务没有。
服务:
NAME TYPE
client-cluster-ip ClusterIP
kubernetes ClusterIP
my-ingress-nginx-controller LoadBalancer
my-ingress-nginx-controller-admission ClusterIP
postgres-cluster-ip ClusterIP
redis-cluster-ip ClusterIP
server-cluster-ip ClusterIP
我创建了 my-ingress-nginx-controller 和 my-ingress-nginx-controller-admission helm install my-ingress-nginx ingress-nginx/ingress-nginx
为什么我不能创建入口服务?
我意识到我需要从 documentation 打开端口 8443。
所以我去了 google 云中的 firewall list。在协议/端口中找到具有 tcp:80,443 的规则。单击它,单击编辑并向其添加 8443。
之后我遇到了一个错误,但这解决了它:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: client-cluster-ip
servicePort: 3000
- path: /api/?(.*)
backend:
serviceName: server-cluster-ip
servicePort: 5000
注意我将 * 更改为 ?(.*)
我一直在使用 minikube 和这个 yml 文件:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /?(.*)
pathType: Prefix
backend:
service:
name: client-cluster-ip
port:
number: 3000
- path: /api/?(.*)
pathType: Prefix
backend:
service:
name: server-cluster-ip
port:
number: 5000
我已经在我的 GKE 集群上安装了 helm,并按照他们的指示通过 helm 安装了 ingress-nginx here.
我 kubectl 应用了我的 k8s,除了上面文件中的入口服务之外,它们都启动了。
非常感谢任何帮助。
我试过这个:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
namespace: my-ingress-nginx
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: client-cluster-ip
servicePort: 3000
- path: /api/*
backend:
serviceName: server-cluster-ip
servicePort: 5000
我真的被困在这里了。没有像在 minikube 中那样显示入口服务,我不知道为什么。
服务器集群IP:
apiVersion: v1
kind: Service
metadata:
name: server-cluster-ip
spec:
type: ClusterIP
selector:
component: server
ports:
- port: 5000
targetPort: 5000
客户端集群 IP:
apiVersion: v1
kind: Service
metadata:
name: client-cluster-ip
spec:
type: ClusterIP
selector:
component: web
ports:
- port: 3000
targetPort: 3000
上面的部署和 clusterIp 服务正在应用于集群,但将流量定向到它们的入口服务没有。
服务:
NAME TYPE
client-cluster-ip ClusterIP
kubernetes ClusterIP
my-ingress-nginx-controller LoadBalancer
my-ingress-nginx-controller-admission ClusterIP
postgres-cluster-ip ClusterIP
redis-cluster-ip ClusterIP
server-cluster-ip ClusterIP
我创建了 my-ingress-nginx-controller 和 my-ingress-nginx-controller-admission helm install my-ingress-nginx ingress-nginx/ingress-nginx
为什么我不能创建入口服务?
我意识到我需要从 documentation 打开端口 8443。
所以我去了 google 云中的 firewall list。在协议/端口中找到具有 tcp:80,443 的规则。单击它,单击编辑并向其添加 8443。
之后我遇到了一个错误,但这解决了它:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: client-cluster-ip
servicePort: 3000
- path: /api/?(.*)
backend:
serviceName: server-cluster-ip
servicePort: 5000
注意我将 * 更改为 ?(.*)