无法在nodejs中使用带有kubernetes的ingress-nginx访问服务器
can not access to server with ingress-nginx with kubernetes in nodejs
我想通过此路由访问服务器,但没有成功。 https://ticketing.dev/api/user/currentuser
我创建了根文件夹skaffold.yaml
:
apiVersion: skaffold/v2beta11
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
local:
push: false
artifacts:
- image: kia9372/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .
我创建了一个名为 infra
的文件夹,并在其中创建了一个名为 k8s
的文件夹。在这个文件夹中,我创建了两个文件:
A : auth-depl.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-depl
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: kia9372/auth
---
apiVersion: v1
kind: Service
metadata:
name: auth-srv
spec:
selector:
app: auth
ports:
- name: auth
protocol: TCP
port: 4000
targetPort: 4000
B : ingress-srv.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: ticketing.dev
- http:
paths:
- path: /api/user/?(.*)
backend:
service:
name: auth-srv
port:
number: 4000
然后进入 /etc/hosts
我写这个 :
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
127.0.1.1 mr-programmer
127.0.1.1 ticketing.dev
但现在我遇到了问题。当我想走这条路时 https://ticketing.dev/api/user/currentuser
它没有显示我的任何东西。我通过这个 https://localhost:4000/api/user/currentuser
测试服务器分离 kubernetes 并且它有效。
问题是什么?我该如何解决这个问题?
Solution
:
- 转到您的终端
- 输入
minikube ip
- 你会得到minikube ip(例如:172.17.0.2)
Edit /etc/hosts
:
将127.0.1.1 ticketing.dev
改为
172.17.0.2 (minikube ip) ticketing.dev
这里不能写local ip address(127.0.1.1),这里应该写minikube ip address(172.17.0.2),因为你用的是minikube
我想通过此路由访问服务器,但没有成功。 https://ticketing.dev/api/user/currentuser
我创建了根文件夹skaffold.yaml
:
apiVersion: skaffold/v2beta11
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
local:
push: false
artifacts:
- image: kia9372/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .
我创建了一个名为 infra
的文件夹,并在其中创建了一个名为 k8s
的文件夹。在这个文件夹中,我创建了两个文件:
A : auth-depl.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-depl
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: kia9372/auth
---
apiVersion: v1
kind: Service
metadata:
name: auth-srv
spec:
selector:
app: auth
ports:
- name: auth
protocol: TCP
port: 4000
targetPort: 4000
B : ingress-srv.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: ticketing.dev
- http:
paths:
- path: /api/user/?(.*)
backend:
service:
name: auth-srv
port:
number: 4000
然后进入 /etc/hosts
我写这个 :
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
127.0.1.1 mr-programmer
127.0.1.1 ticketing.dev
但现在我遇到了问题。当我想走这条路时 https://ticketing.dev/api/user/currentuser
它没有显示我的任何东西。我通过这个 https://localhost:4000/api/user/currentuser
测试服务器分离 kubernetes 并且它有效。
问题是什么?我该如何解决这个问题?
Solution
:
- 转到您的终端
- 输入
minikube ip
- 你会得到minikube ip(例如:172.17.0.2) Edit /etc/hosts
:
将127.0.1.1 ticketing.dev
改为
172.17.0.2 (minikube ip) ticketing.dev
这里不能写local ip address(127.0.1.1),这里应该写minikube ip address(172.17.0.2),因为你用的是minikube