首页 > 解决方案 > 将 apiVersion:networking.k8s.io/v1beta1 入口清单转换为 apiVersion:networking.k8s.io/v1

问题描述

今年早些时候,我安装了一个带有 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 标签?

标签: kubernetesmicroservicesnginx-ingress

解决方案


幸运的是,就 YAML 而言,API 版本之间没有太大区别。networking.k8s.io/v1这是Kubernetes Docs中的一个示例。

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

推荐阅读