INTEGRITY Dokumentace

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;
	},
};