Infrastructure
How Chalk reaches a fully private EKS API server from the metadata plane.
Some Chalk customers require the data plane EKS API server to be fully
private — it is created with endpointPublicAccess=false so the Kubernetes
control plane has no public DNS record or public IP. This page describes how
the Chalk metadata plane continues to manage such a cluster, for two
deployment topologies:
The Metadata Plane & Data Plane Communication page describes why EKS API access is required (deployments, scaling, rolling updates, pod health).
When endpointPublicAccess is disabled on the EKS cluster, the API server is
only reachable from inside the data plane VPC or from VPCs that have an
explicit network path to it. The Chalk metadata plane is by construction
outside that VPC, so the two topologies below each describe how to
establish that path.
In the standard Chalk-hosted deployment, Chalk runs the metadata plane in GCP while the customer’s data plane lives in AWS. The full path has three segments:

EKS occasionally rotates the control-plane ENIs behind the private API
server hostname. Any network construct that pinned a specific target IP
would break on each rotation. The L7 proxy re-resolves
https://<cluster>.<region>.eks.amazonaws.com on every connection, so the
ENI rotation is invisible to the PrivateLink endpoint service, the VPCE
in the Chalk AWS proxy account, and everything upstream on the Wireguard
path.

| Component | Location | Purpose |
|---|---|---|
| PrivateLink endpoint service | Customer data plane VPC | The VPCE-consumable front door. Exposes the internal NLB to accepted consumer accounts (the Chalk AWS proxy account). |
| L4 NLB | Customer data plane VPC | Stable virtual IP in front of the proxy ASG. Internal; only reachable through the PrivateLink service. |
| EC2 Auto Scaling Group running an L7 proxy | Customer data plane VPC | Resolves the EKS API hostname and forwards the TLS session to the current set of private ENIs. |
| EKS API server (private IP only) | Customer data plane VPC | Terminates Kubernetes API calls. No public endpoint. |
| VPCE interface endpoint | Chalk AWS proxy account | Consumes the customer’s PrivateLink service. The proxy account’s side of the cross-account bridge. |
| Wireguard peer | Chalk AWS proxy account | Terminates the UDP tunnel from the GCP metadata plane. |
The customer does not configure a VPC peering connection, an internet-facing NLB, or an IP allowlist against Chalk’s static NAT IPs — those elements are internal to Chalk’s proxy account’s connection to GCP.
When the customer runs their own metadata plane on AWS (the Customer Cloud / Air-Gapped deployment model), traffic stays entirely inside AWS. If the metadata plane and data plane live in the same AWS account, the metadata plane VPC can simply be added as a public-access endpoint consumer on the EKS cluster and route to the API server’s private ENI IPs directly.
This section covers the case where the metadata plane and data plane live in separate AWS accounts — for example, a customer who isolates control and data workloads into different AWS Organizations OUs. A VPC peering connection (or a Transit Gateway attachment) bridges the two VPCs, and cross-VPC DNS resolution does the rest: once the EKS private hosted zone is associated with the metadata plane VPC, the Chalk API server resolves the EKS API hostname to the private ENI IPs and routes to them over the peering link.

No L7 proxy or internal NLB is needed here. The ENI rotation that necessitates the proxy in Topology 1 is handled by the customer’s own DNS client — it resolves on each connection and picks up the current ENI set.
aws route53 associate-vpc-with-hosted-zone) so DNS resolution works
across the peering.No traffic traverses the public internet, and no Chalk-owned IPs or accounts are involved.
| Metadata plane location | Data plane location | Bridge |
|---|---|---|
| Same AWS account | Same AWS account | None — in-account routing to the EKS private ENIs |
| Separate AWS account | Separate AWS account | VPC Peering or Transit Gateway (with cross-account hosted zone association) |
| GCP (Chalk-hosted) | AWS (customer) | Chalk AWS proxy account: Wireguard from GCP, VPCE into customer VPC (Topology 1) |
The public EKS with IP whitelisting pattern is still Chalk’s default recommendation because it eliminates the proxy stack in Topology 1 and the cross-account DNS configuration in Topology 2. The private-API pattern described here is appropriate when:
endpointPublicAccess=true on
EKS clusters.The trade-offs to accept with the private-API pattern:
For most deployments the simpler public-EKS-with-allowlist pattern is sufficient. The topologies on this page exist for the cases where it is not.