Skip to content
This repository has been archived by the owner on Feb 27, 2023. It is now read-only.

Add v1alpha2 API #386

Open
danehans opened this issue Jun 15, 2021 · 11 comments
Open

Add v1alpha2 API #386

danehans opened this issue Jun 15, 2021 · 11 comments
Labels
kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. release-note Denotes a PR that will be considered when it comes time to generate release notes.

Comments

@danehans
Copy link
Contributor

danehans commented Jun 15, 2021

Please describe the problem you have
#382 is an important breaking API change. Other potential breaking API changes may be needed due to Contour natively supporting Gateway API.

Possible API changes:

  • The operator will no longer need to manage the Envoy infra when Contour adds this support. How does this affect the operator API? For example, should GatewayClassRef still exist, or does it need to change?
  • Will Contour fully support EnvoyNetworkPublishing? Do any deviations exist?
  • Will the removal of gatewayclass/gateway controllers introduce API changes?
@danehans danehans added the kind/feature Categorizes issue or PR as related to a new feature. label Jun 15, 2021
@danehans danehans added kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API release-note Denotes a PR that will be considered when it comes time to generate release notes. labels Jun 15, 2021
@danehans
Copy link
Contributor Author

v1alpha2 should be based on main after a release is cut, i.e. v1.17.0. Copy v1alpha1 to v1alpha2, preface deprecated fields with deprecated, make API changes, add any new fields, generate CRDs, update imports/examples to use new API version, etc..

@danehans
Copy link
Contributor Author

Will Contour fully support EnvoyNetworkPublishing? Do any deviations exist?

Since the GatewayClass is being managed similarly to IngressClass, I suggest the API change look something like:

// ContourSpec defines the desired state of Contour.
type ContourSpec struct {
...
	// GatewayClassController is the controller string used by Contour to manage gatewayclasses.
	// If unset, defaults to "projectcontour.io/contour"
	//
	// For additional GatewayClass details, refer to:
	//   https://gateway-api.sigs.k8s.io/api-types/gatewayclass/
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:default={"projectcontour.io/contour"}
	// +optional
	GatewayClassController *string `json:"gatewayClassController,omitempty"`
}

@danehans
Copy link
Contributor Author

#382 details namespace-related API changes. Note: the PR implements the changes to v1alpha1 and should be updated to use v1alpha2 after this issue is resolved.

@danehans
Copy link
Contributor Author

xref: #322

@danehans
Copy link
Contributor Author

danehans commented Jun 17, 2021

cc: @nak3 @amdonov @BostjanBozic to make you aware of the plans for an API bump. Feel free to chime in with any feedback for API improvements.

@BostjanBozic
Copy link
Contributor

From my side maybe just a remark that maybe we can get rid of NetworkPublishing level and go straight to Envoy, as there are no other options configurations there anyway. Unless there is something planned for the future?

On side note, should we maybe take this opportunity to upgrade project to Kubebuilder scheme v3 (migration)?

@danehans
Copy link
Contributor Author

Reopen #386 after this PR is resolved.

@danehans
Copy link
Contributor Author

From my side maybe just a remark that maybe we can get rid of NetworkPublishing level and go straight to Envoy, as there are no other options configurations there anyway. Unless there is something planned for the future?

@BostjanBozic thanks for the input. The NetworkPublishing API was designed to support the ability to manage Contour network endpoints. This may change due to projectcontour/contour#3545.

On side note, should we maybe take this opportunity to upgrade project to Kubebuilder scheme v3 (migration)?

I agree that the we should consider migrating to kubebuilder v3, but I see that as a separate independent issue.

@danehans
Copy link
Contributor Author

On side note, should we maybe take this opportunity to upgrade project to Kubebuilder scheme v3 (migration)?

xref: #386

@youngnick youngnick modified the milestones: 1.17.0, 1.18.0 Jul 1, 2021
@youngnick
Copy link
Member

This can't be done until we push out 1.17, so this is deliverable in the 1.18 timeframe.

@youngnick youngnick modified the milestones: 1.18.0, 1.19.0 Jul 20, 2021
@sunjayBhatia
Copy link
Member

this is important to do for 1.19: #386 (comment)

will also allow us to be smarter about how we handle multiple contours with gateway api

@youngnick youngnick added this to the 1.20.0 milestone Sep 22, 2021
@sunjayBhatia sunjayBhatia modified the milestones: 1.20.0, 1.21.0 Jan 25, 2022
@skriss skriss removed this from the 1.21.0 milestone May 9, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
kind/api-change Categorizes issue or PR as related to adding, removing, or otherwise changing an API kind/feature Categorizes issue or PR as related to a new feature. release-note Denotes a PR that will be considered when it comes time to generate release notes.
Projects
None yet
Development

No branches or pull requests

5 participants