Mine sisu juurde

Veebikiht Cloudflare Workersi platvormil

Käivita vähendatud Quire'i veebikiht Cloudflare Workersi platvormil.

Vaata Markdownina

Arhitektuur on kirjeldatud dokumendi docs/architecture/23-ops.md jaotises 6. Workers käitab vähendatud veebikihti. Funktsioonide võrdsus pole Workersi puhul eesmärk (PRD jaotis 12): sihtkoha piirangutest keeldutakse käivitumisel nimeliselt.

Selle väljalaske olek

Seadistus on olemas (apps/web/wrangler.jsonc, cloudflare-module Nitro eelseade, Hyperdrive’i sild ja käivituskontrollid). Worker vajab R2 jaoks S3-ühilduvat salvestust (QUIRE_STORAGE_DRIVER=s3), päringutevahelist reaalajaside draiverit (QUIRE_REALTIME_DRIVER=durable_objects või centrifugo), jagatud vahemälu (QUIRE_CACHE_DRIVER=postgres või valkey) ning HTTP-põhist e-posti pakkujat. Nendeta keeldub Worker käivitumast ja logi nimetab kõik seaded. Durable Objectsi draiver kasutab rakenduses apps/realtime-worker asuvat reaalajateenust (iga kanali jaoks üks Durable Object edastuseks, kohalolekuks ja ajalooks; iga inimese jaoks üks ühenduse katkemiseks); juuruta see allpool kirjeldatud viisil kõrvale või kasuta Centrifugot.

Osad

Osa Cloudflare’is
web nodejs_compat-iga Worker
Postgres Väline, Hyperdrive’i kaudu: HYPERDRIVE rakenduserollile ning samas füüsilises andmebaasis aruanderollile REPORT_HYPERDRIVE. Käivitumisel kopeerib veebikiht ühendusstringid DATABASE_URL ja QUIRE_REPORT_DATABASE_URL muutujasse
Failid R2, S3 API kaudu (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES sidumine ühendab hoidla
Tausttööd Kirjutustoiminguga järjekorda lisatava töö jaoks pg-boss Hyperdrive’i kaudu. Kui kaas-töötlejal on QUIRE_QUEUE_DRIVER=cloudflare, lähevad kerged tööd (järjestamata teavitused ja veebikonksude edastused) hoopis Cloudflare Queuesi, nii et Postgresit nende jaoks ei küsitleta. Kaas-töötleja käitab mõlemat
Reaalajaside Reaalaja-Worker apps/realtime-worker koos Durable Objectsiga
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Kaaskonteinerite host. Worker neid käitada ei saa
Jälitus Workersi jälgitavus, lubatud failis wrangler.jsonc

REPORT_HYPERDRIVE annab aruanderolli füüsilise andmebaasi jaoks, mille nimi on HYPERDRIVE. See sihtkoht ei teeninda lisafüüsilistesse andmebaasidesse seotud rentnikke, nagu allpool kirjeldatud.

Mida see sihtkoht teha ei saa

Käivitamisel lükatakse kõik probleemid korraga tagasi:

  • SMTP puudub. Kasuta väljal QUIRE_EMAIL_PROVIDER_CONFIG HTTP-pakkujat.
  • Kohalik ketas puudub. QUIRE_STORAGE_DRIVER peab nimetama objektisalvestust.
  • Protsessisisest reaalajasidet ega vahemälu pole. Workerite päringud ei jaga mälu, seega lükatakse tagasi QUIRE_REALTIME_DRIVER=inprocess ja QUIRE_CACHE_DRIVER=memory.
  • Workeris pole ClamAV-d, Gotenbergi ega ffmpegi. Workerile määratud CLAMAV_URL, GOTENBERG_URL ja FFMPEG_PATH lükatakse tagasi; määra need kaastöötlejale.
  • Eriotstarbelise andmebaasiga organisatsioone pole. Workeri Hyperdrive’i sidumised on juurutamisel fikseeritud, seega näeb oma andmebaasiga organisatsioon selget teadet „siin pole saadaval”. Teeninda seda Compose’i või Verceli kaudu.

Samuti tuleb teada, et eelrenderdamine ja järkjärguline staatiline taastootmine ei tööta Workersis, mida tahes ütleb raamistiku dokumentatsioon. Iga marsruut renderdatakse päringu korral.

Hoia sellel sihtkohal tehingud lühikesed ega jäta neid võrgukutse ajaks avatuks: ühenduse ühendusepuhvrisse naastes lähtestab Hyperdrive seansi oleku, mistõttu rentniku kontekst määratakse iga tehingu kohta eraldi.

Juurutamine

  1. Loo ressursid:
    bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"
    bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"
    bun run --bun wrangler r2 bucket create quire-files
    bun run --bun wrangler queues create quire-jobs
    Lisa kaks Hyperdrive’i ID-d faili apps/web/wrangler.jsonc.
  2. Määra saladused ükshaaval käsuga bun run --bun wrangler secret put <NAME> kaustas apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, QUIRE_COLLAB_SIGNING_KEY, QUIRE_REALTIME_WORKER_SECRET. Lihtsad seaded (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) lisa jaotisse vars.
  3. Ehita ja juuruta kaustast apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Juuruta reaalaja-Worker, andes sellele veebikihi väärtuse QUIRE_REALTIME_WORKER_SECRET ja märgi saladuse QUIRE_REALTIME_TOKEN_SECRET (veebikiht allkirjastab reaalajamärgid enda QUIRE_REALTIME_TOKEN_SECRET abil või selle puudumisel QUIRE_SECRET_KEY-ga, seega kasuta sama väärtust, mida veebikiht kasutab). Määra veebikihis ka selle aadressiks QUIRE_REALTIME_WORKER_URL:
    cd apps/realtime-worker
    bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
    bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
    bun run --bun wrangler deploy
  5. Cloudflare Queuesi kergete tööde jaoks loo iga kerge järjekorra kohta oma järjekord ja määra need kaastöötlejal (API tunnus peab lubama Queuesi lugemist ja kirjutamist):
    bun run --bun wrangler queues create quire-events-notifications
    bun run --bun wrangler queues create quire-events-notifications-dead
    bun run --bun wrangler queues create quire-events-webhooks
    bun run --bun wrangler queues create quire-events-webhooks-dead
    Määra QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN ning QUIRE_QUEUE_PREFIX, kui eesliide pole quire-.
  6. Käivita kaashost nii, nagu kirjeldab Verceli juhendi 3. samm. Migratsioonid käivitatakse seal enne iga Workeri juurutust.

Tagasilükatud seadistust näeb käsuga bun run --bun wrangler tail; logi algab tekstiga “The web tier did not start on cloudflare” ja nimetab muudetavad seaded.

Navigeerimine

Otsimiseks kirjuta…

↑↓ liikumine↵ valiEsc sulge