Skip to content

Azure Private Link Serverless - #7595

Open
shainaraskas wants to merge 15 commits into
mainfrom
azure-pl-serverless
Open

Azure Private Link Serverless#7595
shainaraskas wants to merge 15 commits into
mainfrom
azure-pl-serverless

Conversation

@shainaraskas

@shainaraskas shainaraskas commented Jul 27, 2026

Copy link
Copy Markdown
Member

Summary

Todo

  • azure native service caveats

Generative AI disclosure

  1. Did you use a generative AI (GenAI) tool to assist in creating this contribution?
  • Yes
  • No

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Elastic Docs AI PR menu

Check the box to run an AI review for this pull request.

Powered by GitHub Agentic Workflows and docs-actions. For more information, reach out to the docs team.

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Elastic Docs Style Checker (Vale)

Summary: 6 warnings found

⚠️ Warnings (6): Fix when the suggestion improves clarity or correctness.
File Line Rule Message
deploy-manage/security/private-connectivity-azure.md 104 Elastic.Spelling 'australiaeast' is a possible misspelling.
deploy-manage/security/private-connectivity-azure.md 105 Elastic.Spelling 'eastus' is a possible misspelling.
deploy-manage/security/private-connectivity-azure.md 107 Elastic.Spelling 'germanywestcentral' is a possible misspelling.
deploy-manage/security/private-connectivity-azure.md 108 Elastic.Spelling 'southeastasia' is a possible misspelling.
deploy-manage/security/private-connectivity-azure.md 109 Elastic.Spelling 'spaincentral' is a possible misspelling.
deploy-manage/security/private-connectivity-azure.md 110 Elastic.Spelling 'uaenorth' is a possible misspelling.

The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale.

@shainaraskas
shainaraskas marked this pull request as ready for review July 27, 2026 21:50
@shainaraskas
shainaraskas requested a review from a team as a code owner July 27, 2026 21:50

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs review summary

Focus areas

  • Style and clarity: Mostly clean edits (fixed a duplicated "to to", removed a stray "please" is unrelated/pre-existing). Left a nit on an inline-code formatting inconsistency in the shared limitations snippet.
  • Jargon: No unexplained Elastic-internal jargon introduced by this diff; {{serverless-short}}/{{serverless-full}} substitutions are used consistently and expand to full terms.
  • Frontmatter and applies_to: Found one concrete bug — the new sub.example-phz-dn value in restrictions-known-problems.md ("vpce.us-east-1.aws.elastic-cloud.com in AWS") is malformed (has " in AWS" appended) and appears unused in the current diff; see inline comment. Other applies_to/products additions for serverless (azure, private-connectivity, ip-filtering) look consistent with existing patterns in the same files.
  • Content type fit: The expanded how-to/reference content (Requirements sections, region tables, API metadata retrieval) fits the existing page structure and content type for each file.
  • Parent issue satisfaction: Not applicable — no linked issue; PR body describes the doc scope directly and the diff appears to cover the described Azure Serverless expansion, AWS service names, and "AWS only" → "AWS and Azure" corrections.

Notes

  • Vale findings (Elastic.MappedPages warnings) are pre-existing mapped_pages entries, not introduced by this PR, so not flagged individually.
  • Did not flag broken links/anchors, which the docs build validates separately.

Generated by Docs review agent for #7595 · sonnet50 86.3 AIC · ⌖ 3.95 AIC · ⊞ 15.6K

Comment thread deploy-manage/deploy/elastic-cloud/restrictions-known-problems.md Outdated
Comment thread deploy-manage/security/_snippets/private-connectivity-limitations-ech.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@nikfot nikfot left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass looks generally good. Some comments:

  1. I do not see changes discussed here introduced in this pr, except if some other pr implemented them and I missed it

  2. I added in this issue the PLS aliases and DNS that should also be included.

products:
- id: cloud-hosted
sub:
example-phz-dn: "vpce.us-east-1.aws.elastic-cloud.com in AWS"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should also add an azure example

@shainaraskas shainaraskas Jul 30, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added

unfortunately, I can't use code formatting in this context because it is a variable inside of a snippet, but I'm preferring this method so we can single-source the limitations across all private connectivity tutorials

Image


As a workaround, you can [add an IP filter](/deploy-manage/security/ip-filtering-cloud.md) for the hosts that will use SSO through the {{ecloud}} console.

In {{ech}}, you can still SSO into private {{kib}} endpoints individually using the [SAML](/deploy-manage/users-roles/cluster-or-deployment-auth/saml.md) or [OIDC](/deploy-manage/users-roles/cluster-or-deployment-auth/openid-connect.md) protocol from your own identity provider, just not through the {{ecloud}} console. Stack-level authentication using the {{es}} username and password also works with the private hosted zone URL for your deployment, for example, my-deployment-d53192.kb.{{example-phz-dn}}.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above either mention this is azure or add an example for AWS

Suggested change
In {{ech}}, you can still SSO into private {{kib}} endpoints individually using the [SAML](/deploy-manage/users-roles/cluster-or-deployment-auth/saml.md) or [OIDC](/deploy-manage/users-roles/cluster-or-deployment-auth/openid-connect.md) protocol from your own identity provider, just not through the {{ecloud}} console. Stack-level authentication using the {{es}} username and password also works with the private hosted zone URL for your deployment, for example, my-deployment-d53192.kb.{{example-phz-dn}}.
In {{ech}}, you can still SSO into private {{kib}} endpoints individually using the [SAML](/deploy-manage/users-roles/cluster-or-deployment-auth/saml.md) or [OIDC](/deploy-manage/users-roles/cluster-or-deployment-auth/openid-connect.md) protocol from your own identity provider, just not through the {{ecloud}} console. Stack-level authentication using the {{es}} username and password also works with the private hosted zone URL for your deployment, for example in AWS, my-deployment-d53192.kb.{{example-phz-dn}}.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the variable is taking care of this for us. here's how it looks on the limitations page

and here's how it looks on the azure page - a URL customized for the page context:

Image

@shainaraskas

Copy link
Copy Markdown
Member Author

I do not see changes discussed #7150 introduced in this pr, except if some other pr implemented them and I missed it

this PR contains all of the fixes from that one (I used AI to cherry-pick)

@shainaraskas

Copy link
Copy Markdown
Member Author

@nikfot

I added in https://github.com/elastic/ecp-traffic-team/issues/2165#issuecomment-5135103542 the PLS aliases and DNS that should also be included.

these are already present here, as pulled from the API. the API also returns brazilsouth and swedencentral, but I'll drop those for now - not sure if they need to be hidden in the API response too?

https://github.com/elastic/docs-content/pull/7595/changes#diff-87b15fac1f6a704687db70f40f1ff46dfd5972ede44e901c94e329ab39b22284R101-R115

```{include} _snippets/private-connectivity-limitations-ech.md
```

* **North Europe region:** {applies_to}`serverless:` Private Link is not available for {{serverless-full}} projects in the Azure `northeurope` region because of Azure capacity limitations. {{ech}} deployments in `northeurope` are not affected.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikfot / @alxchalkias wonder if we should be adding brazilsouth and swedencentral to the limitations list for the short term

@nikfot

nikfot commented Jul 30, 2026

Copy link
Copy Markdown
Member

@nikfot

I added in https://github.com/elastic/ecp-traffic-team/issues/2165#issuecomment-5135103542 the PLS aliases and DNS that should also be included.

these are already present here, as pulled from the API. the API also returns brazilsouth and swedencentral, but I'll drop those for now - not sure if they need to be hidden in the API response too?

https://github.com/elastic/docs-content/pull/7595/changes#diff-87b15fac1f6a704687db70f40f1ff46dfd5972ede44e901c94e329ab39b22284R101-R115

I believe those were launched just yesterday or roday so we said that we would (1) get them live without PL (2) announce PL GA (3) anounce those two regions with PL

:::

There are no specific requirements for {{es-serverless}} projects or {{ech}} deployments.
There are no specific requirements for other {{serverless-short}} project types or {{ech}} deployments.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shainaraskas should we document the "grandfathering" of projects created before the cut-off date or is this not something we typically do?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this all projects created before the cutoff, or only those using privatelink already? if the former, the audience might be big enough for a callout. if the latter, it's probably not really relevant + will just create support debt

@wajihaparvez wajihaparvez left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👏

| **Hardware configuration** | Limited control | Managed | Hardware choices are managed by Elastic |
| **High availability** ||| Automatic resilience |
| **Network security** |[IP filtering](/deploy-manage/security/ip-filtering-cloud.md)<br><br>✅ [Private connectivity](/deploy-manage/security/private-connectivity.md) (VPCs, PrivateLink)<br><br>✅ [Published static IPs](/deploy-manage/security/elastic-cloud-static-ips.md) |[IP filtering](/deploy-manage/security/ip-filtering-cloud.md)<br><br>✅ [Private connectivity](/deploy-manage/security/private-connectivity.md) (VPCs, PrivateLink)<br><br>❌ Published static IPs | Private connectivity for Serverless projects is currently supported in AWS regions only.<br><br>For Observability projects, requires [Observability Complete](/solutions/observability/observability-serverless-feature-tiers.md).<br><br>For Security projects, requires [Security Analytics Complete](/solutions/security/security-serverless-feature-tiers.md).<br><br>{{serverless-short}} does not offer public static IP lists. Use private connectivity where supported. |
| **Network security** |[IP filtering](/deploy-manage/security/ip-filtering-cloud.md)<br><br>✅ [Private connectivity](/deploy-manage/security/private-connectivity.md) (VPCs, PrivateLink)<br><br>✅ [Published static IPs](/deploy-manage/security/elastic-cloud-static-ips.md) |[IP filtering](/deploy-manage/security/ip-filtering-cloud.md)<br><br>✅ [Private connectivity](/deploy-manage/security/private-connectivity.md) (VPCs, PrivateLink)<br><br>❌ Published static IPs | Private connectivity for Serverless projects is currently supported in AWS and Azure regions only.<br><br>For Observability projects, requires [Observability Complete](/solutions/observability/observability-serverless-feature-tiers.md).<br><br>For Security projects, requires [Security Analytics Complete](/solutions/security/security-serverless-feature-tiers.md).<br><br>{{serverless-short}} does not offer public static IP lists. Use private connectivity where supported. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The notes column says "public static IP lists" but the ECH and serverless columns say "published static IPs". Are these the same thing? If they are, we should use the same terminology


## API reference

To learn more about these endpoints, refer to the reference for your deployment type:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
To learn more about these endpoints, refer to the reference for your deployment type:
Learn more about these endpoints in the reference for your deployment type:

Just to avoid "refer to the reference" ;)

@@ -403,6 +464,9 @@

1. To learn how to find the value for `azure_endpoint_name` and `azure_endpoint_guid` for type `azure_private_endpoint`, refer to [Find your private endpoint resource name](private-connectivity-azure.md#ec-find-your-resource-name) and [Find your private endpoint resource ID](private-connectivity-azure.md#ec-find-your-resource-id). This setting is supported only in Azure regions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. To learn how to find the value for `azure_endpoint_name` and `azure_endpoint_guid` for type `azure_private_endpoint`, refer to [Find your private endpoint resource name](private-connectivity-azure.md#ec-find-your-resource-name) and [Find your private endpoint resource ID](private-connectivity-azure.md#ec-find-your-resource-id). This setting is supported only in Azure regions.
1. To learn how to find the values for `azure_endpoint_name` and `azure_endpoint_guid` for type `azure_private_endpoint`, refer to [Find your private endpoint resource name](private-connectivity-azure.md#ec-find-your-resource-name) and [Find your private endpoint resource ID](private-connectivity-azure.md#ec-find-your-resource-id). This setting is supported only in Azure regions.

'
```

1. To find the value for `source` for type `gcp_private_service_connect_endpoint`, check [Find your Private Service Connect connection ID](private-connectivity-gcp.md#ec-find-your-psc-connection-id). This setting is supported only in GCP regions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. To learn how to find the value for `source` for type `gcp_private_service_connect_endpoint`, refer to [Find your Private Service Connect connection ID](private-connectivity-gcp.md#ec-find-your-psc-connection-id). This setting is supported only in GCP regions.

for consistency with the others

Follow the [Azure instructions](https://docs.microsoft.com/en-us/azure/private-link/create-private-endpoint-portal#create-a-private-endpoint) for details on creating a private endpoint to an endpoint service.

Use [the service aliases for your region](#ec-private-link-azure-service-aliases). Select the **Connect to an Azure resource by resource ID or alias** option. For example for the region `eastus2` the service alias is `eastus2-prod-002-privatelink-service.64359fdd-7893-4215-9929-ece3287e1371.eastus2.azure.privatelinkservice`
Use [the service aliases for your region](#ec-private-link-azure-service-aliases). Select the **Connect to an Azure resource by resource ID or alias** option. For example, for resources in `eastus2`:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Use [the service aliases for your region](#ec-private-link-azure-service-aliases). Select the **Connect to an Azure resource by resource ID or alias** option. For example, for resources in `eastus2`:
Use [the service aliases for your region](#ec-private-link-azure-service-aliases). Select the **Connect to an Azure resource by resource ID or alias** option.
For example, for resources in `eastus2`:

}
```

The connection is established, and a valid certificate is presented to the client. Elastic responds, in the case of the {{es}} endpoint, with basic information about the cluster.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The connection is established, and a valid certificate is presented to the client. Elastic responds, in the case of the {{es}} endpoint, with basic information about the cluster.
The connection is established, and a valid certificate is presented to the client. In the case of the {{es}} endpoint, Elastic responds with basic information about the cluster.

1. Set up Private Link Endpoint in region 1 for a deployment or project hosted in region 2.

1. Create your Private Link Endpoint using the service alias for region 2 in the region 1 VNet (let’s call this VNet1).
2. Create a Private Hosted Zone for region 2, and associate it with VNet1 similar to the step [Create a Private Link endpoint and DNS](#ec-private-link-azure-dns). Note that you are creating these resources in region 1, VNet1.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2. Create a Private Hosted Zone for region 2, and associate it with VNet1 similar to the step [Create a Private Link endpoint and DNS](#ec-private-link-azure-dns). Note that you are creating these resources in region 1, VNet1.
2. Create a Private Hosted Zone for region 2, and associate it with VNet1 similar to the [Create a Private Link endpoint and DNS](#ec-private-link-azure-dns) step. Note that you are creating these resources in region 1, VNet1.

:::

### Remove a private connection policy from your deployment [remove-private-connection-policy]
### Remove a private connection policy from your deployment or project [remove-private-connection-policy]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Remove a private connection policy from your deployment or project [remove-private-connection-policy]
### Remove a private connection policy [remove-private-connection-policy]

Feels a bit repetitive + this way it's consistent with the other headings

### Delete a private connection policy [delete-private-connection-policy]

If you need to remove a policy, you must first remove any associations with deployments.
If you need to remove a policy, you must first remove any associations with deployments or projects.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If you need to remove a policy, you must first remove any associations with deployments or projects.
If you need to delete a policy, you must first remove any associations with deployments or projects.

Maybe? "remove" is confusing because of the previous section

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reading this makes me think this section will explain how to remove the associations. Is that different from deleting?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants