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

docs(proposal): externaldns api graduation to beta #5079

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

ivankatliarchuk
Copy link
Contributor

@ivankatliarchuk ivankatliarchuk commented Feb 9, 2025

Description

Relates, but not resolves #2941

The proposal to merge to master 2025-Mar-09 with the decision

Checklist

  • Unit tests updated
  • End user documentation updated

@k8s-ci-robot
Copy link
Contributor

[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 mloiseleur for approval. For more information see the Code Review Process.

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

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

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Feb 9, 2025
@ivankatliarchuk
Copy link
Contributor Author

/label tide/merge-method-squash

@k8s-ci-robot k8s-ci-robot added the tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. label Feb 9, 2025
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Feb 17, 2025
1. Refactor `endpoint` folder, move away `api/crd` related stuff to `apis/<apiVersion> folder`
2. Documentation for API to be generated automatically with test coverage, similar to `docs/flags.md`
3. API(s) and CRD(s) discoverable. [doc.crds.dev](https://doc.crds.dev/github.com/kubernetes-sigs/external-dns). Example [crosplane](https://doc.crds.dev/github.com/crossplane/[email protected])
4. TBD
Copy link
Contributor

Choose a reason for hiding this comment

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

I would add: review and change .status object such that people can debug and monitor DNSEndpoint object behavior.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agree. Will add that one too. There is a status field issue #2092. It's actually recommended to have it

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added

2. Documentation for API to be generated automatically with test coverage, similar to `docs/flags.md`
3. API(s) and CRD(s) discoverable. [doc.crds.dev](https://doc.crds.dev/github.com/kubernetes-sigs/external-dns). Example [crosplane](https://doc.crds.dev/github.com/crossplane/[email protected])
4. TBD
5. TBD
Copy link
Contributor

@szuecs szuecs Feb 18, 2025

Choose a reason for hiding this comment

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

add: introduce a metric for objects and errors if not already available (review if this is available)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point. Trying to understand what are the metrics currently available to us.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added

Copy link
Contributor

@Raffo Raffo left a comment

Choose a reason for hiding this comment

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

I like the proposal to graduate DNSEndpoint. I would encourage to try to understand the status of the API today, its limits and the required changes before drawing any conclusion on what needs to be changed. I think we need to do this before the beta graduation as ideally the beta to GA transition should be mostly a noop. I am not too up to speed on how this is used, maybe we can open an issue to survey users or trying a github search and see if people are using it in public repositories.

title: "Proposal: API DNSEndpoint graduation to beta"
version: tbd
authors: ivankatliarchuk
creation-date: 2025-feb-9
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: let's fix this date too?

Copy link
Contributor Author

@ivankatliarchuk ivankatliarchuk Feb 21, 2025

Choose a reason for hiding this comment

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

Do you prefer dates to be in certain format, no jan|feb|march ? Or what exactly?

Copy link
Contributor

Choose a reason for hiding this comment

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

I'd go for ISO 8601: YYYY-MM-DD

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated in separate pull request #5128

@ivankatliarchuk
Copy link
Contributor Author

ivankatliarchuk commented Feb 21, 2025

I like the proposal to graduate DNSEndpoint. I would encourage to try to understand the status of the API today, its limits and the required changes before drawing any conclusion on what needs to be changed. I think we need to do this before the beta graduation as ideally the beta to GA transition should be mostly a noop. I am not too up to speed on how this is used, maybe we can open an issue to survey users or trying a github search and see if people are using it in public repositories.

That make sense. Shell I rename the proposal?

### Goals
- Define the necessary requirements for `DNSEndpoint` API to reach beta status.
- Improve API stability, usability, and documentation.
- Improve test coverage, automate documentation creation, and validation mechanisms.
- Ensure backward compatibility and migration strategies from alpha to beta.
- Collect and incorporate feedback from existing users to refine the API.
- Address any identified issues or limitations in the current API design.

### Goals

- Define the necessary requirements for `DNSEndpoint` API to reach beta status.
- Improve API stability, usability, and documentation.
- Improve test coverage, automate documentation creation, and validation mechanisms.
- Ensure backward compatibility and migration strategies from alpha to beta.
- Collect and incorporate feedback from existing users to refine the API.
- Address any identified issues or limitations in the current API design.

### Non-Goals

- This proposal does not cover the graduation of ExternalDNS itself to a stable release.
- Making `DNSEndpoint` a stable (GA) API at this stage.
- It does not include implementation details for specific DNS providers.
- It does not introduce new functionality beyond stabilizing the DNSEndpoint API.
- Redesigning the API from scratch.
- Introducing breaking changes that would require significant refactoring for existing users.

Goals are mainly review, and implement pre-requisits before we decide on actuall migration. Expectation is, when all the goals that we define completed, I have not planned the future to be honest.

@Raffo
Copy link
Contributor

Raffo commented Feb 25, 2025

@ivankatliarchuk that's good, maybe we can add a bit more Information on how do we expect to gather feedback so that we can make this more actionable?

1 similar comment
@Raffo
Copy link
Contributor

Raffo commented Feb 25, 2025

@ivankatliarchuk that's good, maybe we can add a bit more Information on how do we expect to gather feedback so that we can make this more actionable?

@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Feb 26, 2025
* master: (80 commits)
  chore(deps): bump the dev-dependencies group across 1 directory with 7 updates
  Update README.md with proper link to dev guide
  Add OpenStack Designate webook provider to readme
  chore(deps): bump the dev-dependencies group with 3 updates
  chore(deps): bump the dev-dependencies group with 20 updates
  chore(deps): bump azure/setup-helm in the dev-dependencies group
  style: formatting
  fix: remove broken test
  fix test name
  chore: upgrade ExternalDNS to go 1.24
  chore-makefile-coverage
  cover source.go getProviderSpecificAnnotations() with unit tests
  nitpick: rename cloudflare custom hostname test function
  review suggestions based improvements
  review suggestions
  fix(source): debug log on gateway target detection
  improve error message phrasing
  Update docs/sources/service.md
  chore(formatting): fix infected files with correct formatting (kubernetes-sigs#5099)
  docs: Fix managed-record-type argument
  ...
@ivankatliarchuk
Copy link
Contributor Author

@ivankatliarchuk that's good, maybe we can add a bit more Information on how do we expect to gather feedback so that we can make this more actionable?

Added to proposal

1. Capture feedback from the community on missing functionality for DNSEndpoint CRD
   - In a form of Github issue, pin the issue to the project
   - Link all CRD related issues to it

@ivankatliarchuk
Copy link
Contributor Author

/open

@ivankatliarchuk
Copy link
Contributor Author

/reopen

@k8s-ci-robot k8s-ci-robot reopened this Feb 26, 2025
@k8s-ci-robot
Copy link
Contributor

@ivankatliarchuk: Reopened this PR.

In response to this:

/reopen

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Make DNSEndpoint CRD GA
4 participants