【问题标题】:Running dataflow locally on Cloud Run在 Cloud Run 上本地运行数据流
【发布时间】:2020-10-12 20:34:14
【问题描述】:

我正在尝试自动化流数据流的功能测试。但是,流数据流正在侦听位于我们项目之外的发布子主题,并且我们无权访问发布消息以执行测试。 当我手动测试我的数据流时,我只是在本地运行它,并连接到我们可以控制发布消息的内部 pubsub 主题。 所以我想为我们的功能测试自动化同样的行为。 以下是我对此的想法,

  1. 在 Cloud Run 中的容器上本地运行数据流(监听内部主题)
  2. 通过向内部主题发布消息开始功能测试
  3. 等待几秒钟,然后检查消息是否已处理到 BigQuery

对于第1步,我编写了以下docker文件(为简单起见,排除了一些命令),

# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.8-slim

# Allow statements and log messages to immediately appear in the Knative logs
ENV PYTHONUNBUFFERED True

#Install git
RUN apt-get update \
    && apt-get install -y git

# Make ssh dir
RUN mkdir /root/.ssh/

# Copy over private key, and set permissions

#Change directory and clone git repo

#Set working directory and authenticate service account

# Install dependencies
RUN pip install -r requirements.txt

# Run dataflow locally
CMD ["python", "main.py", "deploy", "local"]

然后我构建了在 Container Registry 中创建镜像的镜像。 然后我去了云运行控制台并尝试用这个图像创建一个服务。 为此我收到以下错误,

Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information. Logs URL: https://console.cloud.google.com/logs/viewer?project=xxxxxxxx&resource=cloud_run_revision/service_name/consume-sales-order-functional-test/revision_name/consume-sales-order-functional-test-00002-vib&advancedFilter=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22consume-sales-order-functional-test%22%0Aresource.labels.revision_name%3D%22consume-sales-order-functional-test-00002-vib%22

我知道我收到此错误可能是因为 Cloud run 期望我提及服务可以侦听的端口。但我的数据流并不是真正的网络应用程序,我不启动网络服务器。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 我在 Java 中构建了类似的东西。我有一个带有 HTTP 端点的网络服务器,它在直接运行器中运行光束管道。但它嵌入在网络服务器中,这是 Ahmet 提到的 Cloud Run 合同的一部分

标签: google-cloud-dataflow google-cloud-run


【解决方案1】:

如果您没有 Web 应用程序在给定的 $PORT 号码上侦听 HTTP,则该应用程序不适合 Cloud Run。

【讨论】:

  • 谢谢。我对此进行了更多搜索,发现“Compute Engine”或“Kubernetes”可以作为运行此类容器的选项。
猜你喜欢
  • 2019-08-30
  • 2021-05-04
  • 2020-04-08
  • 2019-09-11
  • 2020-12-15
  • 2021-12-02
  • 2020-06-09
  • 1970-01-01
  • 2021-05-21
相关资源
最近更新 更多