Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Cilium CNI option #435

Merged
merged 5 commits into from
Jan 30, 2024
Merged

Add Cilium CNI option #435

merged 5 commits into from
Jan 30, 2024

Conversation

sholdee
Copy link
Contributor

@sholdee sholdee commented Jan 29, 2024

Proposed Changes

  • Adds Cilium CNI initialization option
  • Disabled by default unless cilium_iface is defined, overrides flannel and calico
  • Default settings assume nodes on same subnet and leverage native routing with auto direct routes, kube-proxy replacement, BPF masquerade, hybrid DSR, and maglev LB algorithm
  • Routed mode available for environments requiring it
  • Provides BGP control plane option with LB IPAM, replacing MetalLB when enabled
  • BGP control plane advertises LB services and pod CIDRs by default, allowing one to enable native routing mode in environments with cross-subnet cluster node traffic
  • Hubble observability platform enabled by default
  • Adds molecule scenario
  • Adds new scenario to CI test workflow
  • Tested with MetalLB in native L2 mode
  • Tested with Cilium in BGP control plane mode
  • Tested molecule scenario
  • Maintains integrity of interface contract and is non-breaking

Why Cilium?

  • Performance: Cilium is built from the ground up on eBPF, ensuring leading edge performance and scalability.
  • Maturity and Stability: Cilium is a CNCF "Graduated" maturity level CNI implementation and is widely adopted for production workloads by many of the largest cloud providers in the industry.
  • Advanced Policies: Cilium provides advanced layer 4, layer 3, and layer 7 policy capabilities.
  • Visibility and Monitoring: Cilium features Hubble observability platform, built on eBPF, providing live visibility into your cluster network activity.
  • Customization: Cilium is highly customizable for advanced use-cases post-initialization.

Checklist

  • Tested locally
  • Ran site.yml playbook
  • Ran reset.yml playbook
  • Did not add any unnecessary changes
  • Ran pre-commit install at least once before committing (actually did this time)
  • 🚀

@timothystewart6
Copy link
Contributor

@sholdee This is awesome! Thank you so much!!

@@ -15,6 +15,8 @@ We have these scenarios:
Very similar to the default scenario, but uses only a single node for all cluster functionality.
- **calico**:
The same as single node, but uses calico cni instead of flannel.
- **cilium**:
The same as single node, but uses cilium cni instead of flannel.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@timothystewart6 timothystewart6 merged commit 6ffc25d into techno-tim:master Jan 30, 2024
9 checks passed
@sholdee sholdee deleted the cilium branch January 30, 2024 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants