Рубрики
Uncategorized

Проходит без промежуток

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

Учебники семафор (10 частей серии)

В этом руководстве я хочу показать, что вы узнаете, как постоянно проверять и развертывать функции без сервеса CloudFlare. Рабочие облака Живи на краю своей сети и сможете перехватывать HTTP-запросы. С ними мы можем дополнить веб-сайты, создавать новые приложения и услуги или перенаправить и перенаправить трафик баланса.

Когда вы переходите с «сервера Full» в бессмертное мышление, вы остановитесь на FRETTING о Как и начать думать с точки зрения что Отказ Ваше сосредоточенность может перейти от управляющей инфраструктуры — будь то серверы или контейнеры — для записи кода. Это на поставщике облака, чтобы выяснить, как запустить его.

Предварительные условия

Вам нужно будет настроить несколько вещей, прежде чем читать в конце концов, это практическое руководство.

Начните с регистрации с Семафор и установка SEM CLI Отказ Мы будем использовать семафор, чтобы проверить и развернуть наш код без сервеса. После этого вилка Демо и клонировать это. После того, как разложили, добавьте CI/CD на ваш репо с:

$ cd semaphore-demo-cloudflare-workers
$ sem init

Вам также понадобится CloudFlare Аккаунт Активный домен проксированный через сервис Отказ

Смертные рамки

Давайте займем несколько минут, чтобы изучить приложение. Основная функция можно найти в Hello.js :

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  return new Response('Hello World!');
}

О да, здесь у нас есть архетипические Привет-мир Пример, только на этот раз в неверной форме. Функция отвечает на «Hello World!» к любому HTTP-запросу, и это об этом.

Чтобы понять, как работает этот развертывание через серверу, мы должны уменьшить масштаб и узнать о Смертный фреймворк. Первоначально разработано для AWS LAMBDA , Рамки скрывают все причуды облачных поставщиков облака и сводится к описанию развертывания в один файл манифеста. С момента его создания многие другие поставщики, такие как CloudFlare, начали его поддерживать.

Откройте манифест, Serverless.yml чтобы быстро посмотреть. Сервис Определяет имя сервиса и данные с конкретной учетной записи. Вот как мы делаем Определение Для CloudFlare:

service:
  name: semaphore-demo-cloudflare-workers
  config:
    accountId: $CLOUDFLARE_ACCOUNT_ID
    zoneId: $CLOUDFLARE_ZONE_ID

provider:
  name: cloudflare
  stage: prod

plugins:
  - serverless-cloudflare-workers

Тогда нам нужно определить наши Функции и События это вызывает их. В нашем примере запросы на example.com/hello отвечали на Привет Функция (CORECTION MSS УДАЛЕНИЕ может быть опущена):

functions:
  hello:
    name: hello
    worker: hello
    script: hello
    events:
      - http:
          url: example.com/hello
          method: GET

Непрерывная интеграция и развертывание

Нравится все, неверно, имеет свои недостатки. Возможно, самый большой — это то, что тестирование становится более сложной. Облачное время выполнения трудно реплицироваться в тестовой среде.

CI/CD Рабочий процесс проверит код на каждом обновлении, а затем при условии, что нет никаких ошибок, разверните его на CloudFlare.

  • Трубопровод CI
    • ⚙️Install зависимости
    • 👟 пробежать тесты
  • CD-трубопровод
    • ☑️ Развертывание до CloudFlare

Мы узнаем о трубопроводе CI рядом.

Тестирование в семафоре

Непрерывная интеграция (CI) это все о тестировании. Давайте рассмотрим, как это делает трубопровод CI. Возьмите заглянуть в файл трубопровода, расположенный в .semaphore/semaphore.yml Отказ

Вступление к трубопроводу определяет его имя и какое из Типы машин собирается запустить работу.

version: v1.0
name: CI

agent:
  machine:
    type: e1-standard-2
    os_image: ubuntu1804

В семафор, завод исполнения организован рабочие места и блоки . Работа работает параллельно. Как только все задания в блоке сделаны, начинается следующий блок. Если какая-либо работа не удается, то рабочий процесс останавливается с ошибкой.

Пролог выполняется до каждая работа; В нашем случае мы используем NVM Чтобы установить Active Node.js версию и NPM Для установки модулей:

blocks:
  - name: Install dependencies
    task:
      jobs:
        - name: npm install
          commands:
            - checkout
            - nvm use
            - node -v
            - cache restore
            - npm install
            - cache store

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

Второй блок имеет два тестовых задания:

  • Код Lint с Jshint Отказ
  • Агрегатные тесты: репликация выполнения CloudFlare с Cloudworker Отказ
  - name: Run tests
    task:
      prologue:
        commands:
          - checkout
          - cache restore
          - nvm use
          - node -v

      jobs:
        - name: Lint
          commands:
            - npm run lint

        - name: Unit tests
          commands:
            - npm test

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

promotions:
  - name: Deploy
    pipeline_file: deploy.yml
    auto_promote_on:
      - result: passed
        branch:
          - master

Развертывание с семафором

Несколько вещей чувствуют себя лучше, чем полностью проверенный код. Он заполняет меня определением ♥ ️ для продолжения развертывания. Постоянное развертывание трубопровод Запускается сразу после окончания интеграции.

Вы должны настроить Serverless.yml немного сейчас. Откройте файл и найдите URL ключ. Заменить example.com с Ваш область CloudFlare . Вы можете использовать подстановочные знаки, такие как example.com/* или * .example.com. .

Далее, открыть .semaphore/Deploy.yml Для рассмотрения трубопровода развертывания. Я пропущу раздел введения, так как мы уже видели его, и отправляйтесь непосредственно к блоку:

blocks:
  - name: Deploy
    task:
      secrets:
        - name: cloudflare

      prologue:
        commands:
          - checkout
          - cache restore
          - nvm use
          - node -v

      jobs:
        - name: Deploy to Cloudflare
          commands:
            - cat serverless.yml | envsubst | tee serverless.yml
            - npm run deploy
            - npm run hello

В этом блоке мы используем Serverless CLI развернуть. Последняя команда вызывает функцию непосредственно из облака, чтобы проверить, что он работает.

Нажмите на GitHub & Test

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

Чтобы получить свой токен CloudFlare:

  • Мой профиль> Токен API> Глобальная клавиша API> Изменение или просмотр

Скопируйте отображаемый токен и создайте секрет, чтобы сохранить его:

$ sem create secret cloudflare \
    -e CLOUDFLARE_ACCOUNT_ID=YOUR_ACCOUNT_ID \
    -e CLOUDFLARE_ZONE_ID=YOUR_ZONE_ID \
    -e CLOUDFLARE_AUTH_EMAIL=YOUR_ACCOUNT_EMAIL \
    -e CLOUDFLARE_AUTH_KEY=YOUR_API_TOKEN

Идентификаторы зоны и учетных записей можно найти на нижней части панели приборной панели.

Нажмите код в GitHub, чтобы запустить рабочий процесс:

$ git add serverless.yml
$ git commit -m "deploy to cloudflare"
$ git push origin master

Вы можете проверить прогресс в семафор; Через несколько секунд мы должны увидеть блок развертывания завершен. Вы можете нажать на любой блок, чтобы наблюдать за журналами. 👀

Нажав на последнюю работу в рабочем процессе, вызывает журнал выполнения:

Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Starting Serverless Cloudflare-Worker deployment.
Serverless: Starting deployment
Serverless: deploying script: hello
Serverless: Finished deployment hello in 1.412 seconds
Serverless: ✅  Script Deployed. Name: hello, Size: 0.19K
Serverless: ✅  Routes Deployed 
Serverless: Finished deployment in 18.061 seconds.
Serverless: Finished Serverless Cloudflare-Worker deployment.
exit code: 0 duration: 20s

Давайте посмотрим, действительно ли это работает. Попробуйте посетить URL-адрес функции с вашим браузером или сделать запрос с помощью Curl Отказ Заменить example.com/hello при необходимости:

$ curl -w "\n" http://example.com/hello
Hello World!

Ну, привет тебе тоже мало функции. 👋

Серверы имеют свои дни

Вы развернули свою первую функцию без сердечности. Мы узнали о своих силах и слабостях, и как сбалансировать их с семафором CI/CD. Не его простота дыхание свежего воздуха? Если вы подобны мне, как только вы попробуете маршрут без сервеса, вы хотите, чтобы вы могли использовать его для всего. 🏖

Хочу больше практики? Попробуйте просмотр GloudFlare Gallery , который имеет много полезных шаблонов для изучения.

Вы нашли пост полезным? Дайте мне знать, ударив тех ❤️ и 🦄, следуя за мной или, оставив комментарий ниже.

Как всегда, спасибо за чтение!

Учебники семафор (10 частей серии)

Оригинал: «https://dev.to/semaphore/going-serverless-with-cloudflare-workers-452k»