2017-09-08 20 views
3

Apache Beam 2.1.0增加了對私有子網上的Dataflow運行器提交作業的支持,並且沒有公共IP,我們需要這些IP來滿足我們的防火牆規則。我計劃使用魷魚代理來訪問apt-get,pip等來安裝python依賴項;一個代理實例已經在運行,我們在我們的setup.py腳本中設置代理。如何在私有子網上運行Dataflow python?

python $DIR/submit.py \ 
     --runner DataflowRunner \ 
     --no_use_public_ips \ 
     --subnetwork regions/us-central1/subnetworks/$PRIVATESUBNET \ 
     --staging_location $BUCKET/staging \ 
     --temp_location $BUCKET/temp \ 
     --project $PROJECT \ 
     --setup_file $DIR/setup.py \ 
     --job_name $JOB_NAME 

當我嘗試通過python API運行時,我在啓動代理之前在worker-startup期間出錯。它看起來對我來說,每個工人首先嚐試安裝數據流SDK:

,它試圖更新requests和失敗時連接到pip

enter image description here

的無我的代碼已經在這個時候執行了,所以我在設置代理之前無法看到避免這個錯誤的方法。有沒有辦法啓動私有子網上的數據流python工作?

回答

3

我設法解決這個與NAT網關,而不是代理。 special configurations下與指令一起關注 - 我不得不編輯的步驟之一,通過網關自動將數據流工人實例:

gcloud compute routes create no-ip-internet-route --network my-network \ 
    --destination-range 0.0.0.0/0 \ 
    --next-hop-instance nat-gateway \ 
    --next-hop-instance-zone us-central1-a \ 
    --tags dataflow --priority 800 

我使用的標籤dataflow而不是no-ip,這是所有數據流的網絡標籤工人。

在這種情況下,NAT網關似乎比代理更容易解決問題,因爲它將路由流量而不必配置工作人員。