Skip to content

Commit f0574c9

Browse files
committed
Merge branch 'main' into MermaidImprovements
2 parents 253c9c4 + 815e331 commit f0574c9

17 files changed

Lines changed: 831 additions & 53 deletions

File tree

docs/cloud/connectivity/aws-connectivity.mdx

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,17 @@ After creating the PrivateLink endpoint, configure your clients to use it throug
4343

4444
## Requirements
4545

46-
Your AWS PrivateLink endpoint must be in the same region as your Temporal Cloud namespace. If using [replication for High Availability](/cloud/high-availability), the PL connection must be in the same region as one of the replicas.
46+
* Your AWS PrivateLink (PL) endpoint must be in the same region as your Temporal Cloud Namespace or one of its [High Availability](/cloud/high-availability) replicas.
47+
See [cross-region PrivateLink connectivity](#cross-region-privatelink) to access the Namespace from a different region.
48+
* Your Private DNS must be configured to direct Worker / Client traffic to your VPC Endpoint, as described below.
49+
* If the Worker / Client does not use the Namespace Endpoint as the connection string in its code, it may need to set the `server_name` config to the Namespace Endpoint string, as described below.
4750

48-
AWS Cross Region endpoints are not supported.
51+
### Cross-region PrivateLink Connectivity {/* #cross-region-privatelink */}
52+
53+
Temporal Cloud does **not** support [cross-region connectivity for AWS PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-cross-region-connectivity-for-aws-privatelink/) out of the box. However, if you need to reach Temporal Cloud privately from a different region than your Namespace, you can route traffic to your VPC Endpoint in the Namespace's region using [AWS's native cross-region networking features](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/centralized-access-to-vpc-private-endpoints.html#cross-region-endpoint-access).
54+
55+
56+
When using High Availability on Temporal Cloud, it's best practice to have two VPC Endpoints, one in each of the Namespace's regions, to ensure at least one VPC Endpoint is accessible during a regional outage.
4957

5058
## Creating an AWS PrivateLink connection
5159

@@ -68,7 +76,7 @@ Individual Namespaces do not use separate services.
6876

6977
:::
7078

71-
<JsonTable filename="/json/privatelink_aws.json" />
79+
<JsonTable filename="/json/privatelink_services_aws.json" />
7280

7381
7. Confirm your service by clicking on the _Verify service_ button. AWS should respond "Service name verified."
7482

@@ -118,14 +126,14 @@ This approach is **optional**; Temporal Cloud works without it. It simply stream
118126

119127
### Choose the override domain and endpoint
120128

121-
| Endpoint type | PHZ domain format | Example | Use when |
122-
| ------------------ | ------------------------------------- | --------------------------------------- | -------- |
123-
| Namespace endpoint | `<namespace-id>.tmprl.cloud` | `payments.abcde.tmprl.cloud` | **Single-region Namespaces only.** Simplest pattern — one record per Namespace. Do not use this for [High Availability](/cloud/high-availability/ha-connectivity) Namespaces: the override short-circuits Temporal's regional CNAME chain and failover stops working. |
124-
| Regional endpoint | `<cloud>-<region>.region.tmprl.cloud` | `aws-ap-northeast-2.region.tmprl.cloud` | **Single-region or HA Namespaces.** One record per Temporal Cloud region, reused by every Namespace active or replicated in that region. **Required for HA Namespaces** — see [Connectivity for High Availability](/cloud/high-availability/ha-connectivity). |
129+
| Endpoint type | PHZ domain format | Example | Use when |
130+
| ------------------ | ---------------------------------- | ------------------------------------ | -------- |
131+
| Namespace endpoint | `<namespace-id>.tmprl.cloud` | `payments.abcde.tmprl.cloud` | **Single-region Namespaces.** Simplest pattern — one record per Namespace. For [High Availability](/cloud/high-availability/ha-connectivity) Namespaces, overriding the Namespace Endpoint is nuanced — see [Connectivity for High Availability](/cloud/high-availability/ha-connectivity). |
132+
| Regional endpoint | `<region>.<cloud>.api.temporal.io` | `ap-northeast-2.aws.api.temporal.io` | You want to pin a client to a specific Temporal Cloud region. |
125133

126-
:::warning HA Namespaces require the regional override
134+
:::caution HA Namespaces need a more nuanced PHZ setup
127135

128-
For Namespaces with [High Availability](/cloud/high-availability/ha-connectivity), use the regional-endpoint PHZ pattern only. The Namespace-endpoint override is read out of the PHZ before public DNS, so the regional CNAME that Temporal Cloud rewrites on failover is never followed and Workers stay pinned to the old region. If you're switching an existing single-region private Namespace to HA, see [How to enable HA on a Namespace using Private Connectivity](/cloud/high-availability/ha-connectivity#how-to-enable-ha-on-a-namespace-using-private-connectivity) for the PHZ migration steps.
136+
For Namespaces with [High Availability](/cloud/high-availability/ha-connectivity), the PHZ pattern to use depends on how you want Workers to reach the active region. Overriding the Namespace Endpoint directly is read out of the PHZ before public DNS, so the regional CNAME that Temporal Cloud rewrites on failover isn't followed — which is usually not what you want, but can be the right choice in some topologies (for example, multi-cloud HA with one region per cloud, where Workers on each cloud should always reach their local region). Because the trade-offs depend on your setup, see [Connectivity for High Availability](/cloud/high-availability/ha-connectivity) before choosing a pattern.
129137

130138
:::
131139

docs/cloud/connectivity/gcp-connectivity.mdx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ This one-way connection means Temporal cannot establish a connection back to you
2929
This is useful if normally you block traffic egress as part of your security protocols.
3030
If you use a private environment that does not allow external connectivity, you will remain isolated.
3131

32+
<a id="high-availability-and-private-service-connect"></a>
33+
3234
:::warning Namespaces with High Availability features and GCP Private Service Connect
3335

3436
Automatic failover via Temporal Cloud DNS is not currently supported with GCP Private Service Connect.
@@ -38,7 +40,9 @@ If you use GCP Private Service Connect, you must manually update your workers to
3840

3941
## Requirements
4042

41-
Your GCP Private Service Connect connection must be in the same region as your Temporal Cloud namespace. If using [replication for High Availability](/cloud/high-availability), the PSC connection must be in the same region as one of the replicas.
43+
* Your GCP Private Service Connect endpoint must be in the same region as your Temporal Cloud namespace. If using [replication for High Availability](/cloud/high-availability), the PSC connection must be in the same region as one of the replicas.
44+
* Your Private DNS must be configured to direct Worker / Client traffic to your PSC endpoint, as described below.
45+
* If the Worker / Client is not using the Namespace Endpoint, it may need to set the `server_name` config to the Namespace Endpoint string, as described below.
4246

4347
## Creating a Private Service Connect connection
4448

@@ -131,7 +135,7 @@ This approach is **optional**; Temporal Cloud works without it. It simply stream
131135
| ------------------------------------------ | ---------------------------------- | ---------------------------------------------- |
132136
| Single-region namespace with mTLS auth | `<account>.tmprl.cloud` | `payments.abcde.tmprl.cloud``X.X.X.X` |
133137
| Single-region namespace with API-key auth | `<cloud_provider>.api.temporal.io` | `us-central1.gcp.api.temporal.io``X.X.X.X` |
134-
| Multi-region namespace | `region.tmprl.cloud` | `gcp-us-central1.region.tmprl.cloud``X.X.X.X` |
138+
| Multi-region namespace | `<cloud_provider>.api.temporal.io` | `us-central1.gcp.api.temporal.io``X.X.X.X` |
135139

136140
### Step-by-step instructions
137141

@@ -152,7 +156,7 @@ Save the internal IP -- you will point the A record at it.
152156
1. Open _Network Services → Cloud DNS → Create zone_.
153157
2. Select zone type **Private**.
154158
3. Enter a **Zone name** (e.g., `temporal-cloud`).
155-
4. Enter a **DNS name** based on the table above (e.g., `payments.abcde.tmprl.cloud` or `aws-us-east-1.region.tmprl.cloud`).
159+
4. Enter a **DNS name** based on the table above (e.g., `payments.abcde.tmprl.cloud` or `us-east-1.aws.api.temporal.io`).
156160
5. Select **Add networks** and choose the Project and Network that contains your PSC endpoint.
157161
6. Click **Create**.
158162

docs/cloud/connectivity/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ The TLS server name override depends on your authentication method:
233233
| -------------- | ---------------------- |
234234
| mTLS (single-region Namespace) | The Namespace Endpoint, e.g. `my-namespace.my-account.tmprl.cloud` |
235235
| API key (single-region Namespace) | The regional API endpoint, e.g. `us-east-1.aws.api.temporal.io` or `us-central1.gcp.api.temporal.io` |
236-
| Multi-region Namespace (mTLS or API key) | The active region endpoint, e.g. `aws-us-east-1.region.tmprl.cloud` |
236+
| Multi-region Namespace (mTLS or API key) | The active region endpoint, e.g. `us-east-1.aws.api.temporal.io` |
237237
238238
If you authenticate with an API key over PrivateLink/PSC and use the wrong server name, the TLS handshake will fail with errors such as `connection reset by peer` even though `nc` reports the port as open.
239239

docs/cloud/connectivity/ip-addresses.mdx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,11 @@ IP addresses are provided in IPv4 or IPv6 format with CIDR notation. At launch,
341341

342342
:::
343343

344+
:::note Don't depend on DNS resolution behavior
345+
346+
Take a dependency on Temporal's published endpoints (the hostnames themselves), not on what they resolve to. The underlying IP addresses, CNAME chains, and resolution behavior can change at any time without notice. The **only** exception is the Namespace Endpoint for a Namespace with [High Availability features](/cloud/high-availability), which deterministically CNAMEs to its active region's regional record — see [Connectivity for High Availability](/cloud/high-availability/ha-connectivity) for details.
347+
348+
:::
344349
### How to connect using Stable IPs
345350

346351
To connect to a Namespace with Stable IPs enabled:

0 commit comments

Comments
 (0)