INTEGRITY Dokumentace

VPC sítě

VPC Networks umožňují vašim Workerům přistupovat k jakékoli službě ve vaší privátní síti bez nutnosti předem registrovat jednotlivé hostitele nebo porty. Můžete se navázat na konkrétní Cloudflare Tunnel pro dosažení libovolné služby za tímto tunelem, nebo pro navázání na Cloudflare Mesh pro dosažení libovolného uzlu Mesh, klientského zařízení, trasy podsítě nebo trasy hostname oznámené přes Cloudflare Tunnel nebo Mesh, případně cíle dostupného přes Cloudflare WAN on-ramp (GRE, IPsec nebo CNI).

Za běhu adresa URL, kterou předáte do fetch() nebo adresu, kterou předáte do connect() určuje cíl: libovolný hostname nebo IP adresu dostupné přes navázaný Cloudflare Tunnel nebo přes Cloudflare Mesh. Použijte fetch() pro provoz HTTP a connect() pro spojení raw TCP (Redis, MQTT, vlastní protokoly a další služby, které nejsou HTTP). To se liší od VPC služby, což vyžaduje vytvořit samostatný binding pro každou kombinaci cílového hostitele a portu.

Navázání na Cloudflare Tunnel

Odkažte na konkrétní Cloudflare Tunnel přímo pomocí jeho UUID:

{
  "vpc_networks": [
    {
      "binding": "MY_VPC",
      "tunnel_id": "550e8400-e29b-41d4-a716-446655440000",
      "remote": true
    }
  ]
}
[[vpc_networks]]
binding = "MY_VPC"
tunnel_id = "550e8400-e29b-41d4-a716-446655440000"
remote = true

remote příznak musí být nastaven na true pro povolení vzdálených bindingů během lokálního vývoje.

Navázání na Cloudflare Mesh

Cloudflare Mesh (dříve WARP Connector) propojuje vaše služby, zařízení a Workers prostřednictvím globální sítě Cloudflare. Když Worker navážete vazbu na Cloudflare Mesh pomocí network_id: "cf1:network", váš Worker se může připojit k:

To vše bez nutnosti uvádět konkrétní UUID Cloudflare Tunnel.

Použijte cf1:network když:

Navázání na Cloudflare Mesh pomocí network_id: "cf1:network":

{
  "vpc_networks": [
    {
      "binding": "MY_VPC",
      "network_id": "cf1:network",
      "remote": true
    }
  ]
}
[[vpc_networks]]
binding = "MY_VPC"
network_id = "cf1:network"
remote = true

Použití za běhu

HTTP prostřednictvím fetch()

Za běhu přistupujte k libovolné službě HTTP ve vaší síti pomocí fetch():

export default {
	async fetch(request: Request, env: Env) {
		// Access a service by private IP
		const response = await env.MY_VPC.fetch("http://10.0.1.50/data");

		// Access another service on a different port
		const dbResponse = await env.MY_VPC.fetch("http://10.0.5.42:5432");

		return response;
	},
};

Když VPC Network nemůže navázat připojení k cílové službě, fetch() vyvolá výjimku.

TCP přes connect()

Otevírání nezpracovaných TCP připojení k libovolnému privátnímu cíli pomocí connect(). To se hodí pro protokoly jiné než HTTP, jako je Redis, Memcached, MQTT nebo vlastní binární protokoly:

export default {
	async fetch(request: Request, env: Env) {
		// Open a TCP connection to a private Redis instance
		const socket = await env.MY_VPC.connect("10.0.1.50:6379");

		// Write a Redis PING command
		const writer = socket.writable.getWriter();
		await writer.write(new TextEncoder().encode("PING\r\n"));
		await writer.close();

		return new Response(socket.readable);
	},
};

Když VPC Network nemůže navázat TCP připojení, connect() vyvolá výjimku.

VPC Networks vs. VPC Services

VPC Networks a VPC služby oba propojují Workers se soukromou infrastrukturou, ale každý má jiné kompromisy.

Následující tabulka shrnuje rozdíly:

Funkce VPC sítě VPC služby
Rozsah Jediný Cloudflare Tunnel, nebo trasy Cloudflare Mesh a Cloudflare WAN Konkrétní hostitel + port
Konfigurace tunnel_id (jeden Cloudflare Tunnel) nebo cf1:network (pro celý účet) service_id
Protokoly HTTP (fetch()) a TCP (connect()) HTTP (fetch()) nebo TCP (přes Hyperdrive)
Registrace služby Není vyžadováno Povinné pro každý cíl
Kdy použít Dynamické zjišťování, přístup v rámci celé sítě, dosažení služeb napříč celým účtem Pevně definované, katalogizované služby

Další kroky