4.2. 削除された API に関するクラスターの評価
削除される API が使用されている場所を管理者が特定するのに役立つ方法は複数あります。ただし、OpenShift Container Platform は、アイドル状態や外部ツールが使用されるワークロードなどのすべてのインスタンスを特定できません。すべてのワークロードと削除された API のインスタンスに対する他の統合を適切に評価することは管理者の責任です。
4.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
がキャプチャーします。アラートは、機密性が低くなるように調整して、実稼働システムでのアラートの疲弊を回避します。
4.2.2. APIRequestCount を使用した削除された API の使用の特定
APIRequestCount
API を使用して API 要求を追跡し、それらのいずれかが削除された API のいずれかを使用しているかどうかを確認することができます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできるようにする必要があります。
手順
以下のコマンドを実行して、出力の
REMOVEDINRELEASE
列を確認して、現在使用中の削除済みの API を特定します。$ oc get apirequestcounts
出力例
NAME REMOVEDINRELEASE REQUESTSINCURRENTHOUR REQUESTSINLAST24H cloudcredentials.v1.operator.openshift.io 32 111 ingresses.v1.networking.k8s.io 28 110 ingresses.v1beta1.extensions 1.22 16 66 ingresses.v1beta1.networking.k8s.io 1.22 0 1 installplans.v1alpha1.operators.coreos.com 93 167 ...
重要結果に表示される以下のエントリーは無視しても問題はありません。
-
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.22 certificatesigningrequests.v1beta1.certificates.k8s.io 1.22 ingresses.v1beta1.extensions 1.22 ingresses.v1beta1.networking.k8s.io
-
4.2.3. APIRequestCount を使用した、削除された API を使用しているワークロードを特定する
指定の API バージョンの APIRequestCount
リソースを確認して、API を使用しているワークロードを特定することができます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできるようにする必要があります。
手順
以下のコマンドを実行して、
username
およびuserAgent
を確認して、API を使用しているワークロードを特定できるようにします。$ oc get apirequestcounts <resource>.<version>.<group> -o yaml
以下に例を示します。
$ oc get apirequestcounts ingresses.v1beta1.networking.k8s.io -o yaml
-o jsonpath
を使用して、APIRequestCount
リソースからusername
およびuserAgent
の値を抽出することもできます。$ oc get apirequestcounts ingresses.v1beta1.networking.k8s.io \ -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 bob oc/v4.8.11 watch system:kube-controller-manager cluster-policy-controller/v0.0.0