Denn
Denn

Reputation: 487

Convert apiVersion: networking.k8s.io/v1beta1 ingress manifest to apiVersion: networking.k8s.io/v1

I had installed an ran a kubernetes cluster with an nginx ingress earlier this year. Though it had little issues, it worked fine. For the ingress, I used the tag

apiVersion: networking.k8s.io/v1beta1

However, I have recently installed the latest version of (kubernetes 1.22) which only allows for

apiVersion: networking.k8s.io/v1

The problem i'm having is using my old yaml configuration with the new format.

My yaml file looks like this:

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

my new manifest looks like this:

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

How do I convert this to use the new apiVersion: networking.k8s.io/v1 tag?

Upvotes: 0

Views: 852

Answers (1)

Menace
Menace

Reputation: 453

Fortunately there isn't too much difference between the API versions in terms of the YAML. Here's an example of networking.k8s.io/v1 from the 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

The main change for you would have to do with the how the backend blocks are done. For example:

backend:
  serviceName: tasks-service
  servicePort: 5004

would need to become:

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

Upvotes: 2

Related Questions