extensions/v1beta1 Ingress から networking.k8s.io/v1 Ingress に移行する

最近バージョンアップした Kubernetes クラスタで作業していると Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress というワーニングが表示された。メッセージに書いてあるとおりだけど Kubernetes v1.14 から extensions/v1beta1Ingress リソースは非推奨、 v1.22 で廃止になるようだ。

言われたとおり Ingress を定義する YAML ファイルで apiVersion: extensions/v1beta1 としているところを apiVersion: networking.k8s.io/v1 と書き換えれば完了...ではなく、 API の仕様が変わっているので最新の ドキュメント (2021年05月10日現在、日本語ドキュメントは未更新)に合わせて修正する必要があった。

下に例を示したが、ざっくりと pathType が無いとバリデーションで失敗するようになったのと、 backend 下の要素の書き方が変わったの大きな違いか。 annotations なども変わっているのかもしれないけど、現状困っていないので調べていない。

extensions/v1beta1

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: example
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: example
              servicePort: 80

networking.k8s.io/v1

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: example
                port:
                  number: 80

廃止前に気がつくことができたし、ワーニングも出なくなってメデタシメデタシ。