gpt4 book ai didi

google-cloud-platform - 如何验证 Google Cloud Endpoints 服务 URL 的所有权?

转载 作者:行者123 更新时间:2023-12-02 13:36:49 25 4
gpt4 key购买 nike

我已经设置了 Google Cloud Endpoints 项目,并且可以调用 http/https 请求。 Endpoints 为我提供了可以使用的 MY_API.endpoints.MY_PROJECT.cloud.goog 域名。我正在使用具有 HTTP/JSON 到 gRPC 转码功能的 gRPC Cloud Endpoints。

它部署在Google Kubernetes Engine上(部署yaml脚本附在最后)。

当我尝试使用该 URL 创建推送订阅时,出现下一个错误:

"The supplied HTTP URL is not registered in the subscription's parent project (url="https://MY_API.endpoints.MY_PROJECT.cloud.goog/v1/path", project_id="PROJECT_ID").

我的 gcloud 通话:

gcloud pubsub subscriptions create SUB_NAME --topic=projects/MY_PROJECT/topics/MY_TOPIC --push-endpoint="https://MY_API.endpoints.MY_PROJECT.cloud.goog/v1/path"

我尝试使用该 DNS 名称创建 Cloud DNS 公共(public)区域并设置相应的记录。但我仍然无法在 Google Search Console 中验证所有权。

问题是如何为 MY_API.endpoints.MY_PROJECT.cloud.goog 域设置 DNS TXT 记录以验证所有权?或者如何以其他方式将 Pubsub 推送订阅与 Cloud Endpoints gRPC 结合使用?

如果我能够更改转换为 HTTP 的 gRPC 响应的元或 header ,我就可以验证域的所有权。但我怀疑是否有办法。

<小时/>

我用于部署的 Kubernetes 脚本(如果有帮助的话)。

apiVersion: v1
kind: Service
metadata:
name: GKE_SERVICE_NAME
spec:
ports:
# Port that accepts gRPC and JSON/HTTP2 requests over HTTP.
- port: 80
targetPort: 9000
protocol: TCP
name: http2
selector:
app: GKE_SERVICE_NAME
type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: GKE_SERVICE_NAME
spec:
replicas: 1
template:
metadata:
labels:
app: GKE_SERVICE_NAME
spec:
containers:
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1
args: [
"--http2_port=9000",
"--service=MY_API.endpoints.MY_PROJECT.cloud.goog",
"--rollout_strategy=managed",
"--backend=grpc://127.0.0.1:50051"
]
ports:
- containerPort: 9000
- name: MY_CONTAINER_NAME
image: gcr.io/MY_PROJECT/IMAGE_NAME:v1
ports:
- containerPort: 50051

最佳答案

最终,您的目标是将 Cloud Pub/Sub 推送到 GKE 上的容器。有几种方法可以做到这一点

  • Domain ownership validation ,正如您所发现的:
    • 您可以尝试使用 DNS 来完成此操作,有一个 guide for configuring DNS for a cloud.goog domain .
    • 您可以尝试使用 non-DNS alternatives 之一来完成此操作,其中包括托管来自域的某些类型的 HTML 或 Javascript 片段等方法。不过,这可能很棘手,因为我不知道如何使 Cloud Endpoints 提供静态 HTML 或 Javascript 内容。它在 OpenAPI format 中提供响应,本质上是 JSON。
    • 您是否尝试过将 Cloud Pub/Sub 订阅和 cloud.goog 域放在同一个项目中?在这种情况下,它可能已被视为经过验证的域。
  • 由于您已经在使用 Google Kubernetes Engine,因此请使用 Cloud Run 或 Cloud Run on top of Google Kubernetes Engine 。 Cloud Run 和 GKE 上的 Cloud Run 之间存在差异,但两者都将运行 Kubernetes 容器。 Cloud Run 上的推送端点不需要域所有权验证(我不确定这是否也涵盖 GKE 上的 Cloud Run)。您还可能获得其他有趣的好处,因为 Cloud Run 本质上是为了解决从容器提供推送端点的用例而设计的。例如,它会为您进行自动缩放和监控。

关于google-cloud-platform - 如何验证 Google Cloud Endpoints 服务 URL 的所有权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com