Skip to content

Commit cfaab83

Browse files
committed
splat-653: updates in installer/aws-localzones
1 parent 5b78def commit cfaab83

File tree

1 file changed

+39
-17
lines changed

1 file changed

+39
-17
lines changed

enhancements/installer/aws-custom-edge-machineset-local-zones.md

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,9 @@ all the limitations on the Local Zones (instance types, EBS, network, etc).
249249

250250
The MachineSet for the `edge` pool will also set those custom labels:
251251

252-
- `node-role.kubernetes.io/edge=''`: used by `taint` and to quickly identify on `oc get nodes`
253-
- `machine.openshift.io/zone-type=local-zone`: can be used by customers to deploy custom applications across all Local Zones nodes
254-
- `machine.openshift.io/zone-group=<zone_group_name>`: can be used by the developer to deploy applications in custom locations
252+
- `node-role.kubernetes.io/edge=''`: used to `taint` the node, quickly identify in `oc get nodes`, and create affinity rules
253+
- `machine.openshift.io/zone-type=local-zone`: can be used to create workloads across all Local Zones nodes
254+
- `machine.openshift.io/zone-group=<zone_group_name>`: can be used to create workloads in custom Local Zone locations
255255

256256
The MachineSet also must have the taint to `NoSchedule` to the label `node-role.kubernetes.io/edge=''`.
257257
This taint will prevent to schedule of regular cluster workloads (router, logging, monitoring)
@@ -511,8 +511,8 @@ subnets to deploy edge compute pools on the AWS Local Zones.
511511

512512
The following items must be satisfied in this phase:
513513

514-
- the installer must opt-in the zone group for each zone specified
515-
on the configuration `compute[?name=="edge"].platform.aws.zones`.
514+
- the installer must check if the zone group has been opted-in for each zone specified
515+
in the configuration `compute[?name=="edge"].platform.aws.zones`.
516516

517517
- the installer must discover the preferred instance type based on the API
518518
[EC2 Instance Offerings](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTypeOfferings.html) for each Local Zone provided on the
@@ -522,11 +522,16 @@ The following items must be satisfied in this phase:
522522
- the installer must create private subnets on Local Zones for each item provided
523523
on the configuration `compute[?name=="edge"].platform.aws.zones`, associating
524524
it to the private route table for the parent zone* when available, otherwise
525-
the first private route table available.
525+
the first private route table available will be selected.
526526

527527
> *each Local Zone belongs to a parent zone in the Region and can be discovered
528528
by the EC2 API [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html).
529529

530+
- the machine set manifests for each Local Zones provided in the configuration
531+
`compute[?name=="edge"].platform.aws.zones`, must expose the label of it's
532+
parent zone `machine.openshift.io/parent-zone-name: <zone_name>`. This label can be
533+
used to create affinity rules for workloads in Local Zone and in zones the Region.
534+
530535
- the installer will not create any other resource than subnets in the Local Zones
531536
using the default IPI deployment.
532537

@@ -612,8 +617,9 @@ spec:
612617
spec:
613618
metadata:
614619
labels:
615-
machine.openshift.io/zone-type: local-zone
620+
machine.openshift.io/parent-zone-name: us-east-1d (1)
616621
machine.openshift.io/zone-group: us-east-1-nyc-1
622+
machine.openshift.io/zone-type: local-zone
617623
node-role.kubernetes.io/edge: ""
618624
taints:
619625
- key: node-role.kubernetes.io/edge
@@ -646,7 +652,7 @@ spec:
646652
- filters:
647653
- name: tag:Name
648654
values:
649-
- ${CLUSTER_ID}-public-us-east-1-nyc-1a (1)
655+
- ${CLUSTER_ID}-public-us-east-1-nyc-1a (2)
650656
publicIp: true
651657
tags:
652658
- name: kubernetes.io/cluster/${CLUSTER_ID}
@@ -655,7 +661,8 @@ spec:
655661
name: worker-user-data
656662
```
657663

658-
- 1: The `tag:Name` for the public subnet on the Local Zones location.
664+
- 1: The `parent-zone-name` is the zone that the Local Zone is connected in the region.
665+
- 2: The `tag:Name` for the public subnet on the Local Zones location.
659666

660667
The compute resources will be created by the installer:
661668

@@ -753,6 +760,22 @@ platform:
753760
Install a cluster in extending nodes to Local Zone with full automation: installer
754761
creates network resources needed to launch the node.
755762

763+
Example using Local Zones `us-east-1-atl-1a` and `us-east-1-bos-1a`:
764+
765+
- User opt-in to the Local Zone group(s) using Console or CLI:
766+
767+
```bash
768+
# opt-in the zone group `us-east-1-atl-1`
769+
aws ec2 modify-availability-zone-group \
770+
--group-name "us-east-1-atl-1" \
771+
--opt-in-status opted-in
772+
773+
# opt-in the zone group `us-east-1-bos-1`
774+
aws ec2 modify-availability-zone-group \
775+
--group-name "us-east-1-bos-1" \
776+
--opt-in-status opted-in
777+
```
778+
756779
- Create the `install-config.yaml` with Local Zone names on the edge compute pool
757780

758781
```yaml
@@ -781,11 +804,11 @@ compute:
781804
- validates if each zone item on the `edge` compute pool matches the attribute `ZoneType` equals of `local-zone`, collecting the zone attributes;
782805
- discovers the preferred instance type for the zone based on the installer-supported list for each Local Zone calling the AWS API [EC2 Instance Offerings](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTypeOfferings.html), storing it on the zone attribute;
783806
- creates the MachineSet manifest for each `edge` zone, creating the attributes:
784-
- custom labels (zone-type, zone-group, node-role);
807+
- custom labels (zone-type, zone-group, node-role, parent-zone-name);
785808
- set the taint `NoSchedule` for the label `node-role`;
786-
- set the instance type for the preferred the zone
809+
- set the instance type for the preferred in the zone
787810
- sets the cluster-network MTU size patching the Network Configuration manifest considering the overhead of the network plugin used on the deployment
788-
- runs the regular flow
811+
- runs the regular install flow
789812

790813
### API Extensions
791814

@@ -1071,12 +1094,12 @@ A periodic job will be created alongside a step to create a subnet in Local Zone
10711094

10721095
Test steps:
10731096

1074-
- Create a VPC in the Region selected by the CI lease pool
10751097
- Choose randomly one Local Zone location in the Region
10761098
- Opt-in the Zone Group for the selected zone
1077-
- Create subnets into 3 zones in the Region (Example: `us-east-1a`, `us-east-1b`, `us-east-1c`)
1099+
- Create a VPC in the Region selected by the CI lease pool
1100+
- Reuse the chain [`shared-vpc`](ipi-aws-pre-sharednetwork) to create subnets into zones in the Region (Example: `us-east-1b`, `us-east-1c`)
10781101
- Create subnets into selected Local zone
1079-
- Create the `install-config.yaml` selecting all subnet IDs (regular and local zones)
1102+
- Reuse the step to create the `install-config.yaml` selecting all subnet IDs (regular and local zones)
10801103
- Create the cluster
10811104
- Run `openshift-e2e-test` step
10821105

@@ -1086,8 +1109,7 @@ A periodic job will be created to create the edge compute pool with Local Zone n
10861109

10871110
Test steps:
10881111

1089-
- Discover the Zones with type `local-zone` in the AWS Region running the CI job (selected by lease pool)
1090-
- Select randomly one Local zone name
1112+
- Choose randomly one Local Zone location in the Region
10911113
- Opt-in the Zone Group for the selected zone
10921114
- Create the `install-config.yaml` adding the `edge` compute pool with Local Zone name
10931115
- Create the cluster

0 commit comments

Comments
 (0)