用docker和kubernetes构建一个微服务应用程序(Node/React),当我运行skaffold dev
命令时,我一直得到以下错误。
- stderr: "error: unable to recognize ~/infra/k8s/ingress-srv.yaml": no matches for kind "Ingress" in version "extensions/v1beta1"n"
这是我的入口-srv。yaml文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-serv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: ticketing.dev
http:
paths:
- pathType: Prefix
- path: "/api/users/?(.*)"
backend:
service:
name: auth-srv
port:
number: 3000
这是我的脚手架。yaml文件
apiVersion: skaffold/v2alpha3
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
local:
push: false
artifacts:
- image: mutuadocker/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: "src/**/*.ts"
dest: .
应将apiVersion: extensions/v1beta1
更改为apiVersion: networking.k8s.io/v1
所以你的文件看起来像这样:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-serv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: ticketing.dev
http:
paths:
- pathType: Prefix
- path: "/api/users/?(.*)"
backend:
service:
name: auth-srv
port:
number: 3000
参考本文档
我知道这个问题有点老了,但是……这是我的答案。
确保pathType路径数组;
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-serv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: ticketing.dev
http:
paths:
- path: "/api/users/?(.*)"
pathType: Prefix
backend:
service:
name: auth-srv
port:
number: 3000