ClusterLink simplifies the connection between application services that are located in different domains, networks, and cloud infrastructures.
This is an incomplete work in progress, provided in the interest of sharing experience and gathering feedback. The code is pre-alpha quality right now. This means that it shouldn't be used in production at all.
For more details, visit our website.
ClusterLink deploys a gateway into each location, facilitating the configuration and access to multi-cloud services.
The ClusterLink gateway contains the following components:
Control Plane
is responsible for maintaining the internal state of the gateway,
for all the communications with the remote peer gateways by means of the ClusterLink CP
Protocol, and for configuring the local data plane to forward user traffic according
to policies.
Part of the control plane is the policy engine that can also apply network policies
(ACL, load-balancing, etc.)Data Plane
responds to user connection requests, both local and remote,
initiates policy resolution in the CP, and maintains the established connections.
ClusterLink DP relies upon standard protocols and avoids redundant encapsulations,
presenting itself as a K8s service inside the cluster and as a regular HTTP endpoint
from outside the cluster, requiring only a single open port (HTTP/443) and leveraging
HTTP endpoints for connection multiplexing.ClusterLink leverages the Kubernetes API using CRDs to configure cross-cluster communication. ClusterLink management is based on the following key concepts:
For further information, please refer to the concepts section on the ClusterLink website.
ClusterLink can be set up and run on different environments: local environment (Kind), Bare-metal environment, or cloud environment. For more details, refer to the Getting Started Guide.
Additionally, here are some other documents you may find helpful:
Our project welcomes contributions from any member of our community. To get started contributing, please see our Contributor Guide.
ClusterLink is intended to connect services and applications running in different clusters. As such, the project will implement or has implemented:
ClusterLink will be used in a cloud native environment with other tools. The following specific functionality will therefore not be incorporated:
Service
s. You can support Pod-to-Pod communications by creating a service per pod.This project is licensed under Apache License, v2.0. Code contributions require Developer Certificate of Originality.
We follow the CNCF Code of Conduct.