perf: reduce manager binary size - #564
Draft
gi8lino wants to merge 2 commits into
Draft
Conversation
gi8lino
force-pushed
the
agent/shrink-cloudflare-client
branch
from
July 31, 2026 14:52
2b7503e to
8586413
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
cloudflare.Clientwith a small local client containing only the DNS and Zones services used by the operatorWhy
cloudflare.NewClientconstructs every generated Cloudflare API service. The operator only uses DNS and Zones, but the root client made all of those service packages reachable in the manager binary.For a stripped Linux/amd64 build using Go 1.26.5:
The non-standard production dependency closure drops from 771 to 654 packages.
Validation
go vet ./...CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w' ./cmdgit diff --checkThe full
make testtarget reaches the Cloudflare integration cases, which require localCF_API_TOKENand zone test credentials; those were not available in this environment. The repository's golangci-lint installer also stopped on an upstream archive checksum mismatch before linting began.