You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#### Option 1. Opt-in NLB provisioning with Security Groups for Default Ingress with NO SG control by CCM
80
80
81
-
Users will be able to deploy OpenShift on AWS with the default Ingress using Network Load Balancers with Security Groups when enabled (opt-in) in the install-config.yaml. Installation agent (openshift-install, hypershift) manages the Security Group creation.
81
+
Users will be able to deploy OpenShift on AWS with the default Ingress using Network Load Balancers with Security Groups when enabled (opt-in) in the `install-config.yaml`. The installation agent (`openshift-install`, `hypershift`) manages the Security Group creation.
82
82
83
-
Hightlights:
84
-
- Focus on short-term resolving security issues when not using SG on NLB
85
-
- Focus on customer scalation of enabling SG on NLB
86
-
-Minimum changes on CCM
83
+
Highlights:
84
+
- Focus on short-term resolution of security issues when not using SG on NLB.
85
+
- Focus on customer scalability when enabling SG on NLB.
86
+
-Minimal changes to CCM.
87
87
88
88
T-Shirt Sizing/complexity by component:
89
-
| Component | T-Shirt Sz| Complexity | Note |
89
+
| Component | T-Shirt Size| Complexity | Note |
90
90
| -- | -- | -- | -- |
91
-
| CCM | S | S | No API changes, No SG management, Opt-in |
92
-
| CIO | S | S | API adding SG ID/Name to service Annotation |
93
-
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK) |
| ROSA HCP | M? | M? | TBD:API enabling feature(?); SG mgr; create CIO manifests to enable SG |
96
-
| Day-2 | S | M | BYO SG (can managed svc automate through cli?), patch CIO to recreate NLB; |
97
-
91
+
| CCM | S | S | No API changes, No SG management, Opt-in. |
92
+
| CIO | S | S | API adds SG ID/Name to service annotation. |
93
+
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK). |
94
+
| ROSA CL | M? | M? | TBD: API enabling feature(?); creates Ingress SG; updates `install-config`. |
95
+
| ROSA HCP | M? | M? | TBD: API enabling feature(?); SG mgt; creates CIO manifests to enable SG. |
96
+
| Day-2 | S | M | BYO SG (can managed services automate through CLI?), patch CIO to recreate NLB. |
98
97
99
98
Risk:
100
-
- Upstream CCM changes can take longer than expected (Small change can carry dowstream)
101
-
- Default Ingress changes the port from 80 and 443(happen??) requires manual SG's rules updates
99
+
- Upstream CCM changes can take longer than expected (small changes may propagate downstream).
100
+
- Default Ingress changes to ports 80 and 443 (if they occur) require manual SG rule updates.
102
101
103
102
Day-2 update:
104
-
- Self-manage: require user to create SG and patch CIO
105
-
-Manage: require to create SG and patch CIO (can be automated by CLI)
106
-
- Updates trigger service recreating NLB
103
+
- Self-managed: Requires the user to create SG and patch CIO.
104
+
-Managed: Requires creating SG and patching CIO (can be automated via CLI).
105
+
- Updates trigger service recreation of NLB.
107
106
108
107
**Phase 1: Create support on Self-Managed**
109
108
110
109
Goals:
111
-
- Installer manifest stage: when SG is enabled, set the security group names to the CIO manifest
112
-
- Installer infra stage: when SG is enabled, create security group and rules for ingress (InfraReady hook)
110
+
- Installer manifest stage: When SG is enabled, set the security group names in the CIO manifest.
111
+
- Installer infra stage: When SG is enabled, create the security group and rules for ingress (InfraReady hook).
113
112
- Cluster-Ingress-Operator:
114
-
- API to receipt the Security Group in the NLB parameters
115
-
- Service Controller create the annotation `service.beta.kubernetes.io/aws-load-balancer-security-groups` with custom Security Group
116
-
- Enable support of BYO (unmanaged) Security Groups for AWS Cloud Controller Manager (CCM/cloud-provider-aws)
117
-
113
+
- API to receive the Security Group in the NLB parameters.
114
+
- Service Controller creates the annotation `service.beta.kubernetes.io/aws-load-balancer-security-groups` with the custom Security Group.
115
+
- Enable support for BYO (unmanaged) Security Groups for AWS Cloud Controller Manager (CCM/cloud-provider-aws).
118
116
119
117
**Phase 2: Create support on ROSA Classic**
120
118
121
119
Goals:
122
-
- TBD how ROSA can enable the option on install-config: `platform.aws.ingressController.SecurityGroupEnabled`
120
+
- TBD: How ROSA can enable the option in `install-config`: `platform.aws.ingressController.SecurityGroupEnabled`.
123
121
124
122
**Phase 3: Create support on ROSA HCP**
125
123
126
124
Goals:
127
-
- TBD hypershift creating ingress Security Group for the ingress (after VPC creation)
128
-
- TBD hypershift setting the Security Group in CIO manifests
125
+
- TBD: Hypershift creates the ingress Security Group for the ingress (after VPC creation).
126
+
- TBD: Hypershift sets the Security Group in CIO manifests.
129
127
128
+
---
130
129
131
130
#### Option 2. Opt-in NLB provisioning with Security Groups for Default Ingress with FULL SG control by CCM
132
131
133
-
Users will be able to deploy OpenShift on AWS with the default Ingress using Network Load Balancers with Security Groups when enabled (opt-in) in the install-config.yaml. CCM-AWS full manages the SG lifecycle (similar CLB, but as opt-in through annotation).
134
-
135
-
Hightlights:
136
-
- Focus on short-term resolving security issues when not using SG on NLB
137
-
- Focus on customer scalation of enabling SG on NLB
138
-
- Medium changes on CCM
132
+
Users will be able to deploy OpenShift on AWS with the default Ingress using Network Load Balancers with Security Groups when enabled (opt-in) in the `install-config.yaml`. CCM-AWS fully manages the SG lifecycle (similar to CLB, but as opt-in through annotation).
139
133
134
+
Highlights:
135
+
- Focus on short-term resolution of security issues when not using SG on NLB.
136
+
- Focus on customer scalability when enabling SG on NLB.
137
+
- Moderate changes to CCM.
140
138
141
139
T-Shirt Sizing/complexity by component:
142
-
143
-
| Component | T-Shirt Sz | Complexity | Note |
140
+
| Component | T-Shirt Size | Complexity | Note |
144
141
| -- | -- | -- | -- |
145
-
| CCM | M | M | API introducing annotation to "create SG on NLB"(default for CLB) |
146
-
| CIO | S | S | API adding SG ID/Name to service Annotation |
147
-
| Installer | S | S | no SG mgr; API enabling feature; |
148
-
| ROSA CL | S? | S? | no SG mgr; update install-config |
149
-
| ROSA HCP | S? | S? | no SG mgr; create CIO manifests to "enable NLB with SG" |
150
-
| Day-2 | S | S | patch CIO to recreate NLB |
151
-
142
+
| CCM | M | M | API introduces annotation to "create SG on NLB" (default for CLB). |
143
+
| CIO | S | S | API adds SG ID/Name to service annotation. |
144
+
| Installer | S | S | No SG mgt; API enabling feature. |
145
+
| ROSA CL | S? | S? | No SG mgt; updates `install-config`. |
146
+
| ROSA HCP | S? | S? | No SG mgt; creates CIO manifests to "enable NLB with SG". |
147
+
| Day-2 | S | S | Patch CIO to recreate NLB. |
152
148
153
149
Risk:
154
150
- CCM/upstream:
155
151
- SG management increases controller complexity and scenarios to validate.
156
-
- API changes
157
-
- More changes in upstream increases the consensus/approvals, specially new features in service LB on CCM (prefer ALBC)
158
-
- More cchanges in CCM making it creates and manage SG lifecycle
152
+
- API changes.
153
+
- More changes upstream increase the consensus/approvals required, especially for new features in service LB on CCM (prefer ALBC).
154
+
- More changes in CCM to create and manage the SG lifecycle.
159
155
- CCM/downstream:
160
-
-more complex to carry when not in upstream
156
+
-More complex to maintain when not upstreamed.
161
157
162
158
Day-2 update:
163
-
- Self-managed: patch CIO
164
-
- Managed Services: patch CIO
165
-
- Updates trigger service recreating NLB
159
+
- Self-managed: Patch CIO.
160
+
- Managed Services: Patch CIO.
161
+
- Updates trigger service recreation of NLB.
166
162
163
+
---
167
164
168
165
#### Option 3. NLB feature parity on CCM with ALBC
169
166
170
167
T-Shirt Sizing/complexity by component:
171
-
172
-
| Component | T-Shirt Sz | Complexity | Note |
168
+
| Component | T-Shirt Size | Complexity | Note |
173
169
| -- | -- | -- | -- |
174
-
| CCM | XXL | XXL | NLB Feature parity plan with ALBC. Long-term commitment and support by RH |
175
-
| CIO | S | S | API adding SG ID/Name to service Annotation|
176
-
| Installer | S | S |no SG mgr; API enabling feature;|
| ROSA HCP | S? | S? |No SG mgt; creates CIO manifests to "enable NLB with SG".|
175
+
| Day-2 | S | S |Patch CIO to recreate NLB.|
180
176
177
+
---
181
178
182
179
#### Option 4. CIO switches to ALBC
183
180
184
181
T-Shirt Sizing/complexity by component:
185
-
186
-
| Component | T-Shirt Sz | Complexity | Note |
182
+
| Component | T-Shirt Size | Complexity | Note |
187
183
| -- | -- | -- | -- |
188
-
| CCM | - | - | CCM will not be used by default router |
189
-
| CIO | XXL | XL | API: (short-term) opt-in NLB provisioning with SG using ALBC; long-term: all new provisioning with ALBC; move imgs to payload; manage oper lifecycle(perms, etc)|
190
-
| Installer | S | S |no SG mgr; API enabling feature;|
| ROSA HCP | S? | S? |No SG mgt; creates CIO manifests to "enable NLB with SG".|
189
+
| Day-2 | S | S |Patch CIO to recreate NLB.|
194
190
191
+
---
195
192
196
193
#### Option 1+4. Short-term security fixes with long-term Ingress improvements
197
194
198
-
> Note: can be 2+4 too, but will impact in the resource investiments in feature parity with CCM.
195
+
> Note: Can be 2+4 too, but this will impact resource investments in feature parity with CCM.
199
196
200
-
In short-term support NLB provisioning with Security Group as opt-in by CCM, resolving security issues,
201
-
and get long-term modernization by inheriting features added in upstream project ALBC which is actively maitained by AWS.
202
-
203
-
Hightlights:
204
-
- Resolves on short-term resolving security issues when not using SG on NLB
205
-
- Resolves customer scalation of enabling SG on NLB
206
-
- Medium changes on CCM
207
-
- Provide long-term plan to modernize Load Balancer features by inheriting updates from controller on upstream project maitained by Community (and AWS)
197
+
In the short term, support NLB provisioning with Security Groups as opt-in by CCM, resolving security issues, and achieve long-term modernization by inheriting features added in the upstream ALBC project, which is actively maintained by AWS.
208
198
199
+
Highlights:
200
+
- Resolves short-term security issues when not using SG on NLB.
201
+
- Improves customer scalability when enabling SG on NLB.
202
+
- Moderate changes to CCM.
203
+
- Provides a long-term plan to modernize Load Balancer features by inheriting updates from the controller in the upstream project maintained by the community (and AWS).
209
204
210
205
T-Shirt Sizing/complexity by component:
211
-
212
-
| Component | T-Shirt Sz | Complexity | Note |
206
+
| Component | T-Shirt Size | Complexity | Note |
213
207
| -- | -- | -- | -- |
214
-
| CCM | S | S | No API changes, No SG management, Opt-in |
215
-
| CIO | XXL | XL | API: (short-term): opt-in NLB provisioning with SG using ALBC; (long-term): all new provisioning with ALBC; move imgs to payload; manage oper lifecycle(perms, etc) |
216
-
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK) |
217
-
| ROSA CL | M? | M? | TBD:(short): API enabling feature(?); creates Ingress SG; update install-config; (long):fix many issues |
218
-
| ROSA HCP | M? | M? | TBD: (short): API enabling feature(?); SG mgr; create CIO manifests to enable SG; (long):fix many issues ||
219
-
| Day-2 | S | M | (short): BYO SG (can managed automate through cli?), (short&long): patch CIO to recreate NLB; |
220
-
221
-
222
-
223
-
<!--
224
-
===> DRAFT/old notes:
225
-
226
-
#### Option 1. CCM configures the SG when deploying NLB. (Minimum support)
227
-
228
-
CCM enable SG when provisioning NLB only when the annotation XXX with SG ID is added.
229
-
230
-
Pros:
231
-
- Minor changes in CCM (upstream): BYO SG approach (similar [LBC annotation `alb.ingress.kubernetes.io/security-groups`](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/#security-groups))
232
-
- SG is not created by CCM, and CCM is not adding rules (preserving LBC behavior for annotations security-groups and manage-backend-security-group-rules)
233
-
- Does not required API updates for CCM (right, @joel?)
234
-
- We can stick only the default ingress/router using that approach, requiring any new ingress to use LBC-ish (already supported)
235
-
236
-
Cons:
237
-
- Installer (or CIO) needs to create the SG, passing to the CCM with required rules
238
-
- BYO SG approach for CCM would require CIO managing SG rules when provisioning new ingress
239
-
- or at least validate if exists
240
-
- or not support this feature for other services than the default router, leading user to use ALBO/LBC
241
-
242
-
243
-
PROBLEM:
244
-
- installer can't create SG in the manifest phase, so it wont have IDs, only names (candidate)
245
-
246
-
#### Option 2. CCM manages the SG when deploying NLB. (may require API changes and more complexity)
247
-
248
-
Pros:
249
-
- Installer (or CIO) does not required to manage the SG
250
-
- Increase UX as users don't need to handle with SG in Day-2 when creating new ingress
251
-
252
-
Cons:
253
-
254
-
- Requires more complexity to manage SG when NLB on CCM (upstream). SG management logic already exists in the CLB controller
255
-
- May require API add/change to determine when SG will be enabled for NLB. Example of LBC annotation manage-backend-security-group-rules
256
-
257
-
258
-
#### Option 3. Use AWS LBC to deploy Ingress NLB. (more complex downstream, no changes upstream)
259
-
260
-
Changes:
261
-
- Requires installing ALBO from OLM during installation.
262
-
263
-
Pros:
264
-
- Unlocks new NLB features added to LBC for OpenShift ingress.
265
-
266
-
Cons:
267
-
- Defaulting to LBC may introduce unknown issues.
268
-
- Be careful.
269
-
- Create a clear migration path.
270
-
271
-
Open questions:
272
-
273
-
- Is there an advantage to using LBC as the default service type LB controller (disabling CCM service-LB capabilities)?
274
-
- LBC does not support CLBs.
275
-
- Pros: Improves UX as default service LBs will use the latest controller features for LB.
276
-
- Cons: Breaking change for apps using default service config (with CLB).
277
-
- AWS has advised against using CLBs for years. This will prepare OCP to follow cloud-provider best practices. It's important to have a clear deprecation path.
278
-
279
-
#### Option 1+3. Focus on "enabling" SG on NLB using BYO SG on CCM, and plan the migration to LBC
280
-
281
-
Laser focus on short-term customer issues and unlock OpenShift's long-term ingress features with NLB.
282
-
283
-
Pros:
284
-
- Delivers customer requirements ASAP.
285
-
- Reduces changes in upstream CCM.
286
-
- Enables OpenShift to consume features available on LBC.
287
-
- Prevents duplicate maintenance of CCM/LBC codebases.
288
-
289
-
Cons:
290
-
- ?
291
-
292
-
Phases for #1+3:
293
-
294
-
- Phase 1 (TP SGs for NLB using CCM BYO SG):
295
-
- Patch CCM with required changes for BYO SG when using NLB.
296
-
- Create APIs for BYO SG on CIO (NLB only).
297
-
- Installer:
298
-
- Add a configuration option in `install-config` to "use SG" when `lbType == NLB`.
299
-
- Provision SG with expected rules (also adding those to nodes' SG).
300
-
301
-
- Phase 2 (GA SGs for NLB, Dev Preview LBC through CIO):
302
-
- Enable CIO provisioning using LBC/ALBO when using NLB.
303
-
- CIO API to enable LBC service provisioning (e.g., manage-backend-security-group-rules).
304
-
- Retain API added in Phase 1 for future BYO SG use (user-facing, exposed in `install-config`).
305
-
- Installer:
306
-
- Add a configuration option in `install-config` to opt-in ingress provisioning with LBC. (or make the flag "Use SG when NLB" to trigger the LBC)
307
-
- When enabled, do not provision SGs by installer (delegate to CIO->LBC).
308
-
- Add a validation webhook to inform users about Classic Load Balancer (CLB) desconuation(recommendation to use NLB) when creating type LB services (non-NLB).
309
-
- Alternatively, provide an informational message advising users to use ingress provisioned with CIO, which uses NLBs, to follow best practices and prevent future deprecations.
310
-
- Existing NLBs managed by CCM:
311
-
- How to make controllers aware of this? Can we live with two controllers, making the controllers to know that the NLB has been provisioned by each one.
312
-
313
-
- Phase 3 (TP LBC on CIO, Dev Preview NLB by default CIO):):
314
-
- Installer:
315
-
- Default to provisioning CIO services with LBC (defaults to lbType==NLB <- dev preview this?).
316
-
- Customers can use CLB as opt-in
317
-
318
-
- Phase 4 (GA LBC on CIO, TP NLB by default CIO):
319
-
- Installer:
320
-
- Default to provisioning CIO services with LBC (defaults to lbType==NLB <- TP this?).
321
-
322
-
- Phase 5: (GA )
323
-
- Make AWS LBC the default controller for service type LoadBalancer.
324
-
- Classic Load Balancer is no longer available for CIO (only when customers wants to create service-LB directly)
325
-
-->
208
+
| CCM | S | S | No API changes, No SG management, Opt-in. |
209
+
| CIO | XXL | XL | API: (short-term) opt-in NLB provisioning with SG using ALBC; (long-term) all new provisioning with ALBC; move images to payload; manage operator lifecycle (permissions, etc.). |
210
+
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK). |
211
+
| ROSA CL | M? | M? | TBD: (short-term) API enabling feature(?); creates Ingress SG; updates `install-config`; (long-term) fixes many issues. |
212
+
| ROSA HCP | M? | M? | TBD: (short-term) API enabling feature(?); SG mgt; creates CIO manifests to enable SG; (long-term) fixes many issues. |
213
+
| Day-2 | S | M | (short-term) BYO SG (can managed services automate through CLI?), (short-term & long-term) patch CIO to recreate NLB. |
0 commit comments