英文:
Defining Ingress for k3s traefik
问题
我运行的是k3s版本1.25.5,我想要将traefik定义为通过外部helm图表定义的一个服务的入口。我在寻找正确的入口定义时遇到了困难。我尝试使用下面的yaml文件,但出现错误提示:
error: resource mapping not found for name: "c8-ingress" namespace: "" from "zeebe-traefik.yaml": no matches for kind "Ingress" in version "extensions/v1beta1"
ensure CRDs are installed first
这似乎是因为yaml文件中使用了旧的apiVersion。如何正确实现呢?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: c8-ingress
  annotations:
    kubernetes.io/ingress.class: "traefik"
spec:
  rules:
  - http:
      paths:
      - path: "/"
        backend:
          serviceName: dev-zeebe-gateway
          servicePort: 26500
谢谢。
英文:
I am running k3s version 1.25.5 and I would like to define traefik as an ingress for one of the services defined through an external helm chart. I am struggling to find the right ingress definition. I tried with the below yaml file but that gives an error stating
error: resource mapping not found for name: "c8-ingress" namespace: "" from "zeebe-traefik.yaml": no matches for kind "Ingress" in version "extensions/v1beta1"
ensure CRDs are installed first
This seems to be because of the an old apiVersion used in the yaml file. How to do it the right way?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: c8-ingress
  annotations:
    kubernetes.io/ingress.class: "traefik"
spec:
  rules:
  - http:
      paths:
      - path: "/"
        backend:
          serviceName: dev-zeebe-gateway
          servicePort: 26500
Thanks.
答案1
得分: 2
你的示例使用了过时的Ingress定义。在v1.25.x中,你需要使用稳定的networking.k8s.io/v1 API,如这里所描述。
建议还要提供适当的命名空间。这对于文档很有用,但也是资源后端所需的。这样可以避免在每次kubectl apply时添加-n YOURNAMESPACE。
在你的情况下,可能看起来像这样:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: c8-ingress
  namespace: YOURNAMESPACE
spec:
  rules:
    - http:
        paths:
          - pathType: Prefix
            path: /
            backend:
              service:
                name: dev-zeebe-gateway
                port:
                  number: 26500
希望这有助于解决你的问题。
在许多情况下,你可以运行kubectl explain RESOURCE来获取有关给定API资源的有用链接和资源。
英文:
Your example is using an outdated Ingress definition. In v1.25.x you need to use the stable networking.k8s.io/v1 API, as described here.
It is also recommended to provide the fitting namespace. This is useful for documentation, but also required for resource backends. It will also avoid adding -n YOURNAMESPACE to every kubectl apply.
In your case, this may look something like:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: c8-ingress
  namespace: YOURNAMESPACE
spec:
  rules:
    - http:
        paths:
          - pathType: Prefix
            path: /
            backend:
              service:
                name: dev-zeebe-gateway
                port:
                  number: 26500
I hope this helps to solve your issue.
In many cases, you can run kubectl explain RESOURCE to get useful links and resources for a given api-resource.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论