gcloud app deploy '--appyaml'플래그가 작동하지 않는 것 같습니다.

Aug 19 2020

Google App Engine의 경우 배포시 삽입 env_variables하고 싶습니다 app.yaml. 에 대한 문서에서 다음 gcloud app deploy과 같은 플래그가 --appyaml있음을 알 수 있습니다.

DEPLOYABLE에 정의 된 것을 대체 할 특정 app.yaml로 배포합니다.

https://cloud.google.com/sdk/gcloud/reference/app/deploy

그래서 나는 내를 읽고 app.yaml, 내 추가 환경 변수를 주입하고,이 새로운 app.yaml을 임시 파일에 쓴 다음 gcloud app deploy. 명령 gcloud은 다음과 같이 표시됩니다.

gcloud app deploy . --version dev --project myproject --appyaml='/var/folders/1z/qk45g9p934lg75byl8b74xyh0000gn/T/tmpgdjVUG.yaml'

배포가 성공하고 새 코드가 업로드되지만 새 환경 변수가이를 구성하지 않는 것 같습니다.

가짜 값을 제공 --appyaml하면 오류가 발생하므로 내 입력을 사용하는 것 같습니다.

내가 뭘 잘못 할 수 있는지 어떤 아이디어?

답변

2 vitooh Aug 19 2020 at 17:09

HelloWorld다음과 같이 node.JS 를 약간 수정 하여 표준 AppEngine에서 테스트했습니다 .

'use strict';

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    var my_respond = "variables: ";
    res.status(200).send(Object.entries(process.env)).end();
});

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

module.exports = app;

샘플은 결과로 환경 변수를 표시합니다.

내가 가장 간단하게 추가 한 것보다 app.yaml:

runtime: nodejs10
env_variables:
  MY_VAR: "my value from app.yaml"

다른 위치보다 다른 yaml이름 을 추가했습니다 app1.yaml.

runtime: nodejs12
env_variables:
  MY_VAR: "my value from app1.yaml"

그래서 이것은 노드 버전과 MY_VAR.

내 테스트에 따르면 이것은 문서에서 설명한 것과 약간 다르게 작동하는 것 같습니다. 적어도 나는 그것을 다르게 이해합니다.

--appyaml플래그 를 사용할 수는 있지만 app.yaml디렉토리에 파일 이 없을 때만 가능합니다 . 앱 디렉토리에없는 경우 플래그를 사용하는 것보다 다른 yaml.

그래서으로 배포하려고 할 때 gcloud app deploy --appyaml="/home/vitooh/app1.yaml"app.yaml응용 프로그램이 함께 배포 된 응용 프로그램 디렉토리에 있었다 - 플래그가 아무것도하지 않도록. 그러나 app.yaml플래그가 작동 하지 않고 수행하면 변수 값이 변경됩니다.

실제로 배포를 확인하기 직전에 요약이 표시된 명령을 제출 한 직후 다음 descriptor과 같은 값으로 찾을 수 있습니다.

descriptor:      [/home/vitooh/app1.yaml]
source:          [/home/vitooh/appEngine/nodejs-docs-samples/appengine/hello-world/standard]
target project:  [xxxxx-test-01]
target service:  [default]
target version:  [20200819t094956]
target url:      [https://xxxxx-test-01.appspot.com]

Do you want to continue (Y/n)?
1 yedpodtrzitko Aug 19 2020 at 18:48

질문은 세부 사항이없는 블랙 박스입니다. "내가 fabfile을 가지고 있는데 일이 발생하지만 잘못 발생합니다." 그러나 여기에 app.yaml. 다른 yaml 파일을 참조 app.yaml할 수있는라는 지시문을 포함 할 수 있으며 includes, 여기서 환경 변수를 가질 수 있으므로 원본 파일을 건드릴 필요가 없습니다.

app.yaml :

(...)

includes:
  - my_vars.yaml

my_vars.yaml :

env_variables:
    MY_VAR: value