title | description | position | category |
---|---|---|---|
Наследование YAML |
Наследование YAML |
9 |
Обзор |
С помощью ключевого слова extend
решается проблема избыточности множественных конфигураций YAML.
Например, при использовании Serverless Devs для развертывания приложения Function Compute FC, предварительная и окончательная среды отличаются только именем сервиса. Все остальные конфигурации идентичны. YAML-конфигурация выглядит следующим образом:
├── code
├── s.yaml
├── s.prod.yaml
└── s.pre.yaml
s.yaml
— это базовая конфигурацияedition: 1.0.0
access: "default"
services:
fc-deploy-test:
component: fc
props:
region: cn-hangzhou
service:
name: fc-service
nasConfig: Auto
description: "Serverless Devs Service"
function:
name: hello-function
description: "Serverless Devs Function"
codeUri: "./"
runtime: nodejs12
timeout: 60
s.pre.yaml
— это конфигурация предварительной средыextend: s.yaml
services:
fc-deploy-test:
props:
service:
name: fc-service-pre
tracingConfig: Disable
s.prod.yaml
— это конфигурация окончательной средыextend: s.yaml
services:
fc-deploy-test:
props:
service:
name: fc-service-pro
tracingConfig: Enable
Использование ключевого слова extend
позволяет наследовать конфигурации.### Окончательная конфигурация
Указание YAML-конфигурации s deploy -t s.prod.yaml
приводит к следующему результату:
edition: 1.0.0
access: "default"
services:
fc-deploy-test:
component: fc
props:
region: cn-hangzhou
service:
name: fc-service-pro
tracingConfig: Enable
nasConfig: Auto
description: "Serverless Devs Service"
function:
name: hello-function
description: "Serverless Devs Function"
codeUri: "./"
runtime: nodejs12
timeout: 60
Конфигурационное слияние использует модуль extend2 для глубокого копирования.
Однако, учитывая, что уровень конфигурации yaml
достаточно глубок, как в приведённом выше [примере] (#/типичная_ситуация), нам необходимо переопределить имя сервиса service name
в среде предрелиза, что требует строго следования иерархической структуре, что является относительно сложным.
services:
fc-deploy-test:
props:
service:
name: fc-service-pro
tracingConfig: Enable
При объединении данных происходит их прямое перезаписывание, а не слияние.```javascript const a = { arr: [1, 2], }; const b = { arr: [3], }; extend(true, a, b); // => { arr: [ 3 ] }
## Рекомендации
Наследование YAML обычно используется для разделения окружений. Например, предрелизное окружение — это `s.pre.yaml`, а онлайн-окружение — `s.pro.yaml`. При развертывании укажите соответствующий шаблон развертывания `s deploy -t s.pro.yaml`.
### Общие переменные окружения
Ниже приведены некоторые общие значения переменных окружения и их соответствующие описания.
| Ключ | Описание |
| --- | --- |
| local | локальная среда разработки |
| dev/daily/development | ежедневная среда разработки |
| pre/prepub | предпроизводственная среда |
| prod/production | производственная среда |
| test/unittest | среда юнит-тестирования |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )