Предварительная версия. Функциональность может измениться, но основные возможности сохранятся. Совместимость с будущими версиями может потребовать ручных действий по миграции.
Feature: Pages
Если шаблон публичных доменов %s.example.com
, то Pages будут доступны по адресу https://code-pages.example.com
(Субдомен code
).
Generic
Пример использования Generic
S3 (S3-compatible сервис) для развертывания:
1...
2features:
3 pages:
4 enabled: true
5 s3:
6 mode: External
7 bucketPrefix: d8
8 external:
9 provider: Generic
10 region: <REPLACE_ME>
11 accessKey: <REPLACE_ME>
12 secretKey: <REPLACE_ME>
13 endpoint: <REPLACE_ME> # например "http://minio.example.com:9090"
14
15...
YCloud
Пример использования YCloud S3 для развертывания:
1...
2features:
3 pages:
4 enabled: true
5 s3:
6 mode: External
7 bucketPrefix: d8
8 external:
9 provider: YCloud
10 accessKey: <REPLACE_ME>
11 secretKey: <REPLACE_ME>
12...
AzureRM
Пример использования AzureRM для развертывания:
1...
2features:
3 pages:
4 enabled: true
5 s3:
6 mode: External
7 bucketPrefix: d8
8 external:
9 provider: AzureRM
10 azureAccountName: <REPLACE_ME>
11 azureAccessKey: <REPLACE_ME>
12...
Внешний Redis
Примеры различной конфигурации внешнего redis-кластера
Один сервер
1...
2storages:
3 redis:
4 external:
5 auth:
6 enabled: true
7 password: <REPLACE_ME>
8 host: 10.10.10.2
9 port: 6379
10 mode: External
11...
С использованием сентинелов
1...
2storages:
3 redis:
4 external:
5 auth:
6 enabled: true
7 password: <REPLACE_ME>
8 masterName: <REPLACE_ME>
9 port: 6379
10 sentinels:
11 - host: <REPLACE_ME> # sentinel host #1
12 port: 26379
13 - host: <REPLACE_ME> # sentinel host #2
14 mode: External
15...
Внешний Postgres
Без TLS
1...
2storages:
3 postgres:
4 external:
5 database: db
6 host: <REPLACE_ME> # адрес мастер-хоста
7 port: 5432
8 username: <REPLACE_ME>
9 password: <REPLACE_ME>
10 praefectDatabase: praefect
11 praefectUsername: <REPLACE_ME>
12 praefectPassword: <REPLACE_ME>
13 mode: External
14...
С включенным TLS
Вы также можете использовать TLS авторизацию при подключении к основной базе данных:
1...
2storages:
3 postgres:
4 external:
5 database: db
6 host: <REPLACE_ME> # адрес мастер-хоста
7 port: 5432
8 username: simple_user
9 sslmode: verify-full
10 serverCA: |
11 # postgres server CA
12 clientCert: |
13 # Your TLS certificate
14 clientKey: |
15 # Your TLS key
16 mode: External
17...
Внешний S3
Generic
Пример использования Generic
S3 (S3-compatible сервис):
1...
2storages:
3 s3:
4 mode: External
5 bucketPrefix: d8
6 external:
7 provider: Generic
8 region: <REPLACE_ME>
9 accessKey: <REPLACE_ME>
10 secretKey: <REPLACE_ME>
11 endpoint: <REPLACE_ME> # например http://minio.example.com:9090
12...
YCloud
С выключенным серверным шифрованием
Пример использования стандартной конфигурации YCloud S3 описан здесь:
С включенным серверным шифрованием
Пример использования AWS c SSE (шифрование на стороне сервера):
1...
2storages:
3 s3:
4 mode: External
5 bucketPrefix: d8
6 external:
7 provider: AWS
8 region: <REPLACE_ME>
9 accessKey: <REPLACE_ME>
10 secretKey: <REPLACE_ME>
11 storageOptions:
12 serverSideEncryption: aws:kms
13 serverSideEncryptionKmsKeyId: <REPLACE_ME> # например arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
14...
AzureRM
Пример использования AzureRM:
1...
2storages:
3 s3:
4 mode: External
5 bucketPrefix: d8
6 external:
7 provider: AzureRM
8 azureAccountName: <REPLACE_ME>
9 azureAccessKey: <REPLACE_ME>
10...
Настройка бекапов
1backup:
2 restoreFromBackupMode: false
3 enabled: true
4 cronSchedule: "0 0 1 * *"
5 s3:
6 bucketName: <REPLACE_ME>
7 tmpBucketName: <REPLACE_ME>
8 mode: External
9 external:
10 accessKey: <REPLACE_ME>
11 provider: <REPLACE_ME>
12 region: <REPLACE_ME>
13 secretKey: <REPLACE_ME>
14 persistentVolumeClaim:
15 enabled: <true|false>
16 storageClass: network-hdd
Подготовка внешних ресурсов в YCloud
Настройка Managed Service for PostgreSQL
Для создания кластера Managed Service for PostgreSQL нужна роль vpc.user и роль managed-postgresql.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.
В консоли управления выберите каталог, в котором нужно создать кластер БД.
- Выберите сервис Managed Service for PostgreSQL.
- Нажмите кнопку Create cluster.
- Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.
- Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
- Выберите версию СУБД (рекомендована 16+).
- Выберите класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе Классы хостов. При изменении класса хостов для кластера меняются характеристики всех уже созданных хостов.
- В блоке База данных укажите атрибуты БД:
- Имя БД. Это имя должно быть уникальным в рамках каталога.
Имя базы может содержать латинские буквы, цифры, подчеркивание и дефис. Максимальная длина имени 63 символа. Имена
postgres
,template0
,template1
зарезервированы для собственных нужд Managed Service for PostgreSQL. Создавать базы с этими именами нельзя. - Имя пользователя — владельца БД и пароль. По умолчанию новому пользователю выделяется 50 подключений к каждому хосту кластера.
- Локаль сортировки и локаль набора символов. Эти настройки определяют правила, по которым производится сортировка
строк (
LC_COLLATE
) и классификация символов (LC_CTYPE
). В Managed Service for PostgreSQL настройки локали действуют на уровне отдельно взятой БД. По умолчанию используется локальC
. Подробнее о настройках локали см. в the документации PostgreSQL.
- Нажмите кнопку Создать кластер.
- Создание кластера займет некоторое время.
- Выберите кластер из списка и перейдите на вкладку Базы данных. Выберите базу данных и включите следующие расширения:
- Добавьте базу данных для компонента Praefect:
- Перейдите на вкладку Пользователи и выставьте лимит подключений. Мы рекомендуем выставить не менее 150.
Манифест для описанной конфигурации PostgreSQL
1...
2storages:
3 postgres:
4 mode: External
5 external:
6 host: <REPLACE_ME> # FQDN-адрес мастер хоста
7 port: 6432
8 database: <REPLACE_ME>
9 username: <REPLACE_ME>
10 password: <REPLACE_ME>
11 praefectDatabase: praefect
12 praefectUsername: <REPLACE_ME> # идентично значению postgres.username
13 praefectPassword: <REPLACE_ME> # идентично значению postgres.password
14...
Настройка Managed Service for Redis
Для создания кластера Managed Service for Redis нужна роль vpc.user и роль managed-redis.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.
В консоли управления выберите каталог, в котором нужно создать кластер БД.
- Выберите сервис Managed Service for Redis.
- Нажмите кнопку Создать кластер.
- В блоке Базовые параметры:
- Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.
- (Опционально) Добавьте описание кластера.
- Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
- Выберите версию СУБД (рекомендовано 7.0+).
- Нажмите кнопку Создать кластер.
- Создание кластера займет некоторое время.
Манифест для описанной конфигурации Redis
1...
2storages:
3 redis:
4 mode: External
5 external:
6 host: <REPLACE_ME> # FQDN of master хоста
7 port: 6379
8 auth:
9 enabled: true
10 password: <REPLACE_ME>
11...
Настройка S3
Создайте пользователя с именем d8-code-sa
. В ответ вернутся параметры пользователя:
1yc iam service-account create --name d8-code-sa
2id: <userID>
3folder_id: <folderID>
4created_at: "YYYY-MM-DDTHH:MM:SSZ"
5name: d8-code-sa
Назначьте роль storage.editor
вновь созданному пользователю для своего облака:
1yc resource-manager folder add-access-binding <folderID> --role storage.editor --subject serviceAccount:<userID>
Создайте Access key для пользователя. В дальнейшем с помощью этих данных будем авторизовываться в облаке:
1yc iam access-key create --service-account-name d8-code-sa
2access_key:
3 id: <id>
4 service_account_id: <userID>
5 created_at: "YYYY-MM-DDTHH:MM:SSZ"
6 key_id: <ACCESS_KEY>
7secret: <SECRET_KEY>
Манифест для описанной конфигурации S3
1...
2features:
3 pages:
4 enabled: true
5 s3:
6 mode: External
7 bucketPrefix: <REPLACE_ME>
8 external:
9 accessKey: <REPLACE_ME> # accesskey.key_id полученный на предыдущем шаге
10 provider: YCloud
11 secretKey: <REPLACE_ME> # secretkey полученный на предыдущем шаге
12...
13storages:
14 s3:
15 mode: External
16 bucketPrefix: <REPLACE_ME>
17 external:
18 provider: YCloud
19 accessKey: <REPLACE_ME> # accesskey.key_id полученный на предыдущем шаге
20 secretKey: <REPLACE_ME> # secretkey полученный на предыдущем шаге
21 proxyDownload: true
22...
Настройка веб метрик
Пример основан на Yandex.Metrica
Добавьте сниппет ниже к CodeInstance:
1...
2appConfig:
3 contentSecurityPolicy:
4 directives:
5 default_src: "'self'"
6 img_src: "'self' data: blob: https://mc.yandex.ru https://mc.yandex.com"
7 script_src: "'self' 'unsafe-inline' 'unsafe-eval' 'nonce-<SCRIPT_ID>' https://mc.yandex.ru https://mc.yandex.az https://mc.yandex.by https://mc.yandex.co.il https://mc.yandex.com https://mc.yandex.com.am https://mc.yandex.com.ge https://mc.yandex.com.tr https://mc.yandex.ee https://mc.yandex.fr https://mc.yandex.kg https://mc.yandex.kz https://mc.yandex.lt https://mc.yandex.lv https://mc.yandex.md https://mc.yandex.tj https://mc.yandex.tm https://mc.yandex.uz https://mc.webvisor.com https://mc.webvisor.org https://yastatic.net"
8 connect_src: "'self' https://mc.yandex.ru https://mc.yandex.com"
9 customHtmlHeaderTags: >
10 <!-- Yandex.Metrika counter -->
11
12 <script type="text/javascript" nonce="<SCRIPT_ID>">
13 (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
14 m[i].l=1*new Date();
15 for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
16 k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
17 (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
18
19 ym(100866129, "init", {
20 clickmap:true,
21 trackLinks:true,
22 accurateTrackBounce:true
23 });
24 </script>
25
26 <noscript><div><img src="https://mc.yandex.ru/watch/<TARGET_ID>"
27 style="position:absolute; left:-9999px;" alt="" /></div></noscript>
28
29 <!-- /Yandex.Metrika counter -->
30...
Не забудьте заменить <SCRIPT_ID>
и <TARGET_ID>
на свои значения.