Я хотел бы знать, как (и если это возможно) изменить учетные данные URI из службы в Cloud Foundry. В частности, сервис mLab (бесплатный тариф) от Pivotal Cloud Foundry.
Фон
Я создал и отправил приложение nodejs в Pivotal Cloud Foundry.
Это приложение привязано к сервису mLab с использованием бесплатного плана.
Когда служба mLab была создана с использованием веб-сайта Pivotal, она автоматически создала базу данных с пользователем и паролем.
Открывая настройки приложения на веб-сайте Pivotal, я вижу следующие переменные среды. Обратите внимание на монго ури внутри credentials
и name
внутри mLab
.
{
"staging_env_json": {},
"running_env_json": {},
"system_env_json": {
"VCAP_SERVICES": {
"mlab": [
{
"label": "mlab",
"provider": null,
"plan": "sandbox",
"name": "users",
"instance_name": "users",
"binding_name": null,
"credentials": {
"uri": "mongodb://CloudFoundry_someusergenerated:apasswordgeneratedautomatically@somehost.mlab.com:someport/CloudFoundry_database_name"
}
}
]
}
},
"application_env_json": {
"VCAP_APPLICATION": {
"cf_api": "https://donotuseapi.run.pivotal.io",
"application_name": "website",
"application_uris": [
"xxx.cfapps.io"
],
"name": "website",
"space_name": "space1",
"uris": [
"xxx.cfapps.io"
]
}
}
}
Соединение с базой данных работает нормально с этим именем пользователя и паролем по умолчанию. Чтобы получить mongodb uri из переменных окружения, я использую пакет npm cfenv
const appEnv = require('cfenv').getAppEnv();
const env = process.env;
keys = {
mongodb: {
dbURI: appEnv.getServiceURL(env.MONGO_SERVICE_NAME)
}
};
В моем файле manifest.yaml MONGO_SERVICE_NAME
указано в соответствии с именем службы в переменных среды.
---
applications:
- name: website
memory: 128M
disk_quota: 256M
random-route: true
buildpack: nodejs_buildpack
health-check-type: port
env:
MONGO_SERVICE_NAME: 'users'
Опять же, соединение с БД работает нормально.
===
Затем я открыл сайт mLab для этой конкретной базы данных и создал нового пользователя базы данных.
Теперь я хочу обновить credentials.uri
из VCAP_SERVICES (переменные среды) для этой конкретной службы, чтобы использовать нового пользователя и пароль.
Насколько я понимаю, cf update-service
команда CLI не подразумевается под этим, поэтому мне интересно, является ли это ограничением Cloud Foundry, Pivotal или mLab. Могу поспорить, что это ограничение связано с тем, что я использую пробную учетную запись Pivotal и бесплатный тариф mLab, однако мой вопрос остается прежним, если я обновляю планы.
Спасибо