Network Requirements for Client Connectivity

Planning your networking configuration should be one of the first tasks performed when designing your Couchbase deployment. This page summarizes the supported options for connecting clients (including XDCR) to your Couchbase cluster.

The following simplified diagrams depict example client configuration strings, required DNS records, and the Couchbase cluster map as advertised by Couchbase Server. For more detailed documentation, please consult the networking and XDCR pages.

In general:

  • Diagrams depicting Couchbase nodes being advertised with IP addresses or non-default port numbers (3xxxx) require the exposed features configuration parameter to be specified.

  • Diagrams depicting Couchbase nodes being advertised with non-default DNS addresses require the DNS configuration parameter to be specified.

In-cluster Networking

This is the simplest form of client connectivity. Clients are all located in the same Kubernetes cluster as the Couchbase cluster.

In-cluster Networking

✓ Supports all CNI network types

✓ Supports TLS

✓ Supports SRV-based service discovery

✗ Supports addressability from the Internet

Out-of-cluster Networking with Private IP-based Addressing

This form of client connectivity uses Kubernetes NodePort services to connect to the Couchbase cluster. The Operator ensures that NodePort addresses are synchronized with Couchbase Server so that they are correctly advertised to clients.

This form of client connectivity has the same client compatibility requirements as Out-of-cluster Networking with Public IP-based Addressing and Dynamic DNS.

Refer to Supported Clients for Public Connectivity for a list of clients that are supported with this networking model.

Out-of-cluster Networking with Private IP-based Addressing

✓ Supports all CNI network types

✗ Supports TLS

✗ Supports SRV-based service discovery

✗ Supports addressability from the Internet

Out-of-Cluster Networking with Private IP-based Addressing and Kubernetes DNS

This form of client connectivity uses DNS to connect to the Couchbase cluster. As Pod IP addresses are used to connect to the Couchbase cluster, you cannot use overlay networking. A third-party solution is required to replicate Pod DNS names and Pod IP addresses into the client Kubernetes cluster.

Out-of-Cluster Networking with Private IP-based Addressing and Kubernetes DNS

✗ Supports all CNI network types

✓ Supports TLS

✓ Supports SRV-based service discovery (if supported by the DNS replicator)

✗ Supports addressability from the Internet

Out-of-cluster Networking with Private IP-based Addressing and Dynamic DNS

This form of client connectivity uses DNS to connect to the Couchbase cluster with Kubernetes NodePort services. A third-party solution is required to replicate Pod DNS names and NodePort IP addresses into the client Kubernetes cluster.

Out-of-cluster Networking with Private IP-based Addressing and Dynamic DNS

✓ Supports all CNI network types

✓ Supports TLS

✓ Supports SRV-based service discovery (if supported by the DNS replicator)

✗ Supports addressability from the Internet

This form of client connectivity is compatible with the Kubernetes external-dns project.

Public Connectivity: Out-of-cluster Networking with Public IP-based Addressing and Dynamic DNS

This form of client connectivity uses DNS to connect to the Couchbase cluster over public IP addresses. Couchbase Server nodes are exposed with LoadBalancer services. A third-party solution is required to replicate Pod DNS names and Service IP addresses into the client Kubernetes cluster.

Out-of-cluster Networking with Public IP-based Addressing and Dynamic DNS

✓ Supports all CNI network types

✓ Supports TLS

✓ Supports SRV-based service discovery (if supported by the DNS replicator)

✓ Supports addressability from the Internet

This form of client connectivity is compatible with the Kubernetes external-dns project.
Table 1. Supported Clients for Public Connectivity
Client Version

Couchbase Server (XDCR)

6.0.1+

5.5.3+

Node.js SDK

2.5.0+

When not using the embedded libcouchbase and choosing to build with an external installation, libcouchbase 2.9.2+ is required.

PHP SDK

Any supported version using libcouchbase 2.9.2+

Python SDK

Any supported version using libcouchbase 2.9.2+

C SDK (a.k.a. libcouchbase)

2.9.2+

Java SDK

2.7.7+

.NET SDK

2.7.9+

Go SDK

1.6.1+

Couchbase Sync Gateway

Not yet supported

Couchbase Connectors

Not yet supported