【问题标题】:Convert apiVersion: networking.k8s.io/v1beta1 ingress manifest to apiVersion: networking.k8s.io/v1将 apiVersion:networking.k8s.io/v1beta1 入口清单转换为 apiVersion:networking.k8s.io/v1
【发布时间】:2021-11-25 12:10:16
【问题描述】:

今年早些时候,我安装了一个带有 nginx 入口的运行 kubernetes 集群。虽然它有一些小问题,但它工作得很好。对于入口,我使用了标签

api版本:networking.k8s.io/v1beta1

但是,我最近安装了最新版本的 (kubernetes 1.22),它只允许

api版本:networking.k8s.io/v1

我遇到的问题是使用新格式的旧 yaml 配置。

我的 yaml 文件如下所示:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: dev-ingress
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/websocket-services : "chatserver"
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - http:
      paths:     
      - path: /api/auth/
        pathType: Prefix
        backend:
          serviceName: um-service 
          servicePort: 5001
      - path: /api/system/*
        pathType: Prefix
        backend:
          serviceName: system-service
          servicePort: 5002
       - path: /api/news/*
        backend:
          serviceName: news-service 
          servicePort: 5003
      - path: /api/tasks/*
        # pathType: Prefix
        backend:
          serviceName: tasks-service
          servicePort: 5004
      - path: /api/chats/
        pathType: Prefix
        backend:
          serviceName: chatserver 
          servicePort: 5500
      - path: /
        backend:
          serviceName: web-service
          servicePort: 5000

我的新清单如下所示:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dev-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /api/auth/
        pathType: Prefix
        backend:
          service:
            name: um-service 
            port: 
              number: 5001
      - path: /api/system/*
        pathType: Prefix
        backend:
          service:
            name: system-service 
            port: 
              number: 5002
      - path: /api/chats/
        pathType: Prefix
        backend:
          service:
            name: chatserver
            port: 
              number: 5050
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-service
            port: 
              number: 5000
  ingressClassName: nginx

如何将其转换为使用新的 apiVersion:networking.k8s.io/v1 标签?

【问题讨论】:

    标签: kubernetes microservices nginx-ingress


    【解决方案1】:

    幸运的是,就 YAML 而言,API 版本之间没有太大差异。这是来自Kubernetes Docsnetworking.k8s.io/v1 示例。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: minimal-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - http:
          paths:
          - path: /testpath
            pathType: Prefix
            backend:
              service:
                name: test
                port:
                  number: 80
    

    对您而言,主要变化与 backend 块的完成方式有关。例如:

    backend:
      serviceName: tasks-service
      servicePort: 5004
    

    需要变成:

    backend:
      service:
        name: "tasks-service"
        port:
          number: 5004
    

    【讨论】:

    • 当我这样做时,它没有像以前那样正确路由,某些路径不起作用。如您所见,我没有主机,但有几个后端路径。我需要做更多的事情吗?
    • 你能发布更新版本的入口 YAML 清单吗?
    • 我已经发布了当前的 YAML 清单
    • 我会删除重写目标注释,这只是示例的一部分,并不一定意味着您要复制它。您还应该重用旧清单中的先前注释。
    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2021-11-02
    • 2020-12-25
    • 2021-09-03
    • 2020-06-30
    • 2018-10-15
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多