Skip to content

Conversation

@Gabbe64
Copy link

@Gabbe64 Gabbe64 commented Aug 28, 2025

Description

Fixes #3011

This PR introduces the possibility to make pods deployed on provider clusters communicate directly by using an established network connection (liqoctl network connect).

This feature is opt-in: users can enable it by adding the annotation key use-direct-connections: true to the Service exposing the pods that should communicate directly. This way, the default behavior remains unchanged, while also giving users the possibility to choose whether to route traffic through the consumer cluster or directly.

Implementation

As discussed during the last community meetings, the modified components are the virtual-kubelet and the ShadowEndpointslice controller.

Transmission - virtual-kubelet

When reflecting Endpointslices and the corresponding Service has the right annotation, some data is collected from the informers (without direct the API server calls) then serialized as JSON and reflected in the annotation field of the ShadowEndpointslice.

This data is:

  1. The clusterID where the endpoint is deployed,
  2. The local IPs contained in the Endpointslice of the consumer,
  3. The same IPs, remapped by the consumer cluster.

Reception

The ShadowEndpointslice controller (in the provider cluster) receives this data and uses it to remap the addresses so to use the direct connections towards other provider clusters (if available).

To achieve this:

  • Endpoints leading to pods on a different provider are identified using point 3.
  • They are replaced with direct addresses, derived from the remote cluster’s podCIDR (point 1) and the host part extracted from the local IP (point 2); this required the implementation of a "forced mapping".

@adamjensenbot
Copy link
Collaborator

Hi @Gabbe64. Thanks for your PR!

I am @adamjensenbot.
You can interact with me issuing a slash command in the first line of a comment.
Currently, I understand the following commands:

  • /rebase: Rebase this PR onto the master branch (You can add the option test=true to launch the tests
    when the rebase operation is completed)
  • /merge: Merge this PR into the master branch
  • /build Build Liqo components
  • /test Launch the E2E and Unit tests
  • /hold, /unhold Add/remove the hold label to prevent merging with /merge

Make sure this PR appears in the liqo changelog, adding one of the following labels:

  • feat: 🚀 New Feature
  • fix: 🐛 Bug Fix
  • refactor: 🧹 Code Refactoring
  • docs: 📝 Documentation
  • style: 💄 Code Style
  • perf: 🐎 Performance Improvement
  • test: ✅ Tests
  • chore: 🚚 Dependencies Management
  • build: 📦 Builds Management
  • ci: 👷 CI/CD
  • revert: ⏪ Reverts Previous Changes

@github-actions github-actions bot added the feat Adds a new feature to the codebase label Aug 28, 2025
@Gabbe64 Gabbe64 marked this pull request as ready for review August 29, 2025 11:47
@Gabbe64 Gabbe64 force-pushed the no-fcc-implementation branch from 07a8051 to 0c46130 Compare August 30, 2025 18:01
@github-actions github-actions bot added the refactor Reorganizes or optimizes code without changing its behavior label Aug 30, 2025
@cheina97
Copy link
Member

cheina97 commented Sep 2, 2025

/test

1 similar comment
@aleoli
Copy link
Member

aleoli commented Sep 10, 2025

/test

@frisso frisso added the release-1.1 Feature that is planned to be integrated within a given Liqo release label Sep 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat Adds a new feature to the codebase refactor Reorganizes or optimizes code without changing its behavior release-1.1 Feature that is planned to be integrated within a given Liqo release size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Enhance inter-cluster networking: direct path support between 'leaf' clusters

5 participants