Skip to content

Add Azure support to egress private endpoints documentation#23391

Open
mikeCRL wants to merge 4 commits into
mainfrom
DOC-16027_azure-egress-private-endpoints
Open

Add Azure support to egress private endpoints documentation#23391
mikeCRL wants to merge 4 commits into
mainfrom
DOC-16027_azure-egress-private-endpoints

Conversation

@mikeCRL
Copy link
Copy Markdown
Contributor

@mikeCRL mikeCRL commented May 21, 2026

Adds Azure Private Link Service support to egress private endpoints documentation, matching the level of detail provided for AWS and GCP. Resolves DOC-16027.

Azure coverage includes:

  • Supported services list entry
  • Prerequisites section covering:
    • Standard SKU Internal Load Balancer requirement
    • Optional pre-authorization via auto-approval list
    • Manual approval process
    • Same-region requirement
  • API parameter descriptions:
    • Target service identifier (both resource ID and alias formats with instructions)
    • Target service type (PRIVATE_SERVICE)
  • Complete example API request
  • Confluent Cloud support on Azure

Add Azure Private Link Service throughout the egress private endpoints
doc following the same structure and level of detail as AWS/GCP.

Changes:
- Add Azure to supported services list
- Add Azure prerequisites section with approval process
- Add Azure to target_service_identifier and target_service_type parameters
- Add Azure example API request
- Update Confluent Cloud section to include Azure

All Azure additions include detailed TODO comments with self-contained
context so they can be reviewed without referring to supporting documents.
Each TODO includes:
- Exact line references to AWS/GCP equivalents in the same file
- Context showing what AWS and GCP do for the same scenario
- Specific questions with clear options
- Guidance on what content is needed based on the answer

The 6 TODOs cover:
1. Supported services list wording (generic vs specific)
2. Pre-authorization requirement (compare to AWS principal, GCP approval)
3. Additional prerequisites (compare to AWS/GCP bullets)
4. Target service identifier format (resource ID vs alias + how to find)
5. Service type confirmation (PRIVATE_SERVICE vs Azure-specific types)
6. Example values (region format, realistic placeholders)

Co-Authored-By: roachdev-claude <roachdev-claude-bot@cockroachlabs.com>
@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Deploy Preview for cockroachdb-api-docs canceled.

Name Link
🔨 Latest commit 1de15c7
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-api-docs/deploys/6a0f730fac289c0008e900ec

@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Deploy Preview for cockroachdb-interactivetutorials-docs canceled.

Name Link
🔨 Latest commit 1de15c7
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-interactivetutorials-docs/deploys/6a0f730faa57170008d6a391

@github-actions
Copy link
Copy Markdown

@mikeCRL mikeCRL requested a review from sanchit-CRL May 21, 2026 21:03
@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Deploy Preview for cockroachdb-api-docs canceled.

Name Link
🔨 Latest commit de0464f
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-api-docs/deploys/6a13e3e563cca90008418ea1

@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Deploy Preview for cockroachdb-interactivetutorials-docs canceled.

Name Link
🔨 Latest commit de0464f
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-interactivetutorials-docs/deploys/6a13e3e551793a0008a6885e

@mikeCRL
Copy link
Copy Markdown
Contributor Author

mikeCRL commented May 21, 2026

@sanchit-CRL Would you mind reviewing the TODOs and providing the info we need to fill the gaps for each? Happy to collaborate in other ways, too, if preferable - just let me know. Thanks!

@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Netlify Preview

Name Link
🔨 Latest commit 1de15c7
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-docs/deploys/6a0f730f994a930008ce3175
😎 Deploy Preview https://deploy-preview-23391--cockroachdb-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 21, 2026

Netlify Preview

Name Link
🔨 Latest commit de0464f
🔍 Latest deploy log https://app.netlify.com/projects/cockroachdb-docs/deploys/6a13e3e58772160008c65a64
😎 Deploy Preview https://deploy-preview-23391--cockroachdb-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Context: AWS lists MSK specifically (line 18: "Amazon Managed Streaming for Apache Kafka (MSK)") with caveats, while GCP is generic (line 19: "Google Cloud VPC Private Service Connect").
Options:
1. Keep generic: "Azure Private Link Service"
2. List specific tested services: "Self-hosted Kafka on Azure VMs via Private Link Service" or "Azure Event Hubs via Private Link Service"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Azure hub is not covered in this phase. We can keep it as Azure Private link service, since only generic self hosted kafka on Azure VM is covered in the is release, same as GCP


The following prerequisites apply to Azure Private Link Service:

<!-- TODO: Does CockroachDB Cloud's Azure subscription need to be pre-authorized on the customer's Private Link Service (PLS)?
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The Private Link Service's visibility must permit the CockroachDB Cloud Azure subscription to connect. Either:

  • Add the CockroachDB Cloud Azure subscription to the PLS's Restricted by subscription visibility list (and to Auto-approval to skip manual approval), or
  • Leave the default RBAC-only visibility and manually approve each connection request after CockroachDB Cloud creates the private endpoint.

We can state something similar to
The CockroachDB Cloud Azure subscription does not need to be pre-authorized on your Private Link Service. After CockroachDB Cloud creates the private endpoint, the connection
appears in Pending state on your PLS and must be approved manually. To skip the manual approval step, you can add CockroachDB Cloud's Azure subscription ID to your PLS auto-approval list during PLS creation.

Question: Does Azure work the same way (pre-authorization required), or is post-creation manual approval sufficient?

If PRE-AUTHORIZATION is required:
- What is the CC Azure subscription ID? (or is it per-cluster via account_id API?)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

yes, subscription ID is the account_id in the Get cluster API

Comment on lines +167 to +169
Azure options from design doc:
1. Full resource ID: /subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Network/privateLinkServices/{pls-name}
2. Alias format: {guid}.{region}.azure.privatelinkservice
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

we support both as the target_service-identifier

Azure Private Link Service: Either the Azure Private Link Service resource ID (recommended) or the PLS alias.

  • Resource ID format: /subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/privateLinkServices/{pls-name}
  • Alias format: {prefix}.{guid}.{region}.azure.privatelinkservice

To find these values:

  • Portal: Navigate to your Private Link Service → Settings → Properties for the resource ID, or Overview → Alias for the alias.
  • CLI: az network private-link-service show --name {pls-name} --resource-group {rg} --query '{id:id, alias:alias}'

Comment on lines +123 to +125
- Azure Portal: **Private Link Center** → **Private Link Services** → select your service → **Private endpoint connections** → **Approve**
- Azure CLI: `az network private-endpoint-connection approve`
- See the [Azure Private Link documentation](https://learn.microsoft.com/en-us/azure/private-link/manage-private-endpoint) for detailed steps.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This looks good

- Any Azure-specific networking or security settings?

If yes: Add them as bullet points similar to GCP's second bullet.
If no: No changes needed - current prerequisites are complete. -->
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

  • The Private Link Service must be in the same Azure region as the CockroachDB Cloud cluster region where the endpoint is created. Cross-region connections are not supported in Azure
  • The PLS must be backed by a Standard SKU Internal Load Balancer (Basic SKU does not support Private Link).


Question: Does Azure follow GCP's pattern (always `PRIVATE_SERVICE`), or does it need service-specific types like AWS MSK?
- For self-hosted Kafka on Azure VMs: `PRIVATE_SERVICE`?
- For Azure Event Hubs (if supported): `PRIVATE_SERVICE` or something specific like `AZURE_EVENT_HUBS`?
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

we have not worked on Azure event hubs in this phase, just PRIVATE_SERVICE is supported for both self hosted on VM and confluent cloud

- GCP region format (line 210): "us-east1" (lowercase with no hyphens between region and number)

Questions for region:
- Is "eastus" the correct Azure region format? (vs "East US" or "east-us")
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Azure region codes are lowercase, and eastus is correct for an example

mikeCRL and others added 2 commits May 22, 2026 13:14
…endpoints

Applied all feedback from PR review to finalize Azure documentation.

Changes:
- Supported services: Keep generic "Azure Private Link Service" wording
- Pre-authorization: Added explanation that CC subscription doesn't need
  pre-authorization, but manual approval is required (with optional
  auto-approval setup). Added API call to retrieve Azure subscription ID.
- Prerequisites: Added same-region requirement, enhanced ILB bullet to
  specify Standard SKU requirement and note Basic SKU is not supported.
- Target identifier: Expanded to show both resource ID (recommended) and
  alias formats with Portal and CLI instructions for finding values.
- Service type: Confirmed PRIVATE_SERVICE is correct for Azure.
- Example values: Confirmed "eastus" region format is correct.

All 6 TODOs resolved and removed.

Co-Authored-By: roachdev-claude <roachdev-claude-bot@cockroachlabs.com>
Refinements to the Azure prerequisites section:

- Add link to "Standard SKU Internal Load Balancer" pointing to Azure's
  SKU comparison page for customers who want to understand the difference
- Clarify Basic SKU limitation: "Basic SKU load balancers do not support
  the Private Link Service" (more explicit than "Basic SKU does not
  support Private Link")
- Add "By default," to approval text for clarity on when manual approval
  is needed
- Standardize navigation arrows to > throughout Azure sections

Co-Authored-By: roachdev-claude <roachdev-claude-bot@cockroachlabs.com>
@mikeCRL mikeCRL force-pushed the DOC-16027_azure-egress-private-endpoints branch from ad02f67 to 951c8a7 Compare May 25, 2026 05:47
@mikeCRL mikeCRL requested a review from sanchit-CRL May 25, 2026 05:52
@mikeCRL mikeCRL marked this pull request as ready for review May 25, 2026 05:53
Copy link
Copy Markdown

@sanchit-CRL sanchit-CRL left a comment

Choose a reason for hiding this comment

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

LGTM

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.

2 participants