我正在尝试使Cloud Run 的 IAM 策略在 Google Cloud Load Balancer 后面工作。
直接调用 Cloud Run 服务时,我需要将目标受众设置为等于 Cloud Run 服务的 URL,例如my-service-abcdef.a.run.app
:
import { credentials } from '@grpc/grpc-js';
import { GoogleAuth } from 'google-auth-library';
const clientCredentials = await new GoogleAuth().getIdTokenClient(
'https://my-service-abcdef.a.run.app',
);
const client = new MyServiceClient(
'my-service-abcdef.a.run.app',
credentials.combineChannelCredentials(
credentials.createSsl(),
credentials.createFromGoogleCredential(clientCredentials),
),
);
现在,当我将 Cloud Run 服务放在 GCLB 后面时,当我提供已链接到 GCLB 的域时,我实际上仍然可以调用它(例如my-domain.com
),但我需要保持目标受众(对于 getIdTokenClient 调用)完好无损(https://my-service-abcdef.a.run.app
)。
一旦我在 GCLB 后面添加更多具有不同“本机”URL(在.run.app
域中,因此需要不同的受众)的区域,这就会中断(这是完全可以理解的)。
Cloud Run 服务是否接受任何其他受众?我可以指定我自己的吗?