无法在nodejs中使用kubernetes的ingress-nginx访问服务器,该如何解决?

发表于: 2020-12-15   最后更新时间: 2020-12-15 22:50:40   1,223 游览

我想用这个路由访问服务器,但没有成功。

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,它什么都不显示。

我测试服务器分离的kubernetes的https://localhost:4000/api/user/currentuser,是正常的。

我怎么才能解决这个问题呢?

发表于 2020-12-15
添加评论

解决 :

  1. 进入你的终端(terminal)
  2. 输入minikube ip - 来获取 minikube ip ( 例如: 172.17.0.2)
  3. 编辑 /etc/hosts:
    127.0.1.1 ticketing.dev 改为 172.17.0.2 (minikube ip) ticketing.dev
    你不能在这里写本地IP地址(127.0.1.1),你应该在这里写minikube的IP地址(172.17.0.2),因为你使用的是minikube
你的答案

查看kubernetes相关的其他问题或提一个您自己的问题