Skip to content

Comments

Rebase to CoreDNS v1.13.2#160

Draft
gcs278 wants to merge 122 commits intoopenshift:mainfrom
gcs278:rebase-to-v1.13.2
Draft

Rebase to CoreDNS v1.13.2#160
gcs278 wants to merge 122 commits intoopenshift:mainfrom
gcs278:rebase-to-v1.13.2

Conversation

@gcs278
Copy link

@gcs278 gcs278 commented Dec 19, 2025

NOTE: My goal for this PR is testing /rebase command on claude, not necessarily to bump CoreDNS

Summary

This PR rebases the OpenShift CoreDNS fork from v1.13.1 to v1.13.2, incorporating 113 upstream commits while maintaining all necessary OpenShift-specific carries.

Rebase Details

Target Version: CoreDNS v1.13.2
Base Version: v1.13.1
Upstream Commits: 113 commits
Strategy: Clean rebase from v1.13.2 tag + cherry-pick carries + merge helper commit

Carries Forward-Ported (7 total)

All essential OpenShift carries have been forward-ported:

  1. OWNERS automation metadata - OpenShift CI/build configuration
  2. Downstream OWNERS metadata - Team ownership and review process
  3. Disable dependabot - Per OpenShift policy
  4. Make test target - Required by ci-operator
  5. ocp_dnsnameresolver plugin - OpenShift-specific DNS feature
  6. Vendor tree ignore rules - Track vendor for offline builds
  7. Vendor deps - Regenerated for v1.13.2 dependencies

Carry Dropped

  • Go toolchain pin (commit 1457b2e) - Explicitly marked as <drop>
    • Makefile already has GOTOOLCHAIN=local which provides the same functionality

Key Changes in v1.13.2

Upstream Features

  • geoip plugin: Upgraded to geoip2-golang v2, added ISO 3166-2 subdivisions support
  • forward plugin: Added max connect attempts configuration knob
  • auto plugin: Fixed regex length limit vulnerability

Dependency Updates

  • Go version: 1.25.5 (we keep 1.24.6 with GOTOOLCHAIN=local)
  • AWS SDK v2: Multiple patch bumps (route53, secretsmanager, credentials, config)
  • google.golang.org/api: 0.251.0 → 0.257.0
  • quic-go: 0.55.0 → 0.57.1
  • k8s.io/*: Updated to v0.34.2
  • DataDog trace: v2.2.3 → v2.4.0

Vendor Tree

  • 1,218 files changed: 174,666 insertions, 67,248 deletions
  • Regenerated via GOFLAGS=-mod=vendor go mod vendor
  • Major changes:
    • geoip2-golang v1 → v2 migration
    • DataDog appsec reorganization
    • New compression libraries (klauspost/compress, klauspost/cpuid)
    • AWS signin service added

Testing

Build Status

Build successful with GOFLAGS=-mod=vendor make

Test Results

Tests pass - make test completed successfully

  • All plugin tests pass
  • One known flaky test in proxy package (timing-related, not a blocker)
  • Verified plugin ordering: ocp_dnsnameresolver correctly placed before cache

Verification Checklist

  • Binary builds successfully
  • Unit tests pass
  • Plugin files regenerated correctly
  • Vendor tree updated
  • ocp_dnsnameresolver plugin loads correctly
  • QE testing (pending)
  • Integration tests (pending)

Risk Assessment

Overall Risk: 🟢 LOW

Mitigated Risks

  1. Go version mismatch (1.25.5 vs 1.24.6)

    • ✅ Mitigated via GOTOOLCHAIN=local in Makefile
    • Builds successfully with Go 1.24.6
  2. geoip2-golang v2 migration

    • ✅ Upstream handled migration
    • ✅ Vendor tree includes v2
    • Low impact (plugin not heavily used in OpenShift)
  3. Dependency churn

    • ✅ Mostly patch/minor bumps on stable APIs
    • ✅ Comprehensive vendor regeneration captures all changes
  4. ocp_dnsnameresolver compatibility

    • ✅ Plugin version: v0.0.0-20251118200623-f7b15b30153f (recent)
    • ✅ Compiles successfully with k8s.io/* v0.34.2
    • ✅ Plugin ordering verified

Documentation

Comprehensive rebase documentation has been generated:

  • audit_upstream_carry_commits.md - Analysis of all 137 historical carries
  • rebase_to_v1.13.2_report.md - Complete rebase guide with action plans

Commit Structure

e38631c78 Update vendor tree and go.sum for v1.13.2 dependencies
0e434676e Merge remote-tracking branch 'origin/main' into rebase-to-v1.13.2
4c07153bf UPSTREAM: <carry>: openshift: vendor deps + track vendor tree
f593a3381 UPSTREAM: <carry>: openshift: document vendor tree ignore rules
9b480cade UPSTREAM: <carry>: openshift: add ocp_dnsnameresolver plugin
bc8cbf21d UPSTREAM: <carry>: openshift: keep make test target for ci-operator
43e7411fe UPSTREAM: <carry>: openshift: disable dependabot
c4c04a7e0 UPSTREAM: <carry>: openshift: document downstream OWNERS metadata
b3357336a UPSTREAM: <carry>: openshift: restore automation metadata
0233f3e7c Add deprecation notice for geoip plugin's behavior of 0 (#7740) [v1.13.2 tag]

Next Steps

  1. Code review - Assign team members from OWNERS
  2. QE testing - Coordinate with QE team for comprehensive testing
  3. Stakeholder review - Present changes to stakeholders
  4. Merge - After all approvals

References


🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

rfletcher and others added 30 commits October 10, 2025 18:24
Signed-off-by: Rick Fletcher <fletch@pobox.com>
…#7612)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.6 to 4.30.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@64d10c1...f443b60)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.30.8
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…oredns#7609)

Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.66.1 to 0.67.1.
- [Release notes](https://github.com/prometheus/common/releases)
- [Changelog](https://github.com/prometheus/common/blob/main/CHANGELOG.md)
- [Commits](prometheus/common@v0.66.1...v0.67.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-version: 0.67.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ns#7608)

Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.75.1 to 1.76.0.
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](grpc/grpc-go@v1.75.1...v1.76.0)

---
updated-dependencies:
- dependency-name: google.golang.org/grpc
  dependency-version: 1.76.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…dns#7607)

Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.251.0 to 0.252.0.
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](googleapis/google-api-go-client@v0.251.0...v0.252.0)

---
updated-dependencies:
- dependency-name: google.golang.org/api
  dependency-version: 0.252.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
Previously the parsing logic in the forward plugin setup failed to
recognise when NOERROR was used as a failover RCODE criteria. The
check was in the wrong code branch. This PR fixes it and adds
validation tests. Also updates the plugin README.

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
* Update multisocket README.md

I was a bit confused why `multisocket` wasn't working for me, but I eventually found https://github.com/coredns/coredns/blob/38c020941b4938cf5642acfbf5ba5e52a71d320b/core/dnsserver/register.go#L308:
```
	// create one server by default if no NumSockets specified
	numSockets := 1
	if group[0].NumSockets > 0 {
		numSockets = group[0].NumSockets
	}
```

I tried to summarize my understanding in the README

Signed-off-by: Ryan Brewster <rpb@anthropic.com>

* Update plugin/multisocket/README.md

Co-authored-by: Ville Vesilehto <ville@vesilehto.fi>
Signed-off-by: Ryan Brewster <rpb@anthropic.com>

---------

Signed-off-by: Ryan Brewster <rpb@anthropic.com>
Co-authored-by: Ville Vesilehto <ville@vesilehto.fi>
)

Bumps [github.com/aws/aws-sdk-go-v2/credentials](https://github.com/aws/aws-sdk-go-v2) from 1.18.16 to 1.18.17.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](aws/aws-sdk-go-v2@config/v1.18.16...config/v1.18.17)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/credentials
  dependency-version: 1.18.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ns#7629)

Bumps [github.com/aws/aws-sdk-go-v2/service/route53](https://github.com/aws/aws-sdk-go-v2) from 1.58.4 to 1.58.5.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](aws/aws-sdk-go-v2@service/route53/v1.58.4...service/route53/v1.58.5)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/service/route53
  dependency-version: 1.58.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) from 1.31.12 to 1.31.13.
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Changelog](https://github.com/aws/aws-sdk-go-v2/blob/main/changelog-template.json)
- [Commits](aws/aws-sdk-go-v2@config/v1.31.12...config/v1.31.13)

---
updated-dependencies:
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.31.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Wrap doPrefetch with a fresh metadata context to prevent concurrent
writes to the request-scoped metadata map during background prefetch.

Add a new integration test configuring a plugin chain, triggering
the issue seen here. Hammers concurrent queries while log reads
metadata fields repeatedly.

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
Update to the latest golangci-lint version and use built-in modernize
linter, instead of a custom CI step.

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
thevilledev and others added 26 commits December 7, 2025 17:04
A very large regex for the auto plugin in the Corefile could cause
CoreDNS to OOM. This change adds an artificial limit of 10k characters
for the regex pattern. Fixes OSS-Fuzz finding #466745384.

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
Signed-off-by: Eric Case <eric.case@gmail.com>
This PR add a deprecation noticed for geoip plugin's upcoming
behavior change of 0. Please see PR coredns#7732 for details.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Downstream policy (carried since 213249c/1b37b38eb) disables Dependabot in the
OpenShift forks because ART curates dependencies centrally and the automated PRs
get closed immediately.

This commit removes `.github/dependabot.yml` and documents the policy in
`carry_consolidation/dependabot_policy.md` so future rebases know why we do not
re-enable it even though upstream keeps the workflow enabled.

Co-authored-by: Ryan Fredette <rfredette@redhat.com>
Co-authored-by: Grant Spence <gspence@redhat.com>
Carry the external `ocp_dnsnameresolver` plugin again after the rebase, folding
in the previous carry commits (7a4db4b, 6b897ee, 8eab9cb) into one logical
change:

- register the plugin ahead of `cache` inside `plugin.cfg` and regenerate
  `core/plugin/zplugin.go` + `core/dnsserver/zdirectives.go` so directives stay
  ordered the way OpenShift expects.
- pull in the released module version via `go.mod`/`go.sum`; this matches the
  rebased plugin tag that now builds against k8s v0.34.1.
- document the reapply steps in `carry_consolidation/ocp_dnsnameresolver.md`
  (files to touch, commands to run, and validation steps) so reviewers do not
  need the deleted report to understand the carry.

Co-authored-by: Arkadeep Sen <arsen@redhat.com>
Co-authored-by: Ryan Fredette <rfredette@redhat.com>
Co-authored-by: Grant Spence <gspence@redhat.com>
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 19, 2025
@openshift-ci
Copy link

openshift-ci bot commented Dec 19, 2025

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci
Copy link

openshift-ci bot commented Dec 19, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign candita for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress.

Projects

None yet

Development

Successfully merging this pull request may close these issues.