INTEGRITY Dokumentace

Gradual Deployments

Gradual Deployments vám umožňují postupně nasazovat nové verze vašeho Workeru rozdělením provozu mezi verze. Místo přesunu veškerého provozu na novou verzi najednou můžete na novou verzi směrovat určité procento požadavků, zatímco zbytek bude nadále zpracovávat předchozí verze.

Gradual Deployments

Pomocí postupného nasazování můžete:

Použijte postupné nasazování

Následující část vás provede příkladem používání funkce Gradual Deployments.

Pomocí nástroje Wrangler

1. Vytvořte a nasaďte nový Worker

Vytvořte nový "Hello World" Worker pomocí create-cloudflare CLI (C3) a nasaďte ho.

npm create cloudflare@latest -- <NAME> -- --type=hello-world

Odpovězte yes nebo no na používání TypeScriptu. Odpovězte yes k nasazení vaší aplikace. Toto je první verze vašeho Workeru.

2. Vytvořte novou verzi Workeru

Upravte kód Workeru změnou Response obsah a nahrát Worker pomocí wrangler versions upload příkazu.

npx wrangler versions upload

Tímto se vytvoří nová verze Workeru, která se automaticky nenasadí.

3. Vytvořte nové nasazení

Použijte wrangler versions deploy příkaz pro vytvoření nového nasazení, které rozdělí provoz mezi dvě verze. V interaktivním průvodci zvolte požadovaná procenta pro každou verzi.

npx wrangler versions deploy

4. Otestujte rozdělené nasazení

Spusťte na svém Workeru příkaz cURL a otestujte tak rozdělené nasazení.

for j in {1..10}
do
    curl -s https://$WORKER_NAME.$SUBDOMAIN.workers.dev
done

Měli byste vidět 10 odpovědí. Odpovědi se budou lišit v závislosti na procentech nastavených v krok č. 3.

Konkrétní verzi můžete také cílit pomocí přepisy verzí.

5. Nastavte novou verzi na 100% nasazení

Spustit wrangler versions deploy znovu a postupujte podle interaktivních výzev. Vyberte novou verzi a nastavte ji na 100 %.

npx wrangler versions deploy

Pomocí dashboardu Cloudflare

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte Vytvoření aplikace > Hello World šablona > nasaďte svůj Worker.

  3. Jakmile je Worker nasazený, přejděte do online editoru kódu přes Upravit kód. Upravte kód Workeru (změňte Response obsah).

  4. Chcete-li uložit změny bez nasazení, vyberte šipka dolů vedle Nasadit > Save. Tím se vytvoří nová verze vašeho Workeru.

  5. Přejděte na Deployments a vyberte Povýšení nasazení pro vytvoření rozdělení mezi oběma verzemi.

Nesoulad verzí

Protože Gradual Deployments znamená, že provoz současně obsluhuje více verzí vašeho Workeru, klienti a služby mohou nakonec komunikovat s více než jednou verzí způsobem, který vede k chybám nebo nekonzistentnímu chování. Tomu se říká nesoulad verzí.

Nesoulad verzí v rámci Workeru

Ve výchozím nastavení je každý požadavek směrován nezávisle na základě nastavených procentuálních podílů. To znamená, že po sobě jdoucí požadavky od stejného uživatele, včetně opětovného načtení stránky a načítání assetů, mohou být obsluhovány různými verzemi.

Pokud chcete uživatele po celou dobu postupného nasazení připnout na konzistentní verzi, můžete použít afinita verze.

Nesoulad verzí mezi Workery

Když jeden Worker volá jiný pomocí service binding, oba Workery mohou být v různých fázích svého vlastního postupného nasazení. Worker A (ve své nové verzi) může zavolat Worker B, ale požadavek skončí u staré verze Workeru B, kde je jiná smlouva API.

Můžete použít přepisy verzí pro připnutí navazujícího Workeru ke konkrétní verzi během subrequestu.

Durable Objects

Gradual Deployments fungují jinak pro Durable Objects protože v danou chvíli může běžet jen jedna verze každého Durable Object. Více informací najdete v Gradual Deployments s Durable Objects pro podrobnosti o přiřazování verzí, zárukách a migracích.

Observabilita

Při používání postupného nasazení možná budete chtít přiřadit vyvolání Workers ke konkrétní verzi, abyste získali přehled o dopadu nasazení nových verzí.

Logpush

Nový ScriptVersion objekt je dostupný v Workers Logpush. ScriptVersion lze v současnosti přidat pouze přes Logpush API. Ukázkové volání API:

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/logpush/jobs' \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"name": "workers-logpush",
"output_options": {
    "field_names": ["Event", "EventTimestampMs", "Outcome", "Logs", "ScriptName", "ScriptVersion"]
},
"destination_conf": "<DESTINATION_URL>",
"dataset": "workers_trace_events",
"enabled": true
}'| jq .

ScriptVersion je objekt s následující strukturou:

{
	"ScriptVersion": {
		"id": "<UUID>",
		"message": "<MESSAGE>",
		"tag": "<TAG>"
	}
}

Runtime binding

Použijte Vazba metadat verze pro přístup k ID verze nebo tagu verze ve vašem Workeru.

Limity

Limit nasazení

Postupné nasazení můžete vytvořit pouze z posledních 100 nahraných verzí svého Workeru.