![](/img/trans.png)
[英]How Can I pass secret manager secret using cloudbuild to app engine environment variable in app.yaml
[英]App Engine: different app.yaml files based on environment
我目前正在將一個應用程序遷移到 Google App Engine,它依賴於各種外部連接的環境變量。 看起來 app.yaml 文件是我應該設置這些配置的地方,但是我如何管理這些變量可能不同的不同環境(開發、測試、暫存、生產)?
最簡單的解決方案是否只是使用不同的 app.yaml 文件為每個環境創建一個分支?
app.yaml
可以為應用程序的其余部分設置環境變量,但它無法檢查它們並根據它們的傳入值做不同的事情。 因此,您確實需要向正在使用的任何部署過程提供不同的app.yaml
文件。
至於准備正確的app.yaml
作為 GAE 部署的初步步驟的最佳方法,這是一個更微妙的 devops 問題。 你提到的 git 或 hg 中的分支會起作用,但就我個人而言(也許只是運氣不好?-)我經常發現我的結構越簡單越好,並且分支打算長期存在(如與打算很快合並回后備箱的臨時偏差相反)給了我更嚴重的頭痛。
所以,如果由我決定,我會有一個preapp.yaml
模板(可能是 jinja2,無論如何),其中包含所需的 if/else 邏輯,並從中准備正確的app.yaml
,作為任何部署的第一步,用一個簡單的 Python 腳本。
當前測試版的gcloud preview deployment-manager
幾乎使用了那種架構(用於所有類型的配置文件,因此具有更多不可避免的復雜性),請參閱https://cloud.google.com/deployment-manager/ ,所以當然,我可能會偏向這種方法(但正如我提到的,我的偏向主要來自以前糟糕的部署經歷:-)。
我需要一個可以與 CD 管道配合使用的解決方案。 我在我的 git 存儲庫上使用構建觸發器。 使用這些,我可以將要啟動的分支名稱模板化到我的 cloudbuild.yaml 文件中。 我的第一個構建步驟是使用 branch_name 作為條件值從 shell 腳本生成 app.yaml。
# cloudbuild.yaml
- name: 'ubuntu'
args: ['bash', 'app.yaml.sh', '$BRANCH_NAME']
出於同樣的原因,我剛剛遇到了這個問題。 我最終為每個開發和產品創建了別名:
alias dev-deploy='cat dev.yaml > app.yaml; gcloud app deploy dev.yaml; rm app.yaml'
alias prod-deploy='cat prod.yaml > app.yaml; gcloud app deploy; rm app.yaml'
如果你運行gcloud app deploy --help
它說你可以將它傳遞給你想要用於部署的.yaml
的路徑:
EXAMPLES
To deploy a single service, run:
$ gcloud app deploy ~/my_app/app.yaml
假設您有一個要部署到的qa, uat, and prod
環境。 您可以輕松地為每個文件創建文件app.[env].yaml
,然后根據某些環境變量或 CI/CD 管道中的某些內容傳入您想要定位的文件路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.