GKE 1.23에서 Kubernetes 인그레스 베타 API가 삭제됨


이 페이지에서는 오픈소스 Kubernetes 1.22 버전의 베타 인그레스 API 버전 지원 중단 및 삭제에 대한 정보를 제공합니다. GKE에서는 추가 마이그레이션 시간을 제공하기 위해 1.23까지 API를 계속 사용할 수 있도록 버전 1.21 이하에서 생성된 클러스터에 대해 일회성 예외를 적용했습니다. 버전 1.22가 지원 종료되기 전에 클러스터를 Ingress v1 API로 마이그레이션해야 합니다.

Kubernetes 버전 1.22에서 삭제된 지원 중단된 인그레스 베타 API는 베타 버전(v1beta1)에서 정식 버전(v1)로 전환된 이전 베타 API입니다. 정식 버전 API는 장기 호환성 보장을 제공하며 지원 중단된 베타 API 대신 사용해야 합니다.

모든 기존 객체는 GA API를 사용하여 상호 작용할 수 있습니다.

인그레스(1.21 이하에서 생성된 클러스터의 경우 1.23까지 사용 가능)

클러스터가 버전 1.22 이상에서 생성된 경우 버전 1.22 이상을 실행하는 GKE 클러스터에 Ingress의 베타 API 버전(extensions/v1beta1networking.k8s.io/v1beta1)이 더 이상 제공되지 않습니다.

그러나 GKE 버전 1.21 이하에서 생성되고 패치 버전 1.22.7-gke.300 이상에서 1.22로 업그레이드된 클러스터의 경우 클러스터가 버전 1.23으로 업그레이드될 때까지 베타 API 버전을 계속 사용할 수 있습니다. 이는 이전 클러스터 버전 1.22의 오픈소스 Kubernetes에서 삭제된 이러한 API 버전의 사용자에게 클러스터를 마이그레이션할 시간을 더 제공하기 위해 이전 클러스터에 적용되는 일회성 예외입니다.

GKE 버전 1.23 이상을 실행하는 모든 클러스터는 지원 중단된 Ingress 베타 API를 더 이상 제공하지 않습니다. 이러한 API 버전을 사용하는 매니페스트는 더 이상 적용할 수 없습니다. 이전의 영구 객체는 1.23으로 업그레이드되기 전후로 계속 작동하며 새 API 버전을 사용하여 보고 업데이트할 수 있습니다.

  • networking.k8s.io/v1 API 버전을 사용하도록 매니페스트 및 API 클라이언트를 마이그레이션하세요.
  • GA API 버전의 중요한 변경사항을 보여주는 다음 표를 참조하세요.

    필드 변경
    spec.backend 이름이 spec.defaultBackend로 변경되었습니다.
    backend serviceName 이름이 service.name으로 변경되었습니다.
    servicePort 숫자 백엔드 servicePort 필드의 이름이 service.port.number로 변경되었습니다. 문자열 백엔드 servicePort 필드의 이름이 service.port.name으로 변경되었습니다.
    pathType 이제 지정된 각 경로에 대해 필수 항목입니다. 값은 Prefix, Exact, ImplementationSpecific일 수 있습니다. 정의되지 않은 v1beta1 동작과 일치하는 항목을 찾으려면 ImplementationSpecific를 사용합니다.

다음 매니페스트는 v1v1beta1의 동일한 인그레스에 대해 설명합니다.

v1beta1 매니페스트

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example
spec:
  backend:
    serviceName: default-backend
    servicePort: 80
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80

v1 매니페스트

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example
spec:
  defaultBackend:
    service:
      name: default-backend
      port:
        number: 80
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: ImplementationSpecific
        backend:
          service:
            name: test
            port:
              number: 80

인그레스 v1beta1 API에 액세스하는 클라이언트를 식별하도록 Google Cloud Observability가 사용 설정된 클러스터에 대해 다음 쿼리를 사용할 수 있습니다.

resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "networking.k8s.io/v1beta1")
protoPayload.request.kind="Ingress"
NOT ("kube-system")

지원 중단된 API를 사용하여 클러스터 찾기

지원 중단 통계에서 지원 중단된 API를 사용 중인 클러스터를 찾을 수 있습니다. 지원 중단 통계는 또한 클러스터에서 지원 중단된 API를 호출하는 API 클라이언트와 같은 정보를 제공합니다.

또한 감사 로그를 사용해서 지원 중단된 API를 호출하는 클라이언트를 찾을 수 있습니다.

지원 중단된 API에 쓰기 호출을 수행하는 API 클라이언트 찾기

Google Cloud Observability가 사용 설정된 클러스터의 경우 다음 관리자 활동 감사 로그 쿼리를 사용하여 Google이 관리하지 않는 사용자 에이전트가 사용한 지원 중단된 API를 표시할 수 있습니다.

resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")

DEPRECATED_API_MINOR_VERSION을 지원 중단된 API가 삭제된 부 버전(예: 1.22)으로 바꿉니다.

관리자 활동 감사 로그는 GKE 클러스터에 대해 자동으로 사용 설정됩니다. 이 쿼리를 사용하면 지원 중단된 API에 쓰기 호출을 수행하는 사용자 에이전트가 표시됩니다.

지원 중단된 API에 읽기 호출을 수행하는 API 클라이언트 찾기

기본적으로 감사 로그는 지원 중단된 API에 대해 쓰기 호출만 표시합니다. 지원 중단된 API에 대해 읽기 호출도 표시하려면 데이터 액세스 감사 로그를 구성합니다.

안내에 따라 Google Cloud 콘솔을 사용하여 데이터 액세스 감사 로그 구성을 수행합니다. Google Cloud 콘솔에서 Kubernetes Engine API를 선택합니다. 정보 패널의 로그 유형 탭에서 Admin ReadData Read를 선택합니다.

이러한 로그가 사용 설정되면 이제 원본 쿼리를 사용해서 지원 중단된 API에 대해 읽기 호출 및 쓰기 호출을 모두 볼 수 있습니다.

타사 구성요소 업그레이드

지원 중단 통계에서는 클러스터에서 지원 중단된 API를 호출하는 서드 파티 에이전트에 대한 결과를 표시할 수 있습니다.

이 통계의 문제를 해결하려면 다음 단계를 따르세요.

  1. 서드 파티 소프트웨어 제공업체에 업데이트된 버전이 있는지 확인합니다.
  2. 서드 파티 소프트웨어를 최신 버전으로 업그레이드합니다. 소프트웨어를 업그레이드할 수 없는 경우 지원 중단되어 삭제된 API를 사용하는 버전으로 GKE를 업그레이드하면 서비스가 손상되는지 테스트해야 합니다.

프로덕션 클러스터를 업그레이드하기 전에 스테이징 클러스터에서 이러한 업그레이드와 GKE 버전 업그레이드를 수행하여 서비스 중단을 모니터링하는 것이 좋습니다.

버전 1.23으로 업그레이드 준비

API 객체를 삭제하고 다시 만들 필요가 없습니다. 새 API 버전을 사용하여 기존의 모든 영구 API 객체를 이미 읽고 업데이트할 수 있습니다. 그러나 Kubernetes 1.23으로 업그레이드하기 전에 클라이언트와 매니페스트를 마이그레이션하는 것이 좋습니다. Kubernetes 사용 중단된 API 마이그레이션 가이드의 '필요한 조치' 섹션에서 자세히 알아보세요.

지원 중단 통계 및 권장사항을 확인하면 클러스터가 지원 중단된 Kubernetes 기능 또는 API를 사용 중인지 확인할 수 있습니다. DEPRECATION_K8S_1_22_V1BETA1_API 하위유형을 사용하는 인그레스 베타 API 사용에 대한 통계와 추천을 찾아보세요.

지원 중단 통계는 Kubernetes 객체의 구성이 아닌 지원 중단된 API에 대한 사용자 에이전트의 관찰된 API 호출을 기반으로 합니다.

지원 중단의 영향을 받은 클러스터 업데이트

지원 중단의 영향을 받은 클러스터를 업그레이드하려면 다음 단계를 수행하세요.

  1. 지원 중단 통계 또는 로그에서 지원 중단된 API가 사용자 에이전트에 사용되는지 확인합니다.
  2. 지원 중단된 API를 사용하는 사용자 에이전트를 지원되는 API 버전을 사용하도록 업데이트합니다.
  3. 지원 중단된 API를 호출하는 서드 파티 소프트웨어를 최신 버전으로 업데이트합니다.
  4. 프로덕션 클러스터를 업그레이드하기 전에 테스트 클러스터를 업그레이드하고 테스트 환경에서 애플리케이션을 테스트하여 지원 중단된 API를 더 이상 사용할 수 없게 되면 발생할 수 있는 서비스 중단을 줄입니다.
  5. 모든 사용자 에이전트를 업데이트한 후 GKE는 지원 중단된 API의 사용이 30일 동안 관찰되지 않을 때까지 기다리고 자동 업데이트를 차단 해제합니다. 자동 업그레이드는 출시 일정에 따라 진행됩니다.
  6. 영향을 받은 사용자 에이전트를 업데이트할 수 없는 경우 별도의 테스트 클러스터를 업그레이드하여 업그레이드로 인해 서비스 중단이 발생하는지 확인합니다. 업그레이드로 인해 서비스 중단이 발생하지 않으면 클러스터를 수동으로 업그레이드하면 됩니다.

리소스

자세한 내용은 OSS Kubernetes 설명서에서 확인할 수 있습니다.