Skip to main content
Networking configuration controls how the virtual cluster communicates with the host cluster and external services, including DNS resolution, service replication, and network policies.

Pod CIDR

networking.podCIDR
string
default:"10.244.0.0/16"
Pod CIDR for the virtual cluster. This should only be set when privateNodes.enabled is true.

Service Replication

networking.replicateServices
object
Configure service replication between virtual and host clusters.

DNS Configuration

networking.resolveDNS
array
Define extra DNS rules (PRO feature). Only works with embedded CoreDNS.
resolveDNS:
  - hostname: "myservice.com"
    service: "my-namespace/my-service"
    target:
      namespace: "my-namespace"
      service: "my-service"
  - hostname: "*.mycompany.internal"
    target:
      hostname: "10.0.0.1"
networking.advanced
object
Advanced networking options.

Control Plane Proxy

controlPlane.proxy
object
Configure the vCluster control plane proxy for authentication and request interception.

Control Plane Service

controlPlane.service
object
vCluster control plane service configuration.

Control Plane Ingress

controlPlane.ingress
object
vCluster control plane ingress configuration.

Network Policies

See RBAC Configuration for network policy configuration.

Example: LoadBalancer Service

controlPlane:
  service:
    enabled: true
    spec:
      type: LoadBalancer
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-type: "nlb"

Example: Ingress with TLS

controlPlane:
  ingress:
    enabled: true
    host: vcluster.example.com
    annotations:
      cert-manager.io/cluster-issuer: "letsencrypt-prod"
      nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
      nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    spec:
      tls:
        - hosts:
            - vcluster.example.com
          secretName: vcluster-tls

Example: Service Replication

networking:
  replicateServices:
    # Expose virtual cluster service to host
    toHost:
      - from: default/webapp
        to: vcluster-ns/webapp
    
    # Make host services available in vCluster
    fromHost:
      - from: databases/postgres
        to: default/postgres
      - from: monitoring/prometheus
        to: monitoring/prometheus

Example: Custom DNS Resolution

controlPlane:
  coredns:
    embedded: true  # Required for resolveDNS

networking:
  advanced:
    clusterDomain: "cluster.local"
    fallbackHostCluster: true
  
  resolveDNS:
    # Resolve custom domain to service
    - hostname: "api.myapp.internal"
      target:
        namespace: "default"
        service: "api-service"
    
    # Resolve wildcard domain to external IP
    - hostname: "*.external.com"
      target:
        hostname: "203.0.113.10"

Example: Kubelet Proxy Configuration

networking:
  advanced:
    proxyKubelets:
      byHostname: true
      byIP: true

Example: Custom Certificate SANs

controlPlane:
  proxy:
    bindAddress: "0.0.0.0"
    port: 8443
    extraSANs:
      - "vcluster.prod.example.com"
      - "vcluster.dev.example.com"
      - "10.0.0.100"

Use Cases

Multi-tenant Service Isolation

Use service replication to expose specific services between tenants while maintaining isolation:
networking:
  replicateServices:
    fromHost:
      - from: shared-services/logging
        to: default/logging
      - from: shared-services/monitoring
        to: default/monitoring

External Service Access

Make external services available via custom DNS:
networking:
  resolveDNS:
    - hostname: "database.company.internal"
      target:
        hostname: "10.100.0.50"

Expose vCluster Externally

Use LoadBalancer or Ingress to expose the virtual cluster:
controlPlane:
  service:
    spec:
      type: LoadBalancer
  # OR
  ingress:
    enabled: true
    host: my-vcluster.example.com

Build docs developers (and LLMs) love