@Dustin 的回答是正确的,但是“状态”消息是 Route 配置的间接结果,因为这些内容是单独更新的(您可能会看到它们之间有几秒钟的延迟)。如果您不介意,状态消息仍会告诉您修订已取消轮换。
直接使用 API 对象回答这个特定问题(重点是我的):
是否有我可以订阅的命令或事件确保没有流量指向旧版本?
您需要查看 API 上的 Route 对象。这是一个 Knative API(在 Cloud Run 上可用)但它没有 gcloud 命令:https://cloud.google.com/run/docs/reference/rest/v1/namespaces.routes
例如,假设您在 Cloud Run 服务上进行了 50%-50% 的流量拆分。执行此操作时,您会发现您的 Service 对象(您可以在 Cloud Console → Cloud Run → YAML 选项卡上看到)具有以下 spec.traffic 字段:
spec:
traffic:
- revisionName: hello-00002-mob
percent: 50
- revisionName: hello-00001-vat
percent: 50
这是“所需配置”,但实际上可能无法明确反映状态。更改此字段将更新 Route 对象——它决定了流量的拆分方式。
要查看 Route 对象的幕后(遗憾的是,我必须在这里使用 curl,因为没有 gcloud 用于此的命令:)
TOKEN="$(gcloud auth print-access-token)"
curl -vH "Authorization: Bearer $TOKEN" \
https://us-central1-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/GCP_PROJECT/routes/SERVICE_NAME
此命令将显示输出:
"spec": {
"traffic": [
{
"revisionName": "hello-00002-mob",
"percent": 50
},
{
"revisionName": "hello-00001-vat",
"percent": 50
}
]
},
(您可能会注意到它与 Service 的 spec.traffic 相同——因为它是从那里复制而来的)可以明确地告诉您当前哪些修订版正在为该特定服务提供流量。