k8s: ingress spec version update

Sergey Royz
Jul 28, 2021

Issue

extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress

Before

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ .Values.app }}-ingress
namespace: acme-{{ .Values.env }}
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
rules:
- host: "service-{{ .Values.env }}.acme.com"
http:
paths:
- backend:
serviceName: {{ .Values.app }}
servicePort: 3000
tls:
- hosts:
- service-{{ .Values.env }}.acme.com
secretName: letsencrypt-prod

After

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Values.app }}-ingress
namespace: acme-{{ .Values.env }}
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
rules:
- host: "service-{{ .Values.env }}.acme.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Values.app }}
port:
number: 3000
tls:
- hosts:
- service-{{ .Values.env }}.acme.com
secretName: letsencrypt-prod

Change summary

  • set apiVersion to networking.k8s.io/v1
  • add path and pathType: Prefix to paths section
  • change serviceName and servicePort to service.name and service.port.number respectively

--

--

Sergey Royz

Co-founder and CTO of a crypto startup. A full-stack software engineer with a passion for creating innovative tech solutions that make a difference.