Skip to content

Commit 14b3cc1

Browse files
committed
review goals with summary table and wflow
1 parent 9160f0e commit 14b3cc1

File tree

1 file changed

+106
-50
lines changed

1 file changed

+106
-50
lines changed

enhancements/installer/aws-ingress-nlb-security-group.md

Lines changed: 106 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ title: support-security-group-default-router
33
authors:
44
- TBD
55
reviewers: # Include a comment about what domain expertise a reviewer is expected to bring and what area of the enhancement you expect them to focus on. For example: - "@networkguru, for networking aspects, please look at IP bootstrapping aspect"
6-
- @rvanderpool
6+
- @rvanderp3
77
approvers: # A single approver is preferred, the role of the approver is to raise important questions, help ensure the enhancement receives reviews from all applicable areas/SMEs, and determine when consensus is achieved such that the EP can move forward to implementation. Having multiple approvers makes it difficult to determine who is responsible for the actual approval.
88
- @patrick # Installer changes
99
- @joelspeed # API and CCM changes
1010
- @miciah # CIO changes
11+
- # ROSA Classic
12+
- # ROSA HCP
1113

1214
api-approvers: # In case of new or modified APIs or API extensions (CRDs, aggregated apiservers, webhooks, finalizers). If there is no API change, use "None"
1315
- TBD
@@ -86,14 +88,14 @@ Highlights:
8688
- Minimal changes to CCM.
8789

8890
T-Shirt Sizing/complexity by component:
89-
| Component | T-Shirt Size | Complexity | Note |
90-
| -- | -- | -- | -- |
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. |
91+
| Component | T-Shirt Size | Complexity | Note |
92+
|-----------|--------------|------------|---------------------------------------------------------------------------------|
93+
| CCM | S | S | No API changes, No SG management, Opt-in. |
94+
| CIO | S | S | API adds SG ID/Name to service annotation. |
95+
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK). |
96+
| ROSA CL | M? | M? | TBD: API enabling feature(?); creates Ingress SG; updates `install-config`. |
97+
| ROSA HCP | M? | M? | TBD: API enabling feature(?); SG management; creates CIO manifests to enable SG.|
98+
| Day-2 | S | M | BYO SG (can managed services automate through CLI?), patch CIO to recreate NLB. |
9799

98100
Risk:
99101
- Upstream CCM changes can take longer than expected (small changes may propagate downstream).
@@ -139,14 +141,14 @@ Highlights:
139141
- Moderate changes to CCM.
140142

141143
T-Shirt Sizing/complexity by component:
142-
| Component | T-Shirt Size | Complexity | Note |
143-
| -- | -- | -- | -- |
144-
| CCM | M | M | API introduces annotation to "create SG on NLB" (default for CLB). |
145-
| CIO | S | S | API adds SG ID/Name to service annotation. |
146-
| Installer | S | S | No SG mgt; API enabling feature. |
147-
| ROSA CL | S? | S? | No SG mgt; updates `install-config`. |
148-
| ROSA HCP | S? | S? | No SG mgt; creates CIO manifests to "enable NLB with SG". |
149-
| Day-2 | S | S | Patch CIO to recreate NLB. |
144+
| Component | T-Shirt Size | Complexity | Note |
145+
|-----------|--------------|------------|--------------------------------------------------------------------|
146+
| CCM | M | M | API introduces annotation to "create SG on NLB" (default for CLB). |
147+
| CIO | S | S | API adds SG ID/Name to service annotation. |
148+
| Installer | S | S | No SG management; API enabling feature. |
149+
| ROSA CL | S? | S? | No SG management; updates `install-config`. |
150+
| ROSA HCP | S? | S? | No SG management; creates CIO manifests to "enable NLB with SG". |
151+
| Day-2 | S | S | Patch CIO to recreate NLB. |
150152

151153
Risk:
152154
- CCM/upstream:
@@ -170,14 +172,14 @@ e2e PoC: N/A
170172
#### Option 3. NLB feature parity on CCM with ALBC
171173

172174
T-Shirt Sizing/complexity by component:
173-
| Component | T-Shirt Size | Complexity | Note |
174-
| -- | -- | -- | -- |
175-
| CCM | XXL | XXL | NLB feature parity plan with ALBC. Long-term commitment and support by RH. |
176-
| CIO | S | S | API adds SG ID/Name to service annotation. |
177-
| Installer | S | S | No SG mgt; API enabling feature. |
178-
| ROSA CL | S? | S? | No SG mgt; updates `install-config`. |
179-
| ROSA HCP | S? | S? | No SG mgt; creates CIO manifests to "enable NLB with SG". |
180-
| Day-2 | S | S | Patch CIO to recreate NLB. |
175+
| Component | T-Shirt Size | Complexity | Note |
176+
|-----------|--------------|------------|---------------------------------------------------------------------------|
177+
| CCM | XXL | XXL | NLB feature parity plan with ALBC. Long-term commitment and support by RH.|
178+
| CIO | S | S | API adds SG ID/Name to service annotation. |
179+
| Installer | S | S | No SG management; API enabling feature. |
180+
| ROSA CL | S? | S? | No SG management; updates `install-config`. |
181+
| ROSA HCP | S? | S? | No SG management; creates CIO manifests to "enable NLB with SG". |
182+
| Day-2 | S | S | Patch CIO to recreate NLB. |
181183

182184

183185
e2e PoC: N/A
@@ -187,14 +189,14 @@ e2e PoC: N/A
187189
#### Option 4. CIO switches to ALBC
188190

189191
T-Shirt Sizing/complexity by component:
190-
| Component | T-Shirt Size | Complexity | Note |
191-
| -- | -- | -- | -- |
192-
| CCM | - | - | CCM will not be used by the default router. |
193-
| 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.). |
194-
| Installer | S | S | No SG mgt; API enabling feature. |
195-
| ROSA CL | S? | S? | No SG mgt; updates `install-config`. |
196-
| ROSA HCP | S? | S? | No SG mgt; creates CIO manifests to "enable NLB with SG". |
197-
| Day-2 | S | S | Patch CIO to recreate NLB. |
192+
| Component | T-Shirt Size | Complexity | Note |
193+
|-----------|--------------|------------|-----------------------------------------------------------------|
194+
| CCM | - | - | CCM will not be used by the default router. |
195+
| 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.). |
196+
| Installer | S | S | No SG management; API enabling feature. |
197+
| ROSA CL | S? | S? | No SG management; updates `install-config`. |
198+
| ROSA HCP | S? | S? | No SG management; creates CIO manifests to "enable NLB with SG".|
199+
| Day-2 | S | S | Patch CIO to recreate NLB. |
198200

199201

200202
e2e PoC: N/A
@@ -215,30 +217,55 @@ Highlights:
215217

216218
T-Shirt Sizing/complexity by component:
217219
| Component | T-Shirt Size | Complexity | Note |
218-
| -- | -- | -- | -- |
219-
| CCM | S | S | No API changes, No SG management, Opt-in. |
220-
| 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.). |
221-
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK). |
222-
| ROSA CL | M? | M? | TBD: (short-term) API enabling feature(?); creates Ingress SG; updates `install-config`; (long-term) fixes many issues. |
223-
| ROSA HCP | M? | M? | TBD: (short-term) API enabling feature(?); SG mgt; creates CIO manifests to enable SG; (long-term) fixes many issues. |
224-
| Day-2 | S | M | (short-term) BYO SG (can managed services automate through CLI?), (short-term & long-term) patch CIO to recreate NLB. |
220+
|-----------|--------------|------------|------|
221+
| CCM | S | S | No API changes, No SG management, Opt-in. |
222+
| 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.). |
223+
| Installer | S | S | API enabling feature; Creates Ingress SG (SDK). |
224+
| ROSA CL | M? | M? | TBD: (short-term) API enabling feature(?); creates Ingress SG; updates `install-config`; (long-term) fixes many issues. |
225+
| ROSA HCP | M? | M? | TBD: (short-term) API enabling feature(?); SG mgt; creates CIO manifests to enable SG; (long-term) fixes many issues. |
226+
| Day-2 | S | M | (short-term) BYO SG (can managed services automate through CLI?), (short-term & long-term) patch CIO to recreate NLB. |
225227

226228

227229
e2e PoC: N/A
228230

229231
---
230232

233+
#### Summary
234+
235+
236+
| Option | CCM | CIO | Installer | ROSA CL | ROSA HCP | Day-2 | Opt.ETA (SM) |
237+
|--------------|-------|-------|-----------|---------|----------|-------|--------------|
238+
| Option 1 | S | S | M | M? | M? | M | 4.20 |
239+
| Option 2 | M | S | S | S? | S? | S | 4.20 |
240+
| Option 3 | XXL | S | S | S? | S? | S | 4.21+ |
241+
| Option 4 | - | XXL | S | S? | S? | S | 4.21+ |
242+
| Option 1+4 | S | XXL | M | M? | M? | M | 4.20+ |
243+
| Option 2+4 | M | XXL | S | M? | M? | S | 4.20+ |
244+
| Option 1+3 | XXL | S | M | M? | M? | M | 4.20+ |
245+
| Option 2+3 | XXL | S | S | M? | M? | S | 4.20+ |
246+
247+
___
248+
___
249+
231250
### Non-Goals
232251

233252
> WIP
234253
235254
Short-term:
236255

237-
- Migrate to use ALBC as the default on CIO.
238-
- Use NLB as the default service type LoadBalancer.
239-
- Synchronize NLB features from LBC to CCM.
240-
- Change the current CCM flow when deploying NLB.
241-
- Change the current OpenShift e2e flow when deploying the default router using IPI.
256+
- Migrate to use ALBC as the default on CIO (option 3 and 4 could be written in a new EP?).
257+
- Use NLB as the default service type LoadBalancer by CCM.
258+
- Synchronize all NLB features from ALBC to CCM.
259+
- Change the existing CCM flow when deploying NLB .
260+
- Change the current OpenShift e2e flow when deploying the default router using IPI (do we need to plan for that?).
261+
262+
Long-term (new enhancement?):
263+
264+
Long-term:
265+
266+
- TBD which one would be better/sustainable by Red Hat?:
267+
- Use ALBC as default provisioner on CIO
268+
- Feature parity between CCM and ALBC
242269

243270
## Proposal
244271

@@ -251,20 +278,49 @@ Short-term:
251278
252279
#### Option 1. Workflow
253280

254-
- Create `install-config.yaml` enabling the use of Security Group **and** `lbType=NLB` (already exists).
255-
- The installer creates a security group to be used by the ingress controller during the InfraReady phase.
256-
- The installer generates the CIO manifests: enabling LB type NLB passing Security Group Names (IDs are not known yet during the manifest phase).
257-
- CIO creates the service for the default router, filling in the annotations for NLB and SG Names.
258-
- CCM checks annotations, maps Names to IDs, and provisions the Load Balancer NLB with the security group, updating SGs with the required rules for ingress (based on listeners) and egress (based on service and health check ports).
281+
> WIP
282+
283+
- Create `install-config.yaml` enabling:
284+
- `lbType=NLB` (already exists), and
285+
- use of Security Group(SG) (new API, suggested: `platform.aws.ingressController.SecurityGroupEnabled`).
286+
- The installer generates the cluster-ingress-operator(CIO) manifest for default ingress enabling LB type NLB, and passing Security Group **Name** (IDs are not known yet during the manifest phase).
287+
- The installer creates a security group to be used by the ingress controller during the `InfraReady` phase (post-CAPA).
288+
- CIO creates the service for the default router, filling in the annotations for NLB and SG **Name**.
289+
- CCM checks annotations, then when LB type NLB:
290+
- if annotation (existing for CLB) "" is set: **maps Names to IDs** (new), then provisions the Load Balancer type NLB with the security group ID(new), updating instance SG swith required rules (existing flow for CLB).
291+
292+
293+
Managed (TBD):
294+
295+
- Classic:
296+
- need to ensure install-config.yaml option writes the CIO manifests enabling NLB with SGs.
297+
- (if Hive uses openshift-install to provision infra, no extra action)
298+
299+
- HCP:
300+
- need to ensure install-config.yaml option writes the CIO manifests enabling NLB with SGs.
301+
- (hypershift? if not using openshift-install): need to evaluate if there is an post-infra hook to create the SG
259302

260303

261304
#### Option 2. Workflow CCM Manage SG
262305

306+
> WIP
307+
308+
Self-managed:
309+
263310
- Create `install-config.yaml` enabling the use of Security Group **and** `lbType=NLB` (already exists).
264311
- The installer generates the CIO manifests: enabling LB type NLB.
265312
- CIO creates the service for the default router, filling a new annotation telling CCM to manage SGs.
266313
- CCM checks annotation to manage SG on NLB, creates the SG and rules, and pass the SG ID to LB creation. CCM controllers manages the SG lifecycle (controllers may exists in CLB).
314+
- CCM checks annotations, then when LB type NLB:
315+
- if annotation `service.beta.kubernetes.io/aws-load-balancer-managed-security-group` (new) is set to `true`, then creates the SG with required rules for ingress (based on listeners) and egress (based on service and health check ports).
316+
317+
Managed (TBD):
318+
319+
- Classic:
320+
- need to ensure install-config.yaml option writes the CIO manifests enabling NLB with SGs.
267321

322+
- HCP:
323+
- need to ensure install-config.yaml option writes the CIO manifests enabling NLB with SGs.
268324

269325
### API Extensions
270326

0 commit comments

Comments
 (0)