5.2. 削除された API に対するクラスターの評価

削除される API が使用されている場所を管理者が特定するのに役立つ方法は複数あります。ただし、OpenShift Container Platform は、アイドル状態や外部ツールが使用されるワークロードなどのすべてのインスタンスを特定できません。すべてのワークロードと削除された API のインスタンスに対する他の統合を適切に評価することは管理者の責任です。

5.2.1. 削除された API の使用を特定するためのアラートの確認

次のリリースで削除予定の API が使用されている場合に 2 つのアラートが発生します。

  • APIRemovedInNextReleaseInUse: OpenShift Container Platform の次のリリースで削除される API の場合
  • APIRemovedInNextEUSReleaseInUse: 次の OpenShift Container Platform Extended Update Support (EUS) リリースで削除される 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-collector および system:serviceaccount:kube-system:namespace-controller ユーザーは、削除するリソースの検索時に登録されたすべての API を呼び出すので、結果に表示される可能性があります。
    • system:kube-controller-manager および system: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 ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  • 以下のコマンドを実行して username および userAgent を確認すると、API を使用しているワークロードの特定に役立ちます。

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

    以下に例を示します。

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

    -o jsonpath を使用して、APIRequestCount リソースから username および 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