Use Azure VNet Peering with Confluent Cloud

Azure Virtual Network (VNet) peering enables you to route traffic using private IPv4 addresses between a VNet and Confluent Cloud. Your VNet and Confluent Cloud can communicate with each other as if they are within the same network.

For more information about VNet peering with Azure, see Virtual Network Peering.

Managed connectors created in a VNet-peered cluster can access data sources and sinks hosted in all peered VNets, if the firewall rules allow connector traffic to and from the peered VNets.

Requirements and considerations

  • A Confluent Cloud network of the “VNet Peering” type and the “Microsoft Azure” provider.

    If a network does not exist, see Create Confluent Cloud Network on Azure.

  • If the peered VNet’s address space contains any addresses outside of RFC 1918 (10/8, 172.16/12, or 192.168/16 prefixes) or RFC 6598 (100.64/10 prefix) CIDR ranges, the routes to these addresses will be rejected.

  • Transitive VNet peering is not supported. If you peer Network A to Network B, and peer Network B to Confluent Cloud, applications running in Network A will not be able to access Confluent Cloud.

    Confluent Cloud does not support the following features that Azure provides to achieve transitive peering, namely:

    • Azure Gateway Transit
    • User Defined Routes (UDRs)
  • You can colocate multiple Confluent Cloud Dedicated clusters in the same Confluent Cloud network, but this is limited by the expected number and size of these clusters. The applicable limits are specified in Network Quotas.

  • Cross-region peering is not supported through the Confluent Cloud Console. Contact Confluent Support to see if your regions are supported and to request configuration.

Create a VNet peering connection

A peering connection needs to be created in order to access Confluent Cloud clusters and services in a Confluent Cloud network using VNet peering.

The high level workflow to create a VNet peering connection is:

  1. Grant access to Azure Active Directory Tenant.

    If you are using the Confluent Cloud Console to configure peering, this step can be skipped and performed in the Grant Access stage in the third step below, Create a VNet peering connection in Confluent Cloud.

  2. Add a tag in Azure.

    If you are using the Confluent Cloud Console to configure peering, this step can be skipped and performed in the Grant Access stage in the third step below, Create a VNet peering connection in Confluent Cloud.

  3. Create a VNet peering connection in Confluent Cloud.

You need to gather the following information from the Microsoft Azure portal:

Grant access to Azure Active Directory Tenant

Grant access to your Azure Active Directory (AD) Tenant before you can create a peering connection.

  1. Go to the following URL using your Azure AD Tenant ID (<tenant-id>) and click Accept to approve the peering connection:

    https://login.microsoftonline.com/<tenant-id>/oauth2/authorize?client_id=f0955e3a-9013-4cf4-a1ea-21587621c9cc&response_type=code
    

    The client_id in the URL is the Confluent Cloud application client ID in Azure.

  2. Using an Azure command line tool, such as Azure Cloud Shell, run the following command to create a new role.

    If you have more than one subscription ID, update the AssignableScopes accordingly.

    az role definition create --output none --role-definition '{
       "Name": "Confluent Cloud Peering Creator",
       "Description": "Perform cross-tenant network peering.",
       "Actions": [
           "Microsoft.Network/virtualNetworks/read",
           "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read",
           "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write",
           "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete",
           "Microsoft.Network/virtualNetworks/peer/action"
       ],
       "AssignableScopes": [
           "subscriptions/<subscription-id>",
       ]
    }'
    
  3. Using an Azure command line tool, run the following command with your subscription ID (<subscription-id>), VNet resource group name (<resource-group-name>), and VNet name (<vnet-name>) to assign the role to the service principal:

    az role assignment create `
      --role "Confluent Cloud Peering Creator" `
      --assignee "$(az ad sp list --filter "appId eq 'f0955e3a-9013-4cf4-a1ea-21587621c9cc'" `
      --output tsv --query '[0].id')"  `
      --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>"
    

    Note

    Starting with Azure CLI v. 2.37.0, the objectId property in the output JSON of a Graph object is replaced by id. If you use an earlier version, use objectId in the --output line.

Add a tag in Azure

In your Azure AD tenant, add a tag to the VNet you want to peer with Confluent Cloud network.

For the complete steps, see Apply tags with Azure portal.

  1. In the Azure portal, navigate to the VNet you want to peer with Confluent Cloud network.

  2. Click Tags.

  3. Specify the tag key and the value:

    • Name: ConfluentEnvIDs.
    • Value: The Confluent Cloud environment ID where the Confluent Cloud networks you’d like your VNet to be peered with reside.

    To peer your VNet with multiple Confluent Cloud networks that belong to different Confluent Cloud environments, specify a comma-separated list of the environment IDs. For example:

    ConfluentEnvIDs: <CCloud-env-id-1>, <CCloud-env-id-2>
    
  4. Click Apply.

Create a VNet peering connection in Confluent Cloud

Follow the steps to create an Azure VNet network peering connection.

You can have multiple VNet peering connections. For information about limits, see Kafka cluster quotas.

  1. In the Network Management tab of the desired Confluent Cloud environment, click the For dedicated cluster tab.

  2. Click the Confluent Cloud network to which you want to add the peering connection.

  3. In the Ingress connections tab, click +VNet Peering.

  4. Specify the following field values in the Configure VNet Peering phase.

    • Azure Tenant ID: Your organization in Azure Active Directory.
    • Azure Subscription ID: The Azure subscription ID.
    • Azure VNet resource group name: The resource group ID that the VNet belongs to.
    • Azure VNet Name: The name of your Azure Virtual network.
  5. Click Add.

  6. Grant access to your Azure AD Tenant in the Grant Access stage.

    1. Go to the given URL and click Accept to approve the peering connection.

      The URL is pre-populated with your Tenant ID you provided in the previous Configure VNet Peering phase, and the client_id is the Confluent Cloud application client ID in Azure.

    2. Using an Azure command line tool, such as Azure Cloud Shell, run the following command to create a new role.

      The command is pre-populated with the information you provided in the previous Configure VNet Peering phase, namely, your subscription ID (<subscription-id>).

      You might have to update the command shown on the page with the latest command syntax as shown below.

      If you have more than one subscription ID, update the AssignableScopes.

      az role definition create --output none --role-definition '{
      "Name": "Confluent Cloud Peering Creator",
      "Description": "Perform cross-tenant network peering.",
      "Actions": [
          "Microsoft.Network/virtualNetworks/read",
          "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/read",
          "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write",
          "Microsoft.Network/virtualNetworks/virtualNetworkPeerings/delete",
          "Microsoft.Network/virtualNetworks/peer/action"
      ],
      "AssignableScopes": [
          "/subscriptions/<subscription-id>/",
      ]
      }'
      
    3. Run this command to assign the role to the service principal.

      The command is pre-populated with the information you provided in the previous Configure VNet Peering phase, namely, your subscription ID (<subscription-id>), VNet resource group name (<resource-group-name>), and VNet Name (<vnet-name>). = You might have to update the command shown on the page with the latest command syntax as shown below.

      az role assignment create `
        --role "Confluent Cloud Peering Creator" `
        --assignee "$(az ad sp list --filter "appId eq 'f0955e3a-9013-4cf4-a1ea-21587621c9cc'" `
        --output tsv --query '[0].id')"  `
        --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>"
      
    4. Add a tag in Azure.

    5. Click Continue. You are prompted to confirm that Confluent Cloud is present in your Azure AD Tenant.

    6. Click Create connection to finish creating the peering connection.


When you are finished, the peering status should display “Ready” in the Confluent Cloud Console.

Configure DNS forwarding

To resolve hostnames that reside within private DNS zones or a self-hosted DNS server and access your own VNet or on-prem from Confluent Cloud, set up DNS forwarding in Confluent Cloud.

For example, you can use DNS forwarding for Confluent Cloud fully-managed connectors that need to access data in your VNet.

The DNS Forwarder requires VNet peering where there is bi-directional network access between your network and Confluent Cloud clusters.

Step 1: Get DNS resolver IP addresses

To use the DNS forwarding feature with your Azure VNet, you can set up Azure Inbound Endpoints or use your own DNS server:

Create an inbound endpoint for a private DNS zone.

  • If you wish to forward DNS requests from Confluent Cloud to a private DNS zone, create Inbound Endpoints for Confluent Cloud network to access your DNS servers.

    Azure recommends deploying multiple endpoints in different availability zones.

    For details, see Configuring inbound endpoints.

    Once the endpoints are created, input the IP addresses of the Inbound Endpoints to which to forward requests as described in the next step.

  • If you want to use your self-hosted DNS server, use the IP address of that DNS server in Confluent Cloud in the next step.

Step 2: Create a DNS Forwarder in Confluent Cloud

Set up DNS forwarding in Confluent Cloud.

  1. In Confluent Cloud, navigate to the DNS Forwarding tab in the Network Detail page.
  2. Input the following information:
    • DNS server IPs: One or more IP addresses of you DNS servers to which we should forward DNS request.
    • Domain list: One or more domains to which you wish to route the DNS requests.
  3. Wait until provisioning is complete and DNS is propagated.