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

NE-705: IngressController subnet selection in AWS #1595

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

gcs278
Copy link
Contributor

@gcs278 gcs278 commented Mar 13, 2024

Adds lb-subnet-selection-aws.md enhancement for specifying IngressController's load balancer type service subnets. This enhancement introduces spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.subnets which allows cluster admins to specify the subnets for the load balancer.

Epic: https://issues.redhat.com/browse/NE-705
RFE: https://issues.redhat.com/browse/RFE-1717

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 13, 2024
@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 13, 2024

@gcs278: This pull request references NE-705 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the epic to target either version "4.16." or "openshift-4.16.", but it targets "openshift-4.13" instead.

In response to this:

Adds lb-subnet-selection-aws.md enhancement for specifying IngressController's load balancer type service subnets.

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 openshift-eng/jira-lifecycle-plugin repository.

@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 Mar 13, 2024
Copy link
Contributor

openshift-ci bot commented Mar 13, 2024

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

@gcs278 gcs278 force-pushed the ingresscontroller-subnets-aws branch from 8a2586a to 8bc4b3d Compare March 27, 2024 22:41
@gcs278 gcs278 force-pushed the ingresscontroller-subnets-aws branch 2 times, most recently from 8dbb992 to 1a5f6b7 Compare March 29, 2024 20:06
@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 29, 2024

@gcs278: This pull request references NE-705 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the epic to target either version "4.16." or "openshift-4.16.", but it targets "openshift-4.13" instead.

In response to this:

Adds lb-subnet-selection-aws.md enhancement for specifying IngressController's load balancer type service subnets.

Epic: https://issues.redhat.com/browse/NE-705
RFE: https://issues.redhat.com/browse/RFE-1717

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 openshift-eng/jira-lifecycle-plugin repository.

@gcs278 gcs278 marked this pull request as ready for review March 29, 2024 20:06
@openshift-ci openshift-ci bot requested review from frobware and Miciah March 29, 2024 20:07
@gcs278 gcs278 changed the title [WIP] NE-705: IngressController subnet selection in AWS NE-705: IngressController subnet selection in AWS Mar 29, 2024
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 29, 2024
@gcs278
Copy link
Contributor Author

gcs278 commented Mar 29, 2024

Ready for initial review, but will keep hold on until I feel it has consensus.

Currently missing install-time design, but I have stubbed out the sections that need updating for that.

/hold

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 29, 2024
@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 29, 2024

@gcs278: This pull request references NE-705 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the epic to target either version "4.16." or "openshift-4.16.", but it targets "openshift-4.13" instead.

In response to this:

Adds lb-subnet-selection-aws.md enhancement for specifying IngressController's load balancer type service subnets. This enhancement introduces spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.subnets which allows cluster admins to specify the subnets for the load balancer.

Epic: https://issues.redhat.com/browse/NE-705
RFE: https://issues.redhat.com/browse/RFE-1717

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 openshift-eng/jira-lifecycle-plugin repository.

@gcs278
Copy link
Contributor Author

gcs278 commented Apr 2, 2024

Updating the Enhancement for the API to be immutable. Temporarily WIP
/wip

@gcs278 gcs278 force-pushed the ingresscontroller-subnets-aws branch from 565156e to 51a7c4d Compare April 3, 2024 03:00
@gcs278
Copy link
Contributor Author

gcs278 commented Apr 3, 2024

/wip cancel

@Miciah
Copy link
Contributor

Miciah commented Apr 3, 2024

/assign

Comment on lines 50 to 51
allow deploy-time subnet configuration and is unsupported because the
service is managed by Ingress Operator.
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: this doesn't really explain why it is unsupported. Does this mean that Ingress Operator will revert the changes, or something else?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Does this mean that Ingress Operator will revert the changes, or something else?

No it won't revert, but that's an unfortunate oversight. The Ingress Operator should have been designed to revert unmanaged annotations (that would have made our lives easier). Users are not supposed to modify the objects created and managed by the Ingress Operator.

So it's an awkward situation. But just because a cluster admin can do something, doesn't mean that it's supported. But just because something is unsupported, doesn't mean a cluster admin is doing it.

I updated to be a little more specific about that it's 1. untested and 2. could interfere with the operations of the Ingress Operator.

to the initial value of `spec.endpointPublishingStrategy.loadBalancer.scope` so that it could
detect when the spec for `Scope` changed. Therefore, `status.endpointPublishingStrategy.loadBalancer.scope`
may not always reflect the actual scope of the load balancer. This proposal for `Subnets`
perpetuates the pattern of ensuring that `status.endpointPublishingStrategy` reflects the
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it perpetuating the pattern of the previous sentence? You lost me.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This proposal for Subnets perpetuates the pattern of ensuring that status.endpointPublishingStrategy reflects the actual value (in our case, the annotation value).

It perpetuates the pattern of ensuring that status.endpointPublishingStrategy reflects the _actual_ value (in our case, the annotation value).

Does that make sense? I'm not sure how else to word it.

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 give the pattern a good short name, like "triggered consistency", or something like that.

Copy link
Contributor Author

@gcs278 gcs278 May 6, 2024

Choose a reason for hiding this comment

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

This pattern I'm describing here doesn't really involve "triggered consistency".

This pattern is that: status == the effectuated value (i.e. the service.beta.kubernetes.io/aws-load-balancer-subnets annotation on the service in our case).

This is a generic concept of how to keep our IngressController's status consistent, regardless if the effectuated value is triggered or delayed by having the cluster admin do something.

I think we have to spell this concept verbosely out here.

@gcs278 gcs278 force-pushed the ingresscontroller-subnets-aws branch from a6cb330 to 03777c6 Compare May 2, 2024 22:08
Copy link
Contributor Author

@gcs278 gcs278 left a comment

Choose a reason for hiding this comment

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

Comment on lines 50 to 51
allow deploy-time subnet configuration and is unsupported because the
service is managed by Ingress Operator.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Does this mean that Ingress Operator will revert the changes, or something else?

No it won't revert, but that's an unfortunate oversight. The Ingress Operator should have been designed to revert unmanaged annotations (that would have made our lives easier). Users are not supposed to modify the objects created and managed by the Ingress Operator.

So it's an awkward situation. But just because a cluster admin can do something, doesn't mean that it's supported. But just because something is unsupported, doesn't mean a cluster admin is doing it.

I updated to be a little more specific about that it's 1. untested and 2. could interfere with the operations of the Ingress Operator.

enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
@gcs278 gcs278 force-pushed the ingresscontroller-subnets-aws branch 2 times, most recently from 57580b0 to b7dbe80 Compare May 3, 2024 18:11
@gcs278
Copy link
Contributor Author

gcs278 commented May 3, 2024

@candita updated the EP reflect that we will do the install-time API as another EP as suggested by Miciah. PTAL when you get a chance. Thanks.

@candita
Copy link
Contributor

candita commented May 3, 2024

Just a few remaining nits. Otherwise:
/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label May 3, 2024
Adds lb-subnet-selection-aws.md enhancement for specifying
IngressController's load balancer type service subnets.
@gcs278 gcs278 force-pushed the ingresscontroller-subnets-aws branch from b7dbe80 to f6ada5a Compare May 6, 2024 17:47
Copy link
Contributor

openshift-ci bot commented May 6, 2024

New changes are detected. LGTM label has been removed.

@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label May 6, 2024
Copy link
Contributor Author

@gcs278 gcs278 left a comment

Choose a reason for hiding this comment

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

Thanks for the LGTM @candita. Addressed your latest comments.

Could I get another look and re-LGTM if good?

enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
enhancements/ingress/lb-subnet-selection-aws.md Outdated Show resolved Hide resolved
to the initial value of `spec.endpointPublishingStrategy.loadBalancer.scope` so that it could
detect when the spec for `Scope` changed. Therefore, `status.endpointPublishingStrategy.loadBalancer.scope`
may not always reflect the actual scope of the load balancer. This proposal for `Subnets`
perpetuates the pattern of ensuring that `status.endpointPublishingStrategy` reflects the
Copy link
Contributor Author

@gcs278 gcs278 May 6, 2024

Choose a reason for hiding this comment

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

This pattern I'm describing here doesn't really involve "triggered consistency".

This pattern is that: status == the effectuated value (i.e. the service.beta.kubernetes.io/aws-load-balancer-subnets annotation on the service in our case).

This is a generic concept of how to keep our IngressController's status consistent, regardless if the effectuated value is triggered or delayed by having the cluster admin do something.

I think we have to spell this concept verbosely out here.

Copy link
Contributor

openshift-ci bot commented May 6, 2024

@gcs278: all tests passed!

Full PR test history. Your PR dashboard.

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/test-infra repository. I understand the commands that are listed here.

@gcs278
Copy link
Contributor Author

gcs278 commented May 6, 2024

Removing hold because we've decided to address install time (day 1) design in a separate EP.
/hold cancel

@openshift-ci openshift-ci bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label May 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants