5.2. 제거된 API에 대한 클러스터 평가

관리자가 제거할 API 위치를 식별하는 데 도움이 되는 여러 가지 방법이 있습니다. 그러나 OpenShift Container Platform은 모든 인스턴스, 특히 유휴 상태인 워크로드 또는 사용되는 외부 툴을 식별할 수 없습니다. 관리자가 제거된 API 인스턴스에 대한 모든 워크로드 및 기타 통합을 적절하게 평가해야 합니다.

5.2.1. 제거된 API의 사용 식별을 위한 경고 검토

다음 릴리스에서 제거될 API가 사용 중인 경우 두 개의 경고가 발생합니다.

  • APIRemovedInNextReleaseInUse - OpenShift Container Platform의 다음 릴리스에서 제거될 API의 경우
  • APIRemovedIn다음 EUSReleaseInUse - OpenShift Container Platform EUS (Extended Update Support) 릴리스에서 제거될 API의 경우

이러한 경고 중 하나가 클러스터에서 실행 중인 경우 경고를 검토하고 새 API 버전을 사용하도록 매니페스트 및 API 클라이언트를 마이그레이션하여 경고를 지우는 조치를 취합니다.

경고에서 이 정보를 제공하지 않기 때문에 APIRequestCount API를 사용하여 사용 중인 API와 제거된 API를 사용하는 워크로드에 대한 자세한 정보를 얻을 수 있습니다. 또한 일부 API는 이러한 경고를 트리거하지 않을 수 있지만 여전히 APIRequestCount 에 의해 캡처됩니다. 프로덕션 시스템에서 부적절한 경고를 방지하기 위해 경고가 덜 민감하도록 조정됩니다.

5.2.2. APIRequestCount를 사용하여 제거된 API 사용 확인

APIRequestCount API를 사용하여 API 요청을 추적하고 제거된 API 중 하나를 사용 중인지 검토할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  • 다음 명령을 실행하고 출력의 REMOVEDINRELEASE 열을 검사하여 현재 사용 중인 제거된 API를 확인합니다.

    $ oc get apirequestcounts

    출력 예

    NAME                                                                      REMOVEDINRELEASE   REQUESTSINCURRENTHOUR   REQUESTSINLAST24H
    ...
    poddisruptionbudgets.v1.policy                                                               391                     8114
    poddisruptionbudgets.v1beta1.policy                                       1.25               2                       23
    podmonitors.v1.monitoring.coreos.com                                                         3                       70
    podnetworkconnectivitychecks.v1alpha1.controlplane.operator.openshift.io                     612                     11748
    pods.v1                                                                                      1531                    38634
    podsecuritypolicies.v1beta1.policy                                        1.25               3                       39
    podtemplates.v1                                                                              2                       79
    preprovisioningimages.v1alpha1.metal3.io                                                     2                       39
    priorityclasses.v1.scheduling.k8s.io                                                         12                      248
    prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io          1.26               3                       86
    ...

    중요

    결과에 표시되는 다음 항목을 무시해도 됩니다.

    • system:serviceaccount:kube-system:generic-garbage-collectorsystem:serviceaccount:kube-system:namespace-controller 사용자는 제거할 리소스를 검색할 때 등록된 모든 API를 호출하므로 결과에 표시될 수 있습니다.
    • system:kube-controller-managersystem:cluster-policy-controller 사용자는 다양한 정책을 적용하는 동안 모든 리소스를 진행하므로 결과에 나타날 수 있습니다.

    -o jsonpath를 사용하여 결과를 필터링할 수도 있습니다.

    $ oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.metadata.name}{"\n"}{end}'

    출력 예

    1.26	flowschemas.v1beta1.flowcontrol.apiserver.k8s.io
    1.26	horizontalpodautoscalers.v2beta2.autoscaling
    1.25	poddisruptionbudgets.v1beta1.policy
    1.25	podsecuritypolicies.v1beta1.policy
    1.26	prioritylevelconfigurations.v1beta1.flowcontrol.apiserver.k8s.io

5.2.3. APIRequestCount를 사용하여 제거된 API를 사용하는 워크로드 식별

지정된 API 버전에 대해 APIRequestCount 리소스를 검사하여 API를 사용하는 워크로드를 식별할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

절차

  • 다음 명령을 실행하고 usernameuserAgent 필드를 검사하여 API를 사용하는 워크로드를 식별할 수 있습니다.

    $ oc get apirequestcounts <resource>.<version>.<group> -o yaml

    예를 들면 다음과 같습니다.

    $ oc get apirequestcounts poddisruptionbudgets.v1beta1.policy -o yaml

    -o jsonpath 를 사용하여 APIRequestCount 리소스에서 사용자 이름userAgent 값을 추출할 수도 있습니다.

    $ oc get apirequestcounts poddisruptionbudgets.v1beta1.policy \
      -o jsonpath='{range .status.currentHour..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \
      | sort -k 2 -t, -u | column -t -s, -NVERBS,USERNAME,USERAGENT

    출력 예

    VERBS  USERNAME                                                                       USERAGENT
    watch  system:serviceaccount:openshift-operators:3scale-operator                      manager/v0.0.0
    watch  system:serviceaccount:openshift-operators:datadog-operator-controller-manager  manager/v0.0.0