Backend/Docker, Kubernetes

ingress apiVersion networking.k8s.io/v1

findmypiece 2022. 3. 8. 16:30
728x90

kubectl get ing 로 ingress 자원을 확인하면 아래와 같은 경고메시지가 뜨는 경우가 있다.

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

대충 해석해보며 ingress 에 apiVersion 중 extensions/v1beta1 는 1.14 버전에 deprecated 되었고 1.22 버전부터는 사용할 수 없으니 networking.k8s.io/v1 로 변경하라는 것 같다.

 

수정하는 것은 어렵지 않으니 수정하고 적용을 했는데 아래와 같은 오류가 났다.

error validating data: [ValidationError(Ingress.spec.rules[0].http.paths[0].backend): unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[0].backend): unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend]; if you choose to ignore these errors, turn validation off with --validate=false

serviceName, servicePort 필드를 해석할 수 없단다. 단순히 기능만 변경된게 아니라 yaml 작성 포맷도 바뀐 모양이다. 예전에 apiVersion 으로 extensions/v1beta1 를 사용할 때는 ingress를 아래와 같이 정의했다.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ing
spec:
  rules:
    - host: local.test.com
      http:
        paths:
          - path: /
            backend:
              serviceName: test-svc
              servicePort: http

 

networking.k8s.io/v1 부터는 아래와 같이 작성해야 한다. 

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ing
spec:
  rules:
    - host: sandbox-inms.melon.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: melon-inms-api-svc
                port:
                  name: http

pathType 이 추가되었고  backend 부분 정의 방법이 변경되었다. 더 자세한 내용은 공식 홈페이지를 참고하자.

 

https://kubernetes.io/ko/docs/concepts/services-networking/ingress/
728x90