---
slug: "kubernetes-ingress-version-extensions-v1beta1"
title: "Updating Kubernetes Ingress from extensions/v1beta1 to networking.k8s.io/v1"
description: "Migrate a Kubernetes Ingress from `extensions/v1beta1` to `networking.k8s.io/v1`, with YAML examples. The `backend` field structure must be rewritten."
url: "https://www.ytyng.com/en/blog/kubernetes-ingress-version-extensions-v1beta1"
publish_date: "2022-06-19T11:32:00Z"
created: "2022-06-19T11:32:00Z"
updated: "2026-05-11T13:05:41.266Z"
categories: ["kubernetes"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/83afcf7cceef4c13bcd21a89b4e1822c.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "en"
---

# Updating Kubernetes Ingress from extensions/v1beta1 to networking.k8s.io/v1

<p>In the latest version of Kubernetes (around 1.25?), <code>apiVersion: extensions/v1beta1</code> is no longer usable.</p>
<p>If you have written Ingress using <code>extensions/v1beta1</code>, you will encounter the following error when applying with kubectl:</p>
<pre>error: unable to recognize "ingress.yml": no matches for kind "Ingress" in version "extensions/v1beta1"</pre>
<p>Therefore, you need to update it to <code>apiVersion: networking.k8s.io/v1</code>.</p>
<p>Although I have not confirmed whether <code>apiVersion: networking.k8s.io/v1beta1</code> is also unusable, it would be wise to similarly update to <code>apiVersion: networking.k8s.io/v1</code> to avoid future issues.</p>
<p>When doing so, note that the way to write <code>backend.service</code> has slightly changed.</p>
<h2>Sample Manifest for apiVersion: networking.k8s.io/v1 with kind: Ingress</h2>
<pre>apiVersion: networking.k8s.io/v1<br />kind: Ingress<br />metadata:<br />  name: my-app-ingress<br />  namespace: my-namespace<br />  annotations:<br />    ingress.kubernetes.io/ssl-redirect: "true"<br />spec:<br />  tls:<br />    - secretName: my-tls-cert-secrets<br />  rules:<br />    - host: my-app.example.com<br />      http:<br />      paths:<br />        - path: /<br />          pathType: Prefix<br />          backend:<br />            service:<br />              name: my-app-service<br />              port:<br />                number: 80</pre>
<p>In <code>extensions/v1beta1</code>, what was written as <code>backend.serviceName</code> and <code>backend.servicePort</code> has now been changed to <code>backend.service.name</code> and <code>backend.service.port.number</code>.<br />You also need to specify <code>pathType</code>. For the same behavior as before, use <code>pathType: Prefix</code>.</p>
