Dokumentace Domluvit pilot

Přepisy verzí

Pomocí přepsání verze (version override) můžete odeslat požadavek na konkrétní verzi svého Workeru v aktuálním nasazení, a to i na verze nastavené na obsluhu 0 % provozu.

Jak nastavit přepsání verzí

Chcete-li v požadavku přepsat verzi, nastavte Cloudflare-Workers-Version-Overrides hlavičku v požadavku na váš Worker. Cloudflare-Workers-Version-Overrides je Strukturovaná hlavička Dictionary ↗ který může obsahovat více párů klíč hodnota. Každý klíč uvádí název Workeru, na který se má vztahovat override. hodnota uvádí ID verze, které se má použít, a musí to být Řetězec ↗. Například:

curl -s https://example.com -H 'Cloudflare-Workers-Version-Overrides: my-worker-name="dc8dcd28-271b-4367-9840-6c244f84cb40"'

Ověřte, že byly použity přepisy verzí

Existuje několik důvodů, proč se přepsání verze požadavku nemusí použít. Například:

Pokud se přepsání verze požadavku neuplatní, bude požadavek směrován podle procentuálních hodnot nastavených v konfiguraci postupného nasazení.

Verzi svého Workeru, která byla vyvolána, můžete zjistit pomocí Observabilita ↗, a to i ve funkcích, jako jsou Logpush. Případně, pokud chcete klienty informovat o verzi, kterou spustili (například kvůli rychlejšímu a přehlednějšímu ladění), můžete použít vazba metadat verze a vrátí ID verze v odpovědi Workeru.

Příklad smoke testu

Novou verzi možná budete chtít nejprve otestovat v produkčním prostředí, než ji postupně nasadíte na stále větší podíl externího provozu. Tomuto postupu se běžně říká „smoke test“.

V tomto příkladu je vaše nasazení zpočátku nakonfigurováno tak, aby směrovalo veškerý provoz na jedinou verzi:

ID verze Procento
db7cd8d3-4425-4fe7-8c81-01bf963b6067 100%

Vytvořte nové nasazení pomocí wrangler versions deploy a u nové verze nastavte 0%, zatímco předchozí verze zůstane na 100%.

ID verze Procento
dc8dcd28-271b-4367-9840-6c244f84cb40 0%
db7cd8d3-4425-4fe7-8c81-01bf963b6067 100%

Nyní otestujte novou verzi pomocí přepsání verze (version override), než ji postupně navýšíte na 100 %:

curl -s https://example.com -H 'Cloudflare-Workers-Version-Overrides: my-worker-name="dc8dcd28-271b-4367-9840-6c244f84cb40"'

Service bindings

Můžete nastavit Cloudflare-Workers-Version-Overrides hlavičku při vytváření dílčího požadavku z jednoho Workeru do druhého pomocí service binding. Díky tomu můžete z upstream Workeru otestovat konkrétní verzi downstream Workeru.

Pokud předáte původní objekt požadavku, přepisující hlavička se přenese automaticky:

// The override header from the inbound request is forwarded to the downstream Worker.
export default {
	async fetch(request, env) {
		return env.MY_SERVICE.fetch(request);
	},
};
// The override header from the inbound request is forwarded to the downstream Worker.
export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		return env.MY_SERVICE.fetch(request);
	},
};

Alternativně můžete explicitně nastavit přepisující hlavičku:

// Replace the version ID with the target version from `wrangler versions list`.
export default {
	async fetch(request, env) {
		const response = await env.MY_SERVICE.fetch("https://example.com/", {
			headers: {
				"Cloudflare-Workers-Version-Overrides":
					'my-downstream-worker="dc8dcd28-271b-4367-9840-6c244f84cb40"',
			},
		});
		return response;
	},
};
// Replace the version ID with the target version from `wrangler versions list`.
export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		const response = await env.MY_SERVICE.fetch("https://example.com/", {
			headers: {
				"Cloudflare-Workers-Version-Overrides":
					'my-downstream-worker="dc8dcd28-271b-4367-9840-6c244f84cb40"',
			},
		});
		return response;
	},
};

Požádejte o pilot zdarma

Domluvit pilot