Действительно, это не работает с CLI. Когда вы устанавливаете запятую между 2 значениями, она не работает.
Вы можете использовать решение @Kolban, где вы создаете файл в GCS и можете ссылаться только на этот файл в EnvVar. Но это решение подразумевает обновление вашего кода для получения и чтения файла из облачного хранилища (больше роли, больше развертывания для выполнения). Но он работает, я использую этот режим для передачи SQL запросов в мои сервисы Cloud Run, до сих пор это было единственное решение!
Однако есть новое бета-решение, доступное через 2 недели: вы можно использовать функцию services replace
. Эта функция позволяет вам предоставить только файл yaml для описания вашего сервиса. Конечно, этот YAML совместим с родственным API, и, следовательно, стандарт.
Я тестировал с JSON, и он работает, но это подразумевает некоторые изменения в процессе развертывания (создайте файл YAML с изображением и env vars). Сначала создайте минимальный файл YAML (с именем, например: jsonenv.yaml
)
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
#Name of the service
name: jsonenv
spec:
template:
spec:
containers:
- env:
- name: NODE_CONFIG
value: '{"1":"2","3":"4"}'
image: gcr.io/PROJECT_ID/CONTAINER_NAME
Затем используйте эту команду
gcloud beta run services replace jsonenv.yaml --platform managed --region WHERE_YOU_WANT
Это работает. Надеюсь, что это решит вашу проблему.
РЕДАКТИРОВАТЬ
Для наименования вашей ревизии, вы можете добавить metadata.name
в template
следующим образом:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
#Name of the service
name: jsonenv
spec:
template:
metadata:
#Name of the revision
name: my-revision-name
spec:
containers:
однако, вы не можете управлять ролью IAM с помощью этой команды. Таким образом, --allow-unauthenticated
нельзя использовать с заменой. Вы должны установить эту авторизацию вручную
gcloud run services add-iam-policy-binding jsonenv \
--member="allUsers" \
--role="roles/run.invoker"
Примечание : это необходимо сделать только один раз при первом развертывании службы, а не при каждом развертывании ревизии