Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
840 commits
Select commit Hold shift + click to select a range
e353d62
Merge pull request #11735 from tmjd/oprtr-crd-update
coutinhop Jan 28, 2026
ab2aba2
Fix rendering of NatPortRange in nftables mode
nelljerram Jan 28, 2026
715e5dd
Stop consuming redundant HostMetadata message in no-encap manager (#1…
mazdakn Jan 28, 2026
c8f4650
Add UTs with fully random
nelljerram Jan 29, 2026
344b8b1
Add FV
nelljerram Jan 29, 2026
3856883
Merge pull request #11736 from nelljerram/nftables-nat-port-range
marvin-tigera Jan 29, 2026
829ee18
Fix CI against OpenStack Yoga, by removing it
nelljerram Jan 29, 2026
227ad8f
Merge pull request #11742 from nelljerram/remove-yoga-ci
nelljerram Jan 29, 2026
db7f313
For VM-based tests on Jammy pin docker-buildx-plugin (#11743)
nelljerram Jan 29, 2026
8b19114
Remove CRDs from tigera-operator helm chart (#11727)
caseydavenport Jan 29, 2026
9474115
Add traffic distribution support and enable topology-aware routing fo…
lucastigera Jan 30, 2026
11140bf
Fix golangci-lint QF1001
lucastigera Jan 31, 2026
8cd1ee7
Use gcloud credential helper to login to GCR (#11752)
caseydavenport Feb 2, 2026
d290f2d
Ability to use projectcalico.org/v3 custom resource definitions (#10…
caseydavenport Feb 2, 2026
b6007e6
[windows] ASO: add support for nftables and BPF dataplanes (on linux …
coutinhop Feb 3, 2026
f75216a
fix kubeadm config yaml
coutinhop Feb 3, 2026
4d5ae46
replace docker commands with ctr in windows cni-plugin FVs
coutinhop Feb 3, 2026
4ced40e
Merge pull request #11757 from coutinhop/pedro-dataplanes-aso-1
coutinhop Feb 4, 2026
676c967
Fix chart target (#11761)
caseydavenport Feb 4, 2026
fb1317a
[BPF] Maglev Prometheus Metrics: Connection counts (#11660)
aaaaaaaalex Feb 4, 2026
7baf762
Update tests to use ubuntu 25.10 instead of 25.04 (#11763)
fasaxc Feb 4, 2026
0a9c0f2
Initial plan
Copilot Feb 5, 2026
6703c73
Convert Python 2 code to Python 3 in node/tests/k8st
Copilot Feb 5, 2026
2174529
Update test container to Docker 25 and Python 3
Copilot Feb 5, 2026
b8edc61
Fix generated files. (#11766)
fasaxc Feb 5, 2026
8e7dd8d
Add --break-system-packages
nelljerram Feb 5, 2026
3ded6bc
Unpin
nelljerram Feb 5, 2026
8b0198d
Repin to current versions
nelljerram Feb 5, 2026
2614023
Migrate from nose to pytest test runner
Copilot Feb 5, 2026
2ba57ad
Fix typo in CNP CRD. (#11768)
fasaxc Feb 5, 2026
813d55c
Python test code fixes
nelljerram Feb 5, 2026
02f2e31
Update node/tests/k8st/tests/test_bgp_filter.py
nelljerram Feb 5, 2026
4962be0
Update node/tests/k8st/tests/test_bgp_filter.py
nelljerram Feb 5, 2026
1fa4c3d
Update node/tests/k8st/tests/test_bgp_filter.py
nelljerram Feb 5, 2026
758b426
Remove unused cluster_route_regex_v4 variable
Copilot Feb 5, 2026
bef1f50
Python test code fixes
nelljerram Feb 5, 2026
2db1ecd
Update to Go 1.25.7
alexh-tigera Feb 5, 2026
f89d869
Merge pull request #11767 from projectcalico/copilot/convert-python2-…
nelljerram Feb 5, 2026
8d3c2f8
fix(windows): rename ASO env vars
coutinhop Feb 5, 2026
0a93409
Bump CALICO_BASE_VER to ubi9-1770247388
alexh-tigera Feb 5, 2026
30f16b0
Merge pull request #11774 from coutinhop/pedro-dataplanes-aso-2
coutinhop Feb 5, 2026
7d7467b
Run some tests against projectcalico.org/v3 API group (#11758)
caseydavenport Feb 5, 2026
fe7fd09
Add dependabot config to update golang.org/x/* libraries (#11776)
MichalFupso Feb 6, 2026
715f037
Add WaitForCloseWithDeadline utility to wait for a channel to close
Brian-McM Feb 6, 2026
48266d9
Remove profile CRD, as it is unused (#11792)
caseydavenport Feb 6, 2026
72b041b
Merge pull request #11791 from Brian-McM/bm-add-wait-for-close-utility
Brian-McM Feb 6, 2026
08c885e
Run ci target instead of fv directly (#11793)
caseydavenport Feb 6, 2026
b882e37
Turn off dependabot
MichalFupso Feb 6, 2026
e6e48dc
Merge pull request #11794 from MichalFupso/turn-off-dependabot
stevegaossou Feb 6, 2026
7f65e66
fix: return images marked as release if not the same as BUILD_IMAGES …
radTuti Feb 6, 2026
895ba29
Fix app-policy UTs not running (#11795)
caseydavenport Feb 6, 2026
4182370
[BPF] Fix propafation of ctx->fwd
tomastigera Feb 6, 2026
8c60163
[BPF] fix unhandled return value from bpf_fib_lookup
tomastigera Feb 7, 2026
e2b3eaf
Allow link-local even if HEP rpf check returns BPF_FIB_LKUP_RET_NOT_F…
sridhartigera Feb 9, 2026
c19f450
Automatic Pin Updates
Feb 10, 2026
d60ff0f
Merge pull request #11808 from projectcalico/semaphore-auto-pin-updat…
marvin-tigera Feb 10, 2026
f99495a
Use same calico/test image for calicoctl ST as for node
nelljerram Feb 6, 2026
a87b34a
Don't allocate IPs from IP pools with Disabled status (#11775)
caseydavenport Feb 10, 2026
2eba8b6
Merge pull request #11700 from projectcalico/dependabot/npm_and_yarn/…
stevegaossou Feb 10, 2026
2925ee4
Bump Envoy Gateway to v1.5.7
electricjesus Feb 10, 2026
88cdd2d
Hack CI
lwr20 Jan 26, 2026
efd9296
Merge pull request #11770 from alexh-tigera/bump-go-1.25.7
coutinhop Feb 10, 2026
f6770b4
Merge pull request #11820 from projectcalico/envoy-gateway-1.5.7-master
electricjesus Feb 10, 2026
5eed315
Merge pull request #11784 from tomastigera/tomas-bpf-fix-fwd-fib
tomastigera Feb 10, 2026
84cfc4e
Add unit tests to cover edge cases in the topology_test.go file and i…
lucastigera Feb 10, 2026
584d109
Unhack CI
lwr20 Feb 11, 2026
1b3afe6
ClusterNetworkPolicy: support generic protocols (#11804)
mazdakn Feb 11, 2026
60ebd4f
Address PR comments.
lucastigera Feb 11, 2026
913d988
E2E: Splits maglev test into two tests: IPv4 & IPv6 (#11801)
aaaaaaaalex Feb 12, 2026
ca90058
Fix CNI delete timer to start after acquiring IPAM lock (#11824)
sudheernv Feb 12, 2026
dc37fbf
Merge branch 'master' into core-11807-traffic-distribution
lucastigera Feb 12, 2026
1ba5bcd
Replace ippool filters in BIRD template with golang funcs (#11759)
mazdakn Feb 12, 2026
89b39bd
CNP: pick conformance improvements and enable it (#11833)
mazdakn Feb 12, 2026
bc875d3
Fix ipamconfigs -> ipamconfigurations (#11839)
caseydavenport Feb 13, 2026
d008c3c
Rename Undefined encap mode to Never to align with v3 (#11831)
mazdakn Feb 13, 2026
cb140b6
Merge pull request #11826 from lwr20/lwr-talos-runs
lwr20 Feb 13, 2026
9f4027d
Migrate to Ginkgo v2
hjiawei Feb 6, 2026
82dd048
Read coverprofile.out file
hjiawei Feb 6, 2026
2e2e4b5
Fix more ginkgo v2 errors and warnings
hjiawei Feb 6, 2026
2c0b762
Implement manual sharding for felix FVs
hjiawei Feb 7, 2026
e787534
Cleanup felix FV report to filter skipped tests
hjiawei Feb 8, 2026
b6c8bbb
Add preflight checks to allow ginkgo v2 only
hjiawei Feb 13, 2026
97b60f1
Pin calico/go-build with ginkgo v2 only installed
hjiawei Feb 13, 2026
9d2c194
Collect Multus network-attachment-definitions in cluster diags (#11816)
Copilot Feb 13, 2026
ee52802
Generate CRD API manfiests (#11836)
caseydavenport Feb 13, 2026
4f68565
Merge pull request #11797 from hjiawei/ginkgov2
coutinhop Feb 13, 2026
95be869
Merge branch 'master' into core-11807-traffic-distribution
lucastigera Feb 13, 2026
91cce8f
Merge pull request #11751 from lucastigera/core-11807-traffic-distrib…
tomastigera Feb 13, 2026
4f114ab
Felix UT: add tier to calc graph benchmarks (#11855)
fasaxc Feb 17, 2026
c93cd82
Fix BPF UTs to run on latest kernel (#11837)
sridhartigera Feb 17, 2026
3cd1322
[ebpf] - Send tcp rst when a backend is deleted (#11762)
sridhartigera Feb 18, 2026
7558e3d
Add tiered-rbac webhook (#11803)
caseydavenport Feb 18, 2026
09e9786
Skip nftables cache reload for cleaned disabled tables (#11848)
haojiwu Feb 18, 2026
3a0f409
Add print columns for CRDs in kubectl output (#11805)
caseydavenport Feb 18, 2026
1b45850
Modernise Go code with go fix (#11864)
fasaxc Feb 18, 2026
6431ad8
Define LiveMigration resource
nelljerram Feb 18, 2026
4c3ebf9
embed filter for disabled ippools (#11851)
mazdakn Feb 18, 2026
1641ebd
Update libcalico-go/lib/apis/v3/livemigration.go
nelljerram Feb 18, 2026
3a820d4
Update libcalico-go/lib/apis/v3/livemigration.go
nelljerram Feb 18, 2026
f3dc1ba
Get node name from BGPConfig (#11850)
mazdakn Feb 18, 2026
0c1117b
Remove last vestiges of tier prefixing (#11867)
caseydavenport Feb 18, 2026
0cb2873
Add CLAUDE.md with BPF test commands and code structure guide
tomastigera Feb 18, 2026
3110d6c
Fix FV_BATCH and FV_NUM_BATCHES validation in Felix FV configureManua…
hjiawei Feb 18, 2026
fc70bee
Centralize BPF sub-program management to single source of truth (#11822)
Copilot Feb 18, 2026
5ea1e7f
Collect more diags when the kind k8st cluster setup fails (#11874)
caseydavenport Feb 18, 2026
2949d4b
Setting TLS 1.3 only ciphers causes API server to fail on startup #11…
KameHameHa21110 Feb 18, 2026
4a0a1cb
Merge pull request #11873 from hjiawei/fix-felix-fv-total-batches-check
hjiawei Feb 18, 2026
76dfc9a
Update felix/CLAUDE.md
tomastigera Feb 19, 2026
66039ad
Update felix/CLAUDE.md
tomastigera Feb 19, 2026
4c0548c
Update felix/CLAUDE.md
tomastigera Feb 19, 2026
4943877
Improve performance of IP autodetection when there are many IP addrs …
imbstack Feb 19, 2026
2e70d48
Migrate Ginkgo v1 Measure to v2 gmeasure
hjiawei Feb 19, 2026
78a4245
Fix go-vet issues
nelljerram Feb 19, 2026
d086d0a
make fix-all
nelljerram Feb 19, 2026
9a7f245
make -C libcalico-go gen-files
nelljerram Feb 19, 2026
c9b6f2b
Add RBAC for live migration to the tigera-operator chart
nelljerram Feb 19, 2026
c431cd7
Fix calicoctl UT not to expect the LiveMigration resource
nelljerram Feb 19, 2026
ce41b8f
Merge remote-tracking branch 'origin/master' into calicoctl-st-update
nelljerram Feb 19, 2026
6519136
Switch LiveMigration K8s backend to KubeVirt typed client
nelljerram Feb 19, 2026
7c36448
D'oh, make generate
nelljerram Feb 19, 2026
adf6266
Replace subTest loops with individual test methods in calicoctl STs
nelljerram Feb 19, 2026
6e35b1d
Merge pull request #11879 from hjiawei/fix-ginkgo-measure
hjiawei Feb 19, 2026
547d69d
Rename lib/v3 -> lib/internalapi (#11870)
caseydavenport Feb 19, 2026
6422ed8
Automatic Pin Updates
Feb 19, 2026
4b439e8
Merge pull request #11888 from projectcalico/semaphore-auto-pin-updat…
coutinhop Feb 19, 2026
17c88f2
Add service index for EndpointSlice lookups in confd route generator
haojiwu Feb 11, 2026
bd687f5
Merge pull request #11798 from nelljerram/calicoctl-st-update
nelljerram Feb 20, 2026
0de2872
Merge remote-tracking branch 'origin/master' into lmrm
nelljerram Feb 20, 2026
a53eb0b
Decouple resources package from kubevirt.io/client-go to fix e2e flag…
nelljerram Feb 20, 2026
7685aa5
make generate
nelljerram Feb 20, 2026
f04e3a2
Update LiveMigrationSpec structure per review feedback
nelljerram Feb 20, 2026
8000f0f
Start adding Claude instructions. (#11893)
fasaxc Feb 20, 2026
3d64471
Safely remove finalizers (#11882)
caseydavenport Feb 20, 2026
a902560
Update pool sorting logic in pool controller (#11886)
caseydavenport Feb 20, 2026
76cceca
Add mutating admission policy for tier label, remove from OCP for now…
caseydavenport Feb 20, 2026
8417717
Simplify LiveMigrationSpec.Source to what we really need
nelljerram Feb 20, 2026
8b9444f
Include ippools filters in BirdBGPConfig (#11875)
mazdakn Feb 20, 2026
a1af5c7
Merge pull request #11838 from haojiwu/haoji/fix-endpointslice-issue-…
mazdakn Feb 20, 2026
79aa754
Fix owner reference test flake caused by Kubernetes GC (#11877)
caseydavenport Feb 20, 2026
14f6868
Add webhooks version to config for node tests (#11900)
caseydavenport Feb 21, 2026
bfea317
Remove FV tests for crypto package tied to FIPS (#11507)
stevegaossou Feb 21, 2026
eb4c85a
Expand CLAUDE.md with architecture, dataplane, networking, and test s…
tomastigera Feb 22, 2026
8df8754
Merge branch 'tomas-felix-claude' of github.com:tomastigera/project-c…
tomastigera Feb 22, 2026
0e990b3
fix FV container startup race with apiserver.crt bind mount (#11891)
tomastigera Feb 23, 2026
c061719
Merge remote-tracking branch 'origin/master' into live-migration-reso…
nelljerram Feb 23, 2026
4775423
make generate
nelljerram Feb 23, 2026
b9efff5
Add implement-calico-api-resource Claude Code skill (#11897)
fasaxc Feb 23, 2026
7b98a3f
Refactor IPAM AllocationAttribute for VM-based handle support (#11894)
song-jiang Feb 23, 2026
9af618a
Backport Felix calc graph computed data enhancement from Enterprise
radixo Jan 6, 2026
b3e4835
Review markup
nelljerram Feb 23, 2026
2c70eeb
Fix Docker-based make targets in git worktrees (#11898)
caseydavenport Feb 23, 2026
0b8d432
Merge pull request #11902 from nelljerram/computed-selector
nelljerram Feb 23, 2026
4a8d643
Operator CRD update (make generate)
nelljerram Feb 23, 2026
d855b18
Enhance Felix route table for elevated priority programming
nelljerram Jan 23, 2026
8970c59
Add status subresource to KubeControllersConfiguration CRD (#11889)
caseydavenport Feb 23, 2026
6aaeb8b
Merge pull request #11903 from nelljerram/crd-update
nelljerram Feb 23, 2026
c57e27b
Improve tigera-operator helm chart values.yaml and README (#11907)
caseydavenport Feb 23, 2026
0f01784
Merge remote-tracking branch 'origin/master' into live-migration-reso…
nelljerram Feb 24, 2026
b4218ba
Trim PR template and simplify cherry-pick headings (#11905)
fasaxc Feb 24, 2026
ffb0e1a
Revert k8s.io/client-go version change in go.mod
nelljerram Feb 24, 2026
bffc19c
Fix deps generation to take account of replacements
nelljerram Feb 24, 2026
b89bab5
Merge branch 'replacement-deps' into live-migration-resource
nelljerram Feb 24, 2026
d1cdc08
make generate
nelljerram Feb 24, 2026
45abe85
Review markups
nelljerram Feb 24, 2026
89158cc
Add isolated customer environments calc graph benchmark (#11866)
fasaxc Feb 24, 2026
e728415
More `make generate` changes that I somehow missed just now
nelljerram Feb 24, 2026
34818af
Merge pull request #11909 from nelljerram/replacement-deps
nelljerram Feb 24, 2026
69a90ed
Don't store label restrictions for every selector. (#11846)
fasaxc Feb 24, 2026
cf44126
Add some new e2e tests (#11892)
caseydavenport Feb 24, 2026
2a3d399
fix: add nil check in AddressesAsCIDRs to prevent SIGSEGV (#11602)
majiayu000 Feb 24, 2026
4367479
Merge pull request #11595 from kalavt/patch-1
mazdakn Feb 24, 2026
3619a62
fix(windows): also print 'bin_dirs' value on uninstall-calico-hpc.ps1
coutinhop Feb 24, 2026
f42cf0e
Merge pull request #11912 from coutinhop/pedro-win-bin_dirs
marvin-tigera Feb 24, 2026
1e99a86
[UI-256] update calico icons (#11685)
ronanc-tigera Feb 24, 2026
cd27005
prevent nil pointer dereference in handleBlockUpdate (#11913)
MichalFupso Feb 24, 2026
840f715
Add apt publishing framework to release tool
danudey Feb 24, 2026
f1455e6
Add Suite field to repository Releases file
danudey Feb 24, 2026
167532e
Run gofmt
danudey Feb 24, 2026
b663ed8
Run gofumpt
danudey Feb 24, 2026
c091b65
Handle sourcesFile and oddly named packages better
danudey Feb 24, 2026
40f583d
Fix error strings; handle empty outputDir parameter
danudey Feb 24, 2026
bf3fa37
Fix-all
danudey Feb 24, 2026
cc270bb
assert correct error value in generating filteres for ippools (#11914)
mazdakn Feb 24, 2026
c9f760b
fix: advertise /32 LB IPs assigned from IPPool via BGP (CI-1944) (#11…
caseydavenport Feb 24, 2026
d9ab2f2
Update to new operator CRDs location (#11918)
caseydavenport Feb 25, 2026
c866d24
Update CLAUDE.md with BPF build and test instructions
tomastigera Feb 25, 2026
06c169d
Fix/simplify k8s backend and add VMIM progression tests
nelljerram Feb 24, 2026
13b9f66
Merge remote-tracking branch 'origin/master' into live-migration-reso…
nelljerram Feb 25, 2026
0cd2f7c
Regenerate e2e/deps.txt
nelljerram Feb 25, 2026
fa7c4a3
Avoid our client package pulling in kubevirt.io/client-go
nelljerram Feb 25, 2026
c8405c9
Revert "Avoid our client package pulling in kubevirt.io/client-go"
nelljerram Feb 25, 2026
93839b7
Use Tigera fork of kubevirt/client-go
nelljerram Feb 25, 2026
cf55427
Regenerate deps files
nelljerram Feb 25, 2026
9c6b88c
Add .claude to .gitignore
tomastigera Feb 25, 2026
b43f7e5
Merge pull request #11871 from tomastigera/tomas-felix-claude
tomastigera Feb 25, 2026
4bfc9f4
Fix persistent connection teardown race in BPF spoof test
tomastigera Feb 23, 2026
b8e4cf5
Update felix/fv/test-connection/test-connection.go
tomastigera Feb 25, 2026
9596cc4
Guard loop-file shutdown check on sentInitial
tomastigera Feb 25, 2026
045d034
Update DNS nearer the start, and add retries to apt-get installs
lwr20 Feb 25, 2026
bf54528
Merge pull request #11922 from lwr20/lwr-prologue-robustness
lwr20 Feb 26, 2026
dec1857
Add direct-mapped cache to uniquelabels.Make for repeated inputs (#11…
fasaxc Feb 26, 2026
08055cc
Send HostMetadata to BPF KubeProxy (#11817)
aaaaaaaalex Feb 26, 2026
7164ac4
Merge remote-tracking branch 'origin/master' into live-migration-reso…
nelljerram Feb 26, 2026
a1ddb45
Index routetable structs on kernelRouteKey instead of just CIDR
nelljerram Feb 25, 2026
2983c35
Firewall attempt to Watch LiveMigrations on v3 API
nelljerram Feb 26, 2026
dbf04cc
Add comment for why v3 API Watch is disallowed
nelljerram Feb 26, 2026
b6deeda
Update v3 client e2e tests for LiveMigration
nelljerram Feb 26, 2026
6e848c5
Add webhooks version command and hook into hashreleases (#11941)
caseydavenport Feb 26, 2026
f6d4e50
[CORE-12132] Move windows e2es to azr-aso provisioner
coutinhop Jan 19, 2026
4fa1017
Merge pull request #11908 from tomastigera/bpf-fv-flake-fix
tomastigera Feb 26, 2026
c4053db
[CORE-12378] fix(QoS): Use QdiscReplace() instead of QdiscAdd()
coutinhop Feb 20, 2026
2a099eb
Fix BPF FV flake: sync NAT maps on all felixes before connecting (#11…
sridhartigera Feb 26, 2026
df92415
Merge pull request #11681 from coutinhop/pedro-CORE-12132
coutinhop Feb 26, 2026
148663a
Bump base image to UBI 9 in calico-node component (#11860)
lucastigera Feb 27, 2026
b1ccd34
Move templates to templates dir
danudey Feb 27, 2026
e49d7a7
Merge pull request #11868 from nelljerram/live-migration-resource
nelljerram Feb 27, 2026
336461c
Use RouteKey in RouteTable API
nelljerram Feb 27, 2026
6732be7
Merge remote-tracking branch 'origin/master' into routing-priority
nelljerram Feb 27, 2026
ad84964
CI: Tell Semaphore to upload logs as artifacts when truncating (#11946)
fasaxc Feb 27, 2026
241df45
Felix FV CI: mark failed per-VM logs and upload them to transient GCS…
Copilot Feb 27, 2026
2a048ad
Fix IPv6 RouteRemove not normalizing Priority 0 to 1024
nelljerram Feb 27, 2026
18164b3
Add unit tests for routes with different priorities sharing the same …
nelljerram Feb 27, 2026
cd7c3b9
Throw away result of .Close()
danudey Feb 27, 2026
0a880f7
Fix-all
danudey Feb 27, 2026
69dde75
Add `ssh-key add` to cni-plugin push-images pipeline
danudey Feb 27, 2026
2931e54
Merge pull request #11952 from danudey/cni-plugin-add-ssh-key-to-agen…
danudey Feb 27, 2026
00a34d9
Add `ssh-key add` to all push-images pipelines
danudey Feb 27, 2026
4430f1e
Remove doubles
danudey Feb 27, 2026
4e5cbc5
Merge pull request #11953 from danudey/add-ssh-key-to-agent-master
danudey Feb 28, 2026
f417490
Use net.JoinHostPort() for IPv6-safe host:port formatting
hjiawei Feb 28, 2026
78a5177
Fix IPv6 DNAT/SNAT rule formatting in iptables and nftables backends
hjiawei Feb 28, 2026
1dcec16
Merge pull request #11915 from danudey/add-apt-publishing-release-too…
danudey Feb 28, 2026
b436550
Add live migration routing sequence unit tests
nelljerram Mar 2, 2026
91a6e43
Document conntrack tracker limitation with multiple route priorities
nelljerram Mar 2, 2026
99ad102
Add VirtualMachineInstanceMigration RBAC to non-operator manifests
nelljerram Mar 2, 2026
dbf99d8
Move VMIM RBAC rule outside network==calico gate
nelljerram Mar 2, 2026
a182741
Add a few more tiered RBAC e2e tests (#11895)
caseydavenport Mar 2, 2026
9920ad0
Merge pull request #11959 from hjiawei/join-host-port-fv
hjiawei Mar 2, 2026
443d5cd
Merge pull request #11960 from hjiawei/join-host-port-ipt-nft
hjiawei Mar 2, 2026
694b55a
Merge remote-tracking branch 'origin/master' into routing-priority
nelljerram Mar 2, 2026
a7f8081
Improve comment about live migration and conntrack state cleanup
nelljerram Mar 2, 2026
a3b82ad
IPAM support for KubeVirt IP persistence (#11865)
song-jiang Mar 2, 2026
9afd2b5
Merge pull request #11899 from projectcalico/pedro-CORE-12378
coutinhop Mar 2, 2026
9ca264c
Merge pull request #11904 from nelljerram/routing-priority
nelljerram Mar 2, 2026
cfb8170
fix(qos tests): remove unnecessary waits for routes on QoS felix FVs
coutinhop Mar 2, 2026
8e54857
Merge pull request #11966 from coutinhop/pedro-qos-fvs-1
coutinhop Mar 2, 2026
616ca42
Added cali bot trigger (#11849)
skoryk-oleksandr Mar 3, 2026
fb9f45c
Add Claude Code skill for reproducing CI failures on GCP VMs (#11968)
tomastigera Mar 3, 2026
e9fe292
Merge pull request #11965 from nelljerram/vmim-rbac
nelljerram Mar 3, 2026
587105a
Merge branch 'master' of https://github.com/ronanc-tigera/calico into…
ronanc-tigera Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
283 changes: 283 additions & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Repository Overview

Project Calico is a large monorepo providing container networking and security for Kubernetes. The codebase contains ~2000 Go files across 30+ components, supporting multiple dataplanes (eBPF, iptables, nftables, Windows, VPP).

**Primary language:** Go (also C/eBPF, Python, Shell, TypeScript/React)
**Build system:** Make + Docker-based reproducible builds
**CI/CD:** Semaphore CI (configuration in `.semaphore/`)
**Default branch:** `master` (not `main`)
**Separate docs repo** https://github.com/tigera/docs/

## Gotchas

- **NEVER** run `make ci` or `make cd` locally — destructive CI-only targets
- **NEVER** run `make test` at root — takes hours. Always test components individually.
- **ALWAYS** run `make fix-changed` before committing — CI rejects formatting errors
- **ALWAYS** remove `FIt`/`FDescribe` before committing — pre-commit hook rejects Ginkgo focused tests
- **ALWAYS** commit generated files alongside source changes

## Essential Build Commands

**Prerequisites:** Docker, Make, Git, Linux environment (Ubuntu 24.04+ recommended)

### Building Components

```bash
# Build specific component (2-5 minutes, RECOMMENDED)
make -C felix build
make -C typha build
make -C node build
make -C calicoctl build
make -C kube-controllers build

# Build all images (WARNING: 30+ minutes)
make image

# Build for specific architecture
make -C felix build ARCH=arm64
```

### Running Tests

```bash
# Unit tests for a component via Make (runs in Docker, rebuilds tooling)
make -C felix ut
make -C calicoctl test
make -C typha test

# Unit tests via go test (faster, no Docker overhead — use for quick iteration)
go test ./felix/calc/...
go test ./libcalico-go/lib/...

# Components with separate go.mod (must cd first)
cd api && go test ./...
cd lib/std && go test ./...
cd lib/httpmachinery && go test ./...

# Felix FV (functional verification) tests
# IMPORTANT: Always use Makefile targets — they build required tooling and set up permissions
make -C felix fv GINKGO_ARGS="-ginkgo.v"

# Run specific FV tests by pattern
make -C felix fv GINKGO_FOCUS="TestName" GINKGO_ARGS="-ginkgo.v"

# Felix FV in eBPF mode (BPF-SAFE tests only)
make -C felix fv-bpf GINKGO_FOCUS="TestName" GINKGO_ARGS="-ginkgo.v"

# Felix FV in nftables mode
make -C felix fv GINKGO_ARGS="-ginkgo.v" FELIX_FV_NFTABLES=Enabled
```

### Felix Testing Notes

- Felix FV tests are in `felix/fv/`, using **Ginkgo v2** (`github.com/onsi/ginkgo/v2`)
- Test IDs include all nested Context/Describe headings
- **Always run FVs via Makefile** — builds required tooling and sets up permissions
- Use `GINKGO_FOCUS="regex"` to target specific tests, `GINKGO_ARGS` for extra flags
- Useful flags: `-ginkgo.dryRun` (list tests), `-ginkgo.v` (verbose), `FV_FELIX_LOG_LEVEL=debug`
- **Prefer vanilla `go test` for new packages.** Only use Ginkgo if established pattern exists.
- Felix "brain" is the calculation graph in `felix/calc/` — changes require calc graph "FV" tests (`felix/calc/calc_graph_fv_test.go`)

### Validation and Formatting

```bash
make yaml-lint # Quick YAML validation (~30 seconds)
make check-go-mod # Go module validation
make check-dockerfiles # Dockerfile linting
make check-language # Language/content checks
make go-vet # Go static analysis (requires: make -C felix clone-libbpf)
make verify-go-mods # Cross-component module check
make golangci-lint # Run golangci-lint (--timeout 8m)
make fix-changed # Auto-fix formatting for changed files (RECOMMENDED)
make pre-commit # Run pre-commit checks in Docker
```

### Code Generation

```bash
# Regenerate all generated files (APIs, protobuf, manifests, CI config, etc.)
make generate

# Individual generation targets
make protobuf # Regenerate protobuf files
make gen-manifests # Update manifests/ from helm charts
make gen-semaphore-yaml # Regenerate .semaphore/semaphore.yml from templates
```

## Generated Files (DO NOT edit directly)

| Generated file | Edit this instead | Regenerate with |
|---|---|---|
| `.semaphore/semaphore.yml` | `.semaphore/semaphore.yml.d/` templates | `make gen-semaphore-yaml` |
| `manifests/` | `charts/` | `make gen-manifests` |
| `*.pb.go` protobuf files | `.proto` sources | `make protobuf` |

After regenerating, commit the generated files alongside your source changes.

## Code Conventions

### Go Import Order

Three groups separated by blank lines: stdlib, external, calico-internal:
```go
import (
"fmt"
"net"

"k8s.io/api/core/v1"

"github.com/projectcalico/calico/libcalico-go/lib/apis"
)
```

Run `make fix-changed` to auto-fix import ordering. Do not run `goimports` or `go fmt` directly — the project uses a custom 3-step pipeline (`hack/format-changed-files.sh`).

### Copyright Headers

All new `.go` files require:
```go
// Copyright (c) <YEAR> Tigera, Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// ...
```

eBPF files in `felix/bpf-gpl/` require dual Apache/GPL headers with SPDX identifiers. The pre-commit hook validates license headers.

## Repository Architecture

### Component Dependency Order

Core components (dependency order):
```
api/ - Calico API definitions (CRDs, protobuf), separate go.mod
libcalico-go/ - Core Go client library and data model
typha/ - Datastore fan-out proxy for scaling (reduces etcd load)
felix/ - Core per-host networking agent (eBPF/iptables/nftables dataplane)
node/ - Node initialization container (includes Felix, confd, BIRD, startup scripts)
calicoctl/ - CLI tool for Calico management
kube-controllers/ - Kubernetes-specific controllers (namespace, pod, node, serviceaccount)
cni-plugin/ - Kubernetes CNI integration
confd/ - Configuration management daemon
app-policy/ - Application layer policy (L7)
apiserver/ - Kubernetes API aggregation layer
```

Additional components:
```
goldmane/ - Log aggregation and flow log storage
guardian/ - Secure tunnel proxy for management cluster connections
pod2daemon/ - Flex volume driver for injecting credentials into pods
key-cert-provisioner/ - TLS certificate provisioner for Calico components
whisker/ - Flow log UI (TypeScript/React frontend)
whisker-backend/ - Backend for whisker flow log UI
e2e/ - End-to-end test suites
release/ - Release tooling and automation
lib/std/ - Internal shared Go library (separate go.mod)
lib/httpmachinery/ - Internal HTTP utility library (separate go.mod)
```

### Key Architectural Concepts

**Felix** is the core per-host agent responsible for:
- Programming dataplane (eBPF, iptables, nftables)
- Maintaining routing tables
- Processing policy and programming ACLs
- Source: `felix/daemon/daemon.go`
- **Calculation graph** (`felix/calc/`): DAG that processes datastore updates and calculates dataplane state. Changes here require calc graph FV tests.

**Typha** is a fan-out proxy that:
- Sits between Felix instances and the datastore (etcd/K8s API)
- Reduces load on datastore by caching and fanning out to multiple Felix instances
- Optional but recommended for clusters >50 nodes

**Node container** orchestrates node initialization:
- Runs Felix, confd, and BIRD in a single container
- Handles CNI plugin installation
- Source: `node/pkg/lifecycle/startup/startup.go`

### Go Module Structure

- Root `go.mod` (`github.com/projectcalico/calico`) is the primary module for most components
- `api/go.mod` (`github.com/projectcalico/api`) is separate (API exported as independent repo)
- `lib/std/go.mod` and `lib/httpmachinery/go.mod` are internal libraries
- When adding Go dependencies: `cd <component> && go mod tidy && cd .. && make check-go-mod`

### Docker Build System

- All builds run inside Docker containers using `calico/go-build` (version pinned in `metadata.mk`)
- Base images configured in `metadata.mk`
- Build cache in `.go-pkg-cache/` (speeds up rebuilds)
- Supported architectures: amd64, arm64, ppc64le, s390x (plus Windows builds)
- Cross-compilation via `ARCH=<target>` and binfmt registration (`calico/binfmt`)

## Common Development Workflows

### Making Code Changes

1. Create feature branch from `master`
2. Make changes to relevant component(s)
3. Run component-specific tests: `make -C <component> test` or `go test ./...`
4. Run validation: `make yaml-lint` (if YAML changed)
5. If APIs/config/CI changed: `make generate`
6. **MANDATORY:** Run `make fix-changed` to fix formatting
7. Commit changes (generated files must be included)
8. Push and create PR

### Updating Helm Charts and Manifests

- Charts are in `charts/`
- After editing chart templates: `make gen-manifests`
- This regenerates `manifests/` directory (mostly auto-generated)
- Commit both chart changes and regenerated manifests

### Working with eBPF Code

- eBPF programs: `felix/bpf-gpl/` (GPL v2.0 license for Linux compatibility)
- Apache licensed BPF code: `felix/bpf-apache/`
- Before building: `make -C felix clone-libbpf`
- BPF tooling configured in `metadata.mk` (LIBBPF_VERSION, BPFTOOL_IMAGE)

### Cherry-picking to Release Branches

1. Merge PR to master first
2. Use `hack/cherry-pick-pull` to create the cherry-pick PR:
```bash
SRC_UPSTREAM_REMOTE=origin DST_UPSTREAM_REMOTE=origin FORK_REMOTE=<your-remote> CHERRY_PICK=1 \
./hack/cherry-pick-pull origin/release-vX.YY <PR_NUMBER>
```

## Critical Files and Locations

**Build Configuration:**
- `metadata.mk` - Version pins, tool versions, registry config (all tool/image versions pinned here)
- `lib.Makefile` - Shared Makefile logic for all components
- `Makefile` - Root orchestration

**Component Entry Points:**
- `felix/daemon/daemon.go` - Felix main entry point
- `felix/calc/` - Felix calculation graph (policy processing brain)
- `felix/dataplane/` - Dataplane implementations (eBPF, iptables, nftables)
- `node/pkg/lifecycle/startup/startup.go` - Node initialization
- `calicoctl/calicoctl/calicoctl.go` - CLI entry point

**Testing:**
- `felix/fv/` - Felix functional verification tests (Ginkgo v2-based)
- Component unit tests co-located with source code
- Felix FV supports batching: `FV_NUM_BATCHES` / `FV_BATCHES_TO_RUN` to split across CI jobs
- Race detector enabled by default on amd64/arm64 (`FV_RACE_DETECTOR_ENABLED`)

## PR Requirements

Every PR needs one docs label (`docs-pr-required`, `docs-completed`, or `docs-not-required`) and one release note label (`release-note-required` or `release-note-not-required`). Optional: `cherry-pick-candidate` (bug fix backports), `needs-operator-pr` (requires operator change).

## Additional Resources

- **Developer Guide:** `DEVELOPER_GUIDE.md`
- **Contributing Guide:** `CONTRIBUTING.md`
- **User Documentation:** https://docs.tigera.io/calico/latest/about
- **Hack docs:** `hack/docs/`
Loading