Начало работы с частным облаком Nx

Nx Private Cloud-это образ docker,который может быть развернут в вашем облаке.В этой версии все данные хранятся в вашем облаке,за исключением биллинга и данных об использовании,которые отправляются в Nx Cloud API для обеспечения интегрированного биллинга.

Компаниям, которым нужен полный контроль над данными без внешних вызовов API, подойдет Nx Enterprise .

Nx Cloud состоит из 3 частей:

  1. Нестационарный сервис Nx Cloud
  2. MongoDB database
  3. File server

По умолчанию контейнер, созданный образом nxprivatecloud/nxcloud , создаст все три: службу, базу данных и файловый сервер. Использование одного контейнера — это самый простой способ его настройки, но не самый надежный способ запуска Nx Cloud.

При запуске всего вместе вы не сможете запустить более одного экземпляра контейнера Nx Cloud. Поэтому, хотя это и не требуется, мы рекомендуем запускать MongoDB отдельно (см. ниже, как это сделать).

В инструкции сначала будет рассмотрен запуск всего вместе,а затем,в конце,будет рассказано о запуске базы данных и файлового сервера по отдельности.

В инструкциях будут использоваться команды Docker, но вы также можете развернуть Nx Cloud в кластере Kubernetes (дополнительную информацию см. здесь ).

Запуск частного облака Nx

Шаг 1:Вытяните изображение

> docker pull nxprivatecloud/nxcloud

Чтобы обновить версию Nx Private Cloud,извлеките новую версию образа и запустите ее на том же монтировании (см.ниже).

Шаг 2:Создание контейнера

В зависимости от того,как настроена ваша инфраструктура,вы можете запустить Nx Private Cloud,используя HTTPS или HTTP.Если перед Nx Cloud установлен прокси-сервер/балансер нагрузки,вы,скорее всего,захотите запустить Nx Private Cloud по HTTP (прокси-сервер/балансер нагрузки будет обрабатывать TLS).В противном случае,скорее всего,вы захотите запустить Nx Private Cloud с помощью HTTPS.

Чтобы создать контейнер:

  1. Вам нужно будет создать каталог на хост-компьютере, где будут храниться данные. ( В этом нет необходимости, если вы сами используете mongo. См. ниже. )
  2. Вам нужно будет знать URL-адрес, по которому можно получить доступ к частному облаку (см. NX_CLOUD_APP_URL ниже).
    • NX_CLOUD_APP_URL должен быть доступен с ваших компьютеров CI и dev.
    • NX_CLOUD_APP_URL можно установить с URL-адресом HTTP или HTTPS. В случае, когда вы используете прокси/балансировщик нагрузки, вы все равно можете поставить HTTPS (URL-адрес будет разрешен прокси-сервером до того, как вы попадете в приложение).
    • NX_CLOUD_APP_URL , скорее всего, является внешним IP-адресом или доменом балансировщика нагрузки.
  3. Если вы используете Nx Private Cloud с помощью HTTPS,вам необходимо сгенерировать или получить SSL-сертификат и закрытый ключ SSL.

Как только вы получите всю необходимую информацию, вы можете запустить следующее:

Using HTTPS

> docker create --name cloud \

        -p 443:8081 \
        -e CERT_KEY="$(cat ./tools/certs/key.pem)" \
        -e CERT="$(cat ./tools/certs/cert.pem)" \
        -e NX_CLOUD_APP_URL="https://cloud.myorg.com" \
        -e ADMIN_PASSWORD=admin \
        -v /data/private-cloud:/data nxprivatecloud/nxcloud:latest

Использование HTTP (без прокси)

> docker create --name cloud \

        -p 80:8081 \
        -e NX_CLOUD_APP_URL="http://cloud.myorg.com" \
        -e ADMIN_PASSWORD=admin \
        -v /data/private-cloud:/data nxprivatecloud/nxcloud:latest

Использование HTTPS через прокси

> docker create --name cloud \

        -p 80:8081 \
        -e NX_CLOUD_APP_URL="https://cloud.myorg.com" \
        -e ADMIN_PASSWORD=admin \
        -v /data/private-cloud:/data nxprivatecloud/nxcloud:latest

Давайте посмотрим, что означают эти параметры:

  • 443:8081 сопоставляет внутренний порт 8081 с 443, поэтому к нему можно получить доступ в браузере без указания порта. 80:8081 работает так же, когда вы используете HTTP вместо HTTPS.
  • CERT_KEY и CERT содержат значения закрытого ключа и сертификата. Расширения файлов сертификата и ключей могут быть разными, но пока они в формате PEM (как в случае, если вы используете, например, OpenSSL), команда будет работать.
  • NX_CLOUD_APP_URL — это URL-адрес, по которому можно получить доступ к облаку (например, https://nxcloud.privateurl.com ). Важно: если вы не экспериментируете, это не будет localhost. Это должен быть URL-адрес, к которому могут получить доступ ваш CI и ваш компьютер разработчика. Также обратите внимание, что в URL-адресе нет завершающей косой черты.
  • ADMIN_PASSWORD содержит пароль администратора. Пользователь с правами администратора создается при первом запуске облака, после этого вы можете удалить эту переменную env. Вместо пароля администратора вы также можете следовать приведенным здесь инструкциям, чтобы настроить аутентификацию GitHub.
  • -v /data/private-cloud:/data задает том, на котором хранятся данные. /data/private-cloud — это папка на вашем компьютере, а /data — общая папка из образа Docker.

Шаг 3:Запуск контейнера

После создания контейнера его можно запустить с помощью:

> docker start cloud

Представьте , что для NX_CLOUD_APP_URL установлено значение https://nxcloud.privateurl.com .

Теперь перейдите на https://nxcloud.privateurl.com , чтобы увидеть, как работает облако. Вы можете войти в учетную запись, используя admin/ADMIN_PASSWORD .

Шаг 4:Подключите рабочее пространство

Запустите NX_CLOUD_API=https://nxcloud.privateurl.com nx g @nrwl/nx-cloud:init. Нажмите на ссылку, чтобы подключить рабочую область к вашей учетной записи администратора.

Шаг 5:Настройка выставления счетов

Перейдите на https://nxcloud.privateurl.com , выберите рабочую область, нажмите Billing. Вы увидите ссылку, перенаправляющую вас на https://nx.app , где вы можете зарегистрировать свою кредитную карту.

Обратите внимание,что для синхронизации информации о счетах обычно требуется несколько минут.

Как указано выше, Nx Private Cloud будет хранить все ваши артефакты и информацию о запусках локально, но будет сообщать об использовании на https://api.nrwl.io .

Необязательный шаг 6:Настройка аутентификации GitHub

Следуйте приведенным здесь инструкциям, чтобы настроить аутентификацию GitHub OAuth, чтобы вы могли приглашать других участников вашей команды в рабочую область.

Необязательный шаг 7:Настройка интеграции GitHub Pull Request

При желании вы можете настроить частное облако для публикации статистики сборки непосредственно в запросах на вытягивание GitHub.

Дополнительный шаг 8:Настройка прокси-сервера

Если ваш контейнер не может получить прямой доступ к api.nrwl.io и должен общаться через прокси-сервер, вы можете добавить -e HTTPS_PROXY="https://myproxy.myorg.com" в команду создания контейнера.

Запуск базы данных Mongo отдельно (рекомендуется)

Nx Cloud использует MongoDB для хранения своих метаданных. По умолчанию Nx Private Cloud запустит экземпляр MongoDB и сохранит его данные в предоставленном томе. Но вы также можете указать Nx Private Cloud использовать другой экземпляр MongoDB (например, если вы используете MongoDB Atlas или Cosmos DB). Для этого укажите переменную env NX_CLOUD_MONGO_SERVER_ENDPOINT при создании контейнера, например:

-e NX_CLOUD_MONGO_SERVER_ENDPOINT="mongodb://domain-with-mongo:27017/nrwl-api"

По умолчанию Nx Cloud требует Mongo 4.2+.Если вы используете более старую версию Mongo (например,если вы используете Cosmos DB),пожалуйста,добавьте

-e NX_CLOUD_USE_MONGO42=false

Использование MongoDB Kubernetes Operator

Команда MongoDB поддерживает MongoDB Kubernetes Operator с открытым исходным кодом . Вы можете использовать его для настройки собственного развертывания MongoDB. Дополнительную информацию см . на странице Nx Cloud и Kubernetes .

Using CosmosDB

Если вы развертываете систему в Azure,у вас может быть доступ к CosmosDB.Дополнительную информацию см.здесь.

Использование Mongo Atlas

Mongo Atlas — отличный вариант для развертывания MongoDB.

Использование внешнего хранилища файлов

По умолчанию Nx Private Cloud запустит файловый сервер и будет хранить кэшированные артефакты в предоставленном томе.Но вы также можете настроить Nx Private Cloud на использование внешнего файлового хранилища.На данный момент поддерживаются только S3 и Azure Blob.

Using S3/Minio

Чтобы настроить S3 в качестве хранилища файлов, предоставьте переменные окружения AWS_S3_ACCESS_KEY_ID , AWS_S3_SECRET_ACCESS_KEY и AWS_S3_BUCKET при создании контейнера докера Nx Cloud, например:

-e AWS_S3_ACCESS_KEY_ID="SOMEKEY"
-e AWS_S3_SECRET_ACCESS_KEY="SOMESECRETKEY"
-e AWS_S3_BUCKET="nx-cache-bucket-name"

Если вы используете ускоренное ведро, добавьте: -e AWS_S3_ACCELERATED=true

Если вы используете локальную установку S3 (например,Minio),вы можете установить конечную точку следующим образом:

-e AWS_S3_ENDPOINT="https://local-installation.myorg.com"
-e AWS_S3_ACCESS_KEY_ID="SOMEKEY"
-e AWS_S3_SECRET_ACCESS_KEY="SOMESECRETKEY"
-e AWS_S3_BUCKET="nx-cache-bucket-name"

Примечание. Не забудьте установить срок действия элемента кэша . В настоящее время значение по умолчанию составляет 4 недели. Если вы хотите хранить элементы дольше, например, в течение 8 недель, не забудьте также установить переменную env NX_CACHE_EXPIRATION_PERIOD_IN_DAYS=56 , чтобы контейнер также знал, когда истечет срок действия записей кэша Mongo.

Using Azure

Чтобы настроить Azure Blob в качестве хранилища файлов, подготовьте переменные env AZURE_CONNECTION_STRING и AZURE_CONTAINER при создании контейнера Docker Nx Cloud, например:

-e AZURE_CONNECTION_STRING="SOME-CONNECTION-STRING"
-e AZURE_CONTAINER="files"

Чтобы получить значение AZURE_CONNECTION_STRING , перейдите в свою «Учетную запись хранения» и нажмите «Ключи доступа». Вам также потребуется создать контейнер в своей учетной записи хранения перед запуском контейнера Nx Cloud.

Если вы используете внешнее файловое хранилище и внешний экземпляр MongoDB,вам не нужно предоставлять том.

Примечание. См. примечание выше об установке срока действия кэша. Хранилище BLOB-объектов Azure см. в этом руководстве .