Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
2bfe0b3
Dump converted content
maxwelldb Mar 16, 2023
c5e667a
Beginning re-org of existing content
maxwelldb Mar 21, 2023
169537d
Update CloudFormation VPC template
maxwelldb Mar 21, 2023
44dc5a7
Update subnet template
maxwelldb Mar 21, 2023
fe93120
Add IAM policy to assembly prereqs
maxwelldb Mar 21, 2023
480264c
Add sample deployment ref
maxwelldb Mar 21, 2023
fd16f6d
rm working assembly -- no longer needed
maxwelldb Mar 21, 2023
9795188
Add Local Zone note to install-config params mod
maxwelldb Mar 21, 2023
959b647
Level fixes
maxwelldb Mar 21, 2023
34cde6b
Tweak user-infra-generate module language
maxwelldb Mar 21, 2023
03c21dc
Add 'create install-config' module
maxwelldb Mar 21, 2023
32f9baf
Label update
maxwelldb Mar 22, 2023
bfefd33
Subnets list update
maxwelldb Mar 22, 2023
f2631e4
Adding module
maxwelldb Mar 23, 2023
74cbe3f
Apply first batch of suggestions from dev review
maxwelldb Mar 31, 2023
2f7215c
Apply some suggestions from dev review
maxwelldb Apr 17, 2023
f506291
Update edge pools concept mod
maxwelldb Apr 18, 2023
bd8031c
Remove ClusterName from param file
maxwelldb Apr 25, 2023
60c6b4f
Update local zone list command
maxwelldb Apr 25, 2023
c470478
Attempt to address zone_identifier feedback
maxwelldb Apr 25, 2023
8322dc7
zone group name syntax change
maxwelldb Apr 25, 2023
9261279
Remove unused modules
maxwelldb Apr 27, 2023
fe0419b
Revert "Remove unused modules"
maxwelldb Apr 27, 2023
ab9bbca
Redo on the rms
maxwelldb Apr 27, 2023
88eb252
Apply suggestions from review
maxwelldb Apr 27, 2023
daaca35
Remove installation-aws-local-zones-ref-deployment
maxwelldb Apr 27, 2023
0877d58
Update subnets in example
maxwelldb Apr 27, 2023
1898040
Repurpose 'add subnets to config' mod
maxwelldb Apr 27, 2023
8bef9f2
fixup! Repurpose 'add subnets to config' mod
maxwelldb Apr 27, 2023
f8c1b5f
Change level for Edge compute pools mod
maxwelldb Apr 27, 2023
3108697
Correct subnets list callout
maxwelldb Apr 28, 2023
72d7161
simplifying the Zone group explanation for Local Zones OSDOCS-5240 (#3)
mtulio Apr 28, 2023
e6722a9
Subnets module attempt 1
maxwelldb Apr 28, 2023
a0b08c1
OSDOCS-5240 #57427: review rendered page with important fixes on the …
mtulio Apr 28, 2023
0157b14
Remove errant markup from GH suggestion
maxwelldb Apr 28, 2023
903d286
Nits
maxwelldb Apr 28, 2023
ea6b7c5
Apply suggestions from code review
maxwelldb Apr 28, 2023
0e0c8de
Apply some suggestions from code review
maxwelldb May 8, 2023
c6042fe
Gerund form for procedure
maxwelldb May 8, 2023
1d32964
Update param key and val block
maxwelldb May 9, 2023
1859354
Add module use comment
maxwelldb May 11, 2023
f42d1a2
Apply suggestions from peer review
maxwelldb May 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 36 additions & 8 deletions installing/installing_aws/installing-aws-localzone.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,24 @@ If you have an AWS profile stored on your computer, it must not use a temporary
Be sure to also review this site list if you are configuring a proxy.
====
* If the cloud identity and access management (IAM) APIs are not accessible in your environment, or if you do not want to store an administrator-level credential secret in the `kube-system` namespace, you can xref:../../installing/installing_aws/manually-creating-iam.adoc#manually-creating-iam-aws[manually create and maintain IAM credentials].
* Add permission for the user who creates the cluster to modify the Local Zone group with `ec2:ModifyAvailabilityZoneGroup`. For example:
+
.An example of a permissive IAM policy to attach to a user or role
[source,yaml]
----
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:ModifyAvailabilityZoneGroup"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
----

include::modules/cluster-limitations-local-zone.adoc[leveloffset=+1]

Expand All @@ -51,14 +69,14 @@ include::modules/cluster-limitations-local-zone.adoc[leveloffset=+1]

include::modules/cluster-entitlements.adoc[leveloffset=+1]

include::modules/installation-aws-add-local-zone-locations.adoc[leveloffset=+1]

include::modules/installation-aws-marketplace-subscribe.adoc[leveloffset=+1]

include::modules/installation-creating-aws-vpc-localzone.adoc[leveloffset=+1]

include::modules/installation-cloudformation-vpc-localzone.adoc[leveloffset=+2]

include::modules/installation-aws-add-local-zone-locations.adoc[leveloffset=+1]

include::modules/installation-creating-aws-subnet-localzone.adoc[leveloffset=+1]

include::modules/installation-cloudformation-subnet-localzone.adoc[leveloffset=+2]
Expand All @@ -82,6 +100,17 @@ include::modules/installation-aws-tested-machine-types.adoc[leveloffset=+2]
* See link:https://aws.amazon.com/about-aws/global-infrastructure/localzones/features/[AWS Local Zones features] in the AWS documentation for more information about AWS Local Zones and the supported instances types and services.

include::modules/installation-generate-aws-user-infra-install-config.adoc[leveloffset=+2]
// Suggest to standarize edge-pool's specific files with same prefixes, like: machine-edge-pool-[...] or compute-edge-pool-[...] (which is more compatible with install-config.yaml/compute)
include::modules/machines-edge-machine-pool.adoc[leveloffset=+2]
include::modules/edge-machine-pools-aws-local-zones.adoc[leveloffset=+3]

[role="_additional-resources"]
.Additional resources

* xref:../../networking/changing-cluster-network-mtu.adoc#mtu-value-selection_changing-cluster-network-mtu[Changing the MTU for the cluster network]
* xref:../../networking/changing-cluster-network-mtu.adoc#nw-ovn-ipsec-enable_configuring-ipsec-ovn[Enabling IPsec encryption]

include::modules/install-creating-install-config-aws-local-zones.adoc[leveloffset=+2]

[role="_additional-resources"]
.Additional resources
Expand All @@ -91,13 +120,9 @@ include::modules/installation-generate-aws-user-infra-install-config.adoc[levelo
//include::modules/installation-configure-proxy.adoc[leveloffset=+2]
//Put this back if QE validates it.

include::modules/installation-localzone-generate-k8s-manifest.adoc[leveloffset=+2]
// Verify removal due to automation.
// include::modules/installation-localzone-generate-k8s-manifest.adoc[leveloffset=+2]

[role="_additional-resources"]
.Additional resources

* xref:../../networking/changing-cluster-network-mtu.adoc#mtu-value-selection_changing-cluster-network-mtu[Changing the MTU for the cluster network]
* xref:../../networking/changing-cluster-network-mtu.adoc#nw-ovn-ipsec-enable_configuring-ipsec-ovn[Enabling IPsec encryption]

include::modules/installation-launching-installer.adoc[leveloffset=+1]

Expand All @@ -115,6 +140,8 @@ include::modules/logging-in-by-using-the-web-console.adoc[leveloffset=+1]

* See xref:../../web_console/web-console.adoc#web-console[Accessing the web console] for more details about accessing and understanding the {product-title} web console.

include::modules/machine-edge-pool-review-nodes.adoc[leveloffset=+1]

include::modules/cluster-telemetry.adoc[leveloffset=+1]

[role="_additional-resources"]
Expand All @@ -125,6 +152,7 @@ include::modules/cluster-telemetry.adoc[leveloffset=+1]
[id="installing-aws-localzone-next-steps"]
== Next steps

* xref:../../post_installation_configuration/cluster-tasks.adoc#installation-extend-edge-nodes-aws-local-zones_post-install-cluster-tasks[Creating user workloads in AWS Local Zones].
* xref:../../installing/validating-an-installation.adoc#validating-an-installation[Validating an installation].
* xref:../../post_installation_configuration/cluster-tasks.adoc#available_cluster_customizations[Customize your cluster].
* If necessary, you can xref:../../support/remote_health_monitoring/opting-out-of-remote-health-reporting.adoc#opting-out-remote-health-reporting_opting-out-remote-health-reporting[opt out of remote health reporting].
Expand Down
25 changes: 25 additions & 0 deletions modules/edge-machine-pools-aws-local-zones.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Module included in the following assemblies:
// * installing/installing_aws/installing-aws-localzone.adoc

:_content-type: CONCEPT
[id="edge-machine-pools-aws-local-zones_{context}"]
= Edge compute pools and AWS Local Zones

Edge worker nodes are tainted worker nodes that run in AWS Local Zones locations.

When deploying a cluster that uses Local Zones:

* Amazon EC2 instances in the Local Zones are more expensive than Amazon EC2 instances in the Availability Zones.
* Latency between applications and end users is lower in Local Zones, and it may vary by location. There is a latency impact for some workloads if, for example, routers are mixed between Local Zones and Availability Zones.
* The cluster-network Maximum Transmission Unit (MTU) is adjusted automatically to the lower restricted by AWS when Local Zone subnets are detected on the `install-config.yaml`, according to the network plugin. For example, the adjusted values are 1200 for OVN-Kubernetes and 1250 for OpenShift SDN. If additional features are enabled, manual MTU adjustment can be necessary.

[IMPORTANT]
====
Generally, the Maximum Transmission Unit (MTU) between an Amazon EC2 instance in a Local Zone and an Amazon EC2 instance in the Region is 1300. For more information, see link:https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html[How Local Zones work] in the AWS documentation.
The cluster network MTU must be always less than the EC2 MTU to account for the overhead. The specific overhead is determined by the network plugin, for example:

- OVN-Kubernetes: `100 bytes`
- OpenShift SDN: `50 bytes`

The network plugin can provide additional features, like IPsec, that also must be decreased the MTU. For additional information, see the documentation.
====
35 changes: 35 additions & 0 deletions modules/install-creating-install-config-aws-local-zones.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Module included in the following assemblies:
// * installing/installing_aws/installing-aws-localzone.adoc

:_content-type: PROCEDURE
[id="install-creating-install-config-aws-local-zones_{context}"]
= Modifying an installation configuration file to use AWS Local Zones subnets

Modify an `install-config.yaml` file to include AWS Local Zones subnets.

.Prerequisites

* You created subnets by using the procedure "Creating a subnet in AWS Local Zones".
* You created an `install-config.yaml` file by using the procedure "Creating the installation configuration file".

.Procedure

* Add the VPC and Local Zone subnets as the values of the `platform.aws.subnets` property. As an example:
+
[source,yaml]
----
...
platform:
aws:
region: us-west-2
subnets: <1>
- publicSubnetId-1
- publicSubnetId-2
- publicSubnetId-3
- privateSubnetId-1
- privateSubnetId-2
- privateSubnetId-3
- publicSubnetId-LocalZone-1
...
----
<1> List of subnets created in the Availability and Local Zones.
23 changes: 13 additions & 10 deletions modules/installation-aws-add-local-zone-locations.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -23,29 +23,32 @@ $ export CLUSTER_REGION="<region_name>" <1>
----
<1> For `<region_name>`, specify a valid AWS region name, such as `us-east-1`.

. Review the list of zones that your region contains by running the following command:
. List the zones that are available in your region by running the following command:
+
[source,terminal]
----
$ aws ec2 describe-availability-zones \
--filters Name=region-name,Values=${CLUSTER_REGION} \
--query 'AvailabilityZones[].ZoneName' \
$ aws --region ${CLUSTER_REGION} ec2 describe-availability-zones \
--query 'AvailabilityZones[].[{ZoneName: ZoneName, GroupName: GroupName, Status: OptInStatus}]' \
--filters Name=zone-type,Values=local-zone \
--all-availability-zones
----
+
Depending on the region, the list of available zones can be long. The different zones use the following naming conventions:
Depending on the region, the list of available zones can be long. The command will return the following fields:
+
`${REGION}[a-z]`:: Availability zones available in the region.
`${REGION}-LID-N[a-z]`:: Available AWS Local Zones. `${REGION}LID-N` is the zone group identifier, and `[a-z]` is the zone identifier.
`${REGION}-wl1-LID-wlz-[1-9]`:: Available Wavelength zones.
`ZoneName`:: The name of the Local Zone.
`GroupName`:: The group that the zone is part of. You need to save this name to opt in.
`Status`:: The status of the Local Zone group. If the status is `not-opted-in`, you must opt in the `GroupName` by running the commands that follow.

. Export a variable to contain the name of the Local Zone to host your VPC by running the following command:
+
[source,terminal]
----
$ export ZONE_GROUP_NAME="${CLUSTER_REGION}-<location_identifier>-<zone_identifier>" <1>
$ export ZONE_GROUP_NAME="<value_of_GroupName>" <1>
----
<1> For `<location_identifier>-<zone_identifier>`, specify the location identifier and zone identifier for the Local Zone that you selected for your region. For example, specify `nyc-1a` to use the US East (New York) Local Zone.
+
where:

<value_of_GroupName>:: Specifies the name of the group of the Local Zone you want to create subnets on. For example, specify `us-east-1-nyc-1` to use the zone `us-east-1-nyc-1a`, US East (New York).

. Opt in to the zone group on your AWS account by running the following command:
+
Expand Down
24 changes: 8 additions & 16 deletions modules/installation-cloudformation-subnet-localzone.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,17 @@ you need for your {product-title} cluster that uses AWS Local Zones.
----
# CloudFormation template used to create Local Zone subnets and dependencies
AWSTemplateFormatVersion: 2010-09-09
Description: Template for Best Practice VPC with 1-3 AZs
Description: Template for create Public Local Zone subnets

Parameters:
ClusterName:
Description: ClusterName used to prefix resource names
Type: String
VpcId:
Description: VPC Id
Type: String
LocalZoneName:
Description: Local Zone Name (Example us-east-1-bos-1)
ZoneName:
Description: Local Zone Name (Example us-east-1-nyc-1a)
Type: String
LocalZoneNameShort:
Description: Short name for Local Zone used on tag Name (Example bos1)
SubnetName:
Description: Local Zone Name (Example cluster-public-us-east-1-nyc-1a)
Type: String
PublicRouteTableId:
Description: Public Route Table ID to associate the Local Zone subnet
Expand All @@ -47,12 +44,10 @@ Resources:
Properties:
VpcId: !Ref VpcId
CidrBlock: !Ref PublicSubnetCidr
AvailabilityZone: !Ref LocalZoneName
AvailabilityZone: !Ref ZoneName
Tags:
- Key: Name
Value: !Join
- ""
- [ !Ref ClusterName, "-public-", !Ref LocalZoneNameShort, "-1" ]
Value: !Ref SubnetName
- Key: kubernetes.io/cluster/unmanaged
Value: "true"

Expand All @@ -66,9 +61,6 @@ Outputs:
PublicSubnetIds:
Description: Subnet IDs of the public subnets.
Value:
!Join [
"",
[!Ref PublicSubnet]
]
!Join ["", [!Ref PublicSubnet]]
----
====
Loading