Skip to content

Commit cb6bd53

Browse files
GroceryBoyJrkalexand-rh
authored andcommitted
OSDOCS-4347: AWS Local Zones installation
1 parent f2826ff commit cb6bd53

13 files changed

+1096
-5
lines changed

_topic_maps/_topic_map.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,8 @@ Topics:
174174
File: installing-aws-china
175175
- Name: Installing a cluster on AWS using CloudFormation templates
176176
File: installing-aws-user-infra
177+
- Name: Installing a cluster using AWS Local Zones
178+
File: installing-aws-localzone
177179
- Name: Installing a cluster on AWS in a restricted network with user-provisioned infrastructure
178180
File: installing-restricted-networks-aws
179181
- Name: Uninstalling a cluster on AWS
@@ -677,7 +679,7 @@ Topics:
677679
- Name: Dynamic plug-ins
678680
Dir: dynamic-plug-in
679681
Distros: openshift-enterprise,openshift-origin
680-
Topics:
682+
Topics:
681683
- Name: Overview of dynamic plug-ins
682684
File: dynamic-plug-in
683685
- Name: Getting started with dynamic plug-ins
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
:_content-type: ASSEMBLY
2+
[id="installing-aws-localzone"]
3+
= Installing a cluster using AWS Local Zones
4+
include::_attributes/common-attributes.adoc[]
5+
:context: installing-aws-localzone
6+
7+
toc::[]
8+
9+
In {product-title} version {product-version}, you can install a cluster on Amazon Web Services (AWS) into an existing VPC, extending workers to the edge of the Cloud Infrastructure using AWS Local Zones.
10+
11+
AWS Local Zones are a type of infrastructure that place Cloud Resources close to the metropolitan regions. For more information, see the link:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-local-zones[AWS Local Zones Documentation].
12+
13+
{product-title} can be installed in existing VPCs with Local Zone subnets. The Local Zone subnets can be used to extend the regular workers' nodes to the edge networks. The edge worker nodes are dedicated to running user workloads.
14+
15+
One way to create the VPC and subnets is to use the provided CloudFormation templates. You can modify the templates to customize your infrastructure or use the information that they contain to create AWS objects according to your company's policies.
16+
17+
[IMPORTANT]
18+
====
19+
The steps for performing an installer-provisioned infrastructure installation are provided as an example only. Installing a cluster with VPC you provide requires knowledge of the cloud provider and the installation process of {product-title}. The CloudFormation templates are provided to assist in completing these steps or to help model your own. You are also free to create the required resources through other methods; the templates are just an example.
20+
====
21+
22+
== Prerequisites
23+
24+
* You reviewed details about the xref:../../architecture/architecture-installation.adoc#architecture-installation[{product-title} installation and update] processes.
25+
* You read the documentation on xref:../../installing/installing-preparing.adoc#installing-preparing[selecting a cluster installation method and preparing it for users].
26+
* You xref:../../installing/installing_aws/installing-aws-account.adoc#installing-aws-account[configured an AWS account] to host the cluster.
27+
+
28+
[IMPORTANT]
29+
====
30+
If you have an AWS profile stored on your computer, it must not use a temporary session token that you generated while using a multi-factor authentication device. The cluster continues to use your current AWS credentials to create AWS resources for the entire life of the cluster, so you must use key-based, long-lived credentials. To generate appropriate keys, see link:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html[Managing Access Keys for IAM Users] in the AWS documentation. You can supply the keys when you run the installation program.
31+
====
32+
* You noted the region and supported link:https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations[AWS Local Zones locations] to create the network resources in.
33+
* You read the link:https://aws.amazon.com/about-aws/global-infrastructure/localzones/features/[Features] for each AWS Local Zones location.
34+
* You downloaded the AWS CLI and installed it on your computer. See link:https://docs.aws.amazon.com/cli/latest/userguide/install-bundle.html[Install the AWS CLI Using the Bundled Installer (Linux, macOS, or UNIX)] in the AWS documentation.
35+
* If you use a firewall, you xref:../../installing/install_config/configuring-firewall.adoc#configuring-firewall[configured it to allow the sites] that your cluster requires access to.
36+
+
37+
[NOTE]
38+
====
39+
Be sure to also review this site list if you are configuring a proxy.
40+
====
41+
* 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].
42+
43+
include::modules/cluster-entitlements.adoc[leveloffset=+1]
44+
45+
include::modules/installation-aws-tested-machine-types.adoc[leveloffset=+2]
46+
47+
include::modules/installation-aws-add-local-zone-locations.adoc[leveloffset=+1]
48+
49+
include::modules/installation-aws-marketplace-subscribe.adoc[leveloffset=+1]
50+
51+
include::modules/installation-creating-aws-vpc-localzone.adoc[leveloffset=+1]
52+
53+
include::modules/installation-cloudformation-vpc-localzone.adoc[leveloffset=+2]
54+
55+
include::modules/installation-creating-aws-subnet-localzone.adoc[leveloffset=+1]
56+
57+
include::modules/installation-cloudformation-subnet-localzone.adoc[leveloffset=+2]
58+
59+
[role="_additional-resources"]
60+
.Additional resources
61+
62+
* You can view details about the CloudFormation stacks that you create by navigating to the link:https://console.aws.amazon.com/cloudformation/[AWS CloudFormation console].
63+
64+
include::modules/installation-obtaining-installer.adoc[leveloffset=+1]
65+
66+
include::modules/ssh-agent-using.adoc[leveloffset=+1]
67+
68+
include::modules/installation-user-infra-generate.adoc[leveloffset=+1]
69+
70+
include::modules/installation-generate-aws-user-infra-install-config.adoc[leveloffset=+2]
71+
72+
[role="_additional-resources"]
73+
.Additional resources
74+
75+
* See link:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html[Configuration and credential file settings] in the AWS documentation for more information about AWS profile and credential configuration.
76+
77+
//include::modules/installation-configure-proxy.adoc[leveloffset=+2]
78+
//Put this back if QE validates it.
79+
80+
include::modules/installation-localzone-generate-k8s-manifest.adoc[leveloffset=+2]
81+
82+
include::modules/installation-launching-installer.adoc[leveloffset=+1]
83+
84+
include::modules/cli-installing-cli.adoc[leveloffset=+1]
85+
86+
include::modules/cli-logging-in-kubeadmin.adoc[leveloffset=+1]
87+
88+
include::modules/logging-in-by-using-the-web-console.adoc[leveloffset=+1]
89+
90+
[role="_additional-resources"]
91+
.Additional resources
92+
93+
* 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.
94+
95+
include::modules/cluster-telemetry.adoc[leveloffset=+1]
96+
97+
[role="_additional-resources"]
98+
.Additional resources
99+
100+
* See xref:../../support/remote_health_monitoring/about-remote-health-monitoring.adoc#about-remote-health-monitoring[About remote health monitoring] for more information about the Telemetry service.
101+
102+
[role="_additional-resources"]
103+
[id="installing-localzone-additional-resources"]
104+
== Additional resources
105+
106+
* See link:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html[Working with stacks] in the AWS documentation for more information about AWS CloudFormation stacks.
107+
* link:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#opt-in-local-zone[Opt into AWS Local Zones]
108+
* link:https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations[AWS Local Zones available locations]
109+
* link:https://aws.amazon.com/about-aws/global-infrastructure/localzones/features[AWS Local Zones features]
110+
111+
[id="installing-aws-localzone-next-steps"]
112+
== Next steps
113+
114+
* xref:../../installing/validating-an-installation.adoc#validating-an-installation[Validating an installation].
115+
* xref:../../post_installation_configuration/cluster-tasks.adoc#available_cluster_customizations[Customize your cluster].
116+
* 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].
117+
* If necessary, you can xref:../../authentication/managing_cloud_provider_credentials/cco-mode-mint.adoc#manually-removing-cloud-creds_cco-mode-mint[remove cloud provider credentials].
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * installing/installing_aws/installing-aws-localzone.adoc
4+
5+
:_content-type: PROCEDURE
6+
[id="installation-aws-add-local-zone-locations_{context}"]
7+
= Opting into AWS Local Zones
8+
9+
If you plan to create the subnets in AWS Local Zones, you must opt in to each zone group separately.
10+
11+
.Prerequisites
12+
13+
* You have installed the AWS CLI.
14+
* You have determined into which region you will deploy your {product-title} cluster.
15+
16+
.Procedure
17+
18+
. Export a variable to contain the name of the region in which you plan to deploy your {product-title} cluster by running the following command:
19+
+
20+
[source,terminal]
21+
----
22+
$ export CLUSTER_REGION="<region_name>" <1>
23+
----
24+
<1> For `<region_name>`, specify a valid AWS region name, such as `us-east-1`.
25+
26+
. Review the list of zones that your region contains by running the following command:
27+
+
28+
[source,terminal]
29+
----
30+
$ aws ec2 describe-availability-zones \
31+
--filters Name=region-name,Values=${CLUSTER_REGION} \
32+
--query 'AvailabilityZones[].ZoneName' \
33+
--all-availability-zones
34+
----
35+
+
36+
Depending on the region, the list of available zones can be long. The different zones use the following naming conventions:
37+
+
38+
`${REGION}[a-z]`:: Availability zones available in the region.
39+
`${REGION}-LID-N[a-z]`:: Available AWS Local Zones. `${REGION}LID-N` is the zone group identifier, and `[a-z]` is the zone identifier.
40+
`${REGION}-wl1-LID-wlz-[1-9]`:: Available Wavelength zones.
41+
42+
. Export a variable to contain the name of the Local Zone to host your VPC by running the following command:
43+
+
44+
[source,terminal]
45+
----
46+
$ export ZONE_GROUP_NAME="${CLUSTER_REGION}-<location_identifier>-<zone_identifier>" <1>
47+
----
48+
<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.
49+
50+
. Opt in to the zone group on your AWS account by running the following command:
51+
+
52+
[source,terminal]
53+
----
54+
$ aws ec2 modify-availability-zone-group \
55+
--group-name "${ZONE_GROUP_NAME}" \
56+
--opt-in-status opted-in
57+
----

modules/installation-aws-marketplace-subscribe.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ endif::[]
1010
ifeval::["{context}" == "installing-aws-government-region"]
1111
:ipi:
1212
endif::[]
13+
ifeval::["{context}" == "installing-aws-localzone"]
14+
:ipi:
15+
endif::[]
1316
ifeval::["{context}" == "installing-aws-user-infra"]
1417
:upi:
1518
endif::[]
@@ -66,6 +69,9 @@ endif::[]
6669
ifeval::["{context}" == "installing-aws-government-region"]
6770
:!ipi:
6871
endif::[]
72+
ifeval::["{context}" == "installing-aws-localzone"]
73+
:!ipi:
74+
endif::[]
6975
ifeval::["{context}" == "installing-aws-user-infra"]
7076
:!upi:
7177
endif::[]

modules/installation-aws-tested-machine-types.adoc

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,42 @@
99
// installing/installing_aws/installing-aws-vpc.adoc
1010
// installing/installing_aws/installing-restricted-networks-aws.adoc
1111

12+
ifeval::["{context}" == "installing-aws-localzone"]
13+
:localzone:
14+
endif::[]
15+
1216
[id="installation-aws-tested-machine-types_{context}"]
1317
= Tested instance types for AWS
1418

15-
The following Amazon Web Services (AWS) instance types have been tested with {product-title}.
19+
The following Amazon Web Services (AWS) instance types have been tested with
20+
ifndef::localzone[]
21+
{product-title}.
22+
endif::localzone[]
23+
ifdef::localzone[]
24+
{product-title} for use with AWS Local Zones.
25+
endif::localzone[]
26+
1627

1728
[NOTE]
1829
====
19-
Use the machine types included in the following charts for your AWS instances. If you use an instance type that is not listed in the chart, ensure that the instance size you use matches the minimum resource requirements that are listed in "Minimum resource requirements for cluster installation".
30+
Use the machine types included in the following charts for your AWS instances. If you use an instance type that is not listed in the chart, ensure that the instance size you use matches the minimum resource requirements that are listed in "Minimum resource requirements for cluster installation".
2031
====
2132

33+
ifndef::localzone[]
2234
.Machine types based on x86_64 architecture
2335
[%collapsible]
2436
====
2537
include::https://raw.githubusercontent.com/openshift/installer/master/docs/user/aws/tested_instance_types_x86_64.md[]
2638
====
39+
endif::localzone[]
40+
ifdef::localzone[]
41+
.Machine types based on x86_64 architecture for AWS Local Zones
42+
[%collapsible]
43+
====
44+
* `m5.xlarge`
45+
====
46+
endif::localzone[]
47+
48+
ifeval::["{context}" == "installing-aws-localzone"]
49+
:!localzone:
50+
endif::[]
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * installing/installing_aws/installing-aws-localzone.adoc
4+
5+
:_content-type: REFERENCE
6+
[id="installation-cloudformation-subnet-localzone_{context}"]
7+
= CloudFormation template for the subnet that uses AWS Local Zones
8+
9+
You can use the following CloudFormation template to deploy the subnet that
10+
you need for your {product-title} cluster that uses AWS Local Zones.
11+
12+
.CloudFormation template for the subnet
13+
[%collapsible]
14+
====
15+
[source,yaml]
16+
----
17+
# CloudFormation template used to create Local Zone subnets and dependencies
18+
AWSTemplateFormatVersion: 2010-09-09
19+
Description: Template for Best Practice VPC with 1-3 AZs
20+
21+
Parameters:
22+
ClusterName:
23+
Description: ClusterName used to prefix resource names
24+
Type: String
25+
VpcId:
26+
Description: VPC Id
27+
Type: String
28+
LocalZoneName:
29+
Description: Local Zone Name (Example us-east-1-bos-1)
30+
Type: String
31+
LocalZoneNameShort:
32+
Description: Short name for Local Zone used on tag Name (Example bos1)
33+
Type: String
34+
PublicRouteTableId:
35+
Description: Public Route Table ID to associate the Local Zone subnet
36+
Type: String
37+
PublicSubnetCidr:
38+
AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-4]))$
39+
ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16-24.
40+
Default: 10.0.128.0/20
41+
Description: CIDR block for Public Subnet
42+
Type: String
43+
44+
Resources:
45+
PublicSubnet:
46+
Type: "AWS::EC2::Subnet"
47+
Properties:
48+
VpcId: !Ref VpcId
49+
CidrBlock: !Ref PublicSubnetCidr
50+
AvailabilityZone: !Ref LocalZoneName
51+
Tags:
52+
- Key: Name
53+
Value: !Join
54+
- ""
55+
- [ !Ref ClusterName, "-public-", !Ref LocalZoneNameShort, "-1" ]
56+
- Key: kubernetes.io/cluster/unmanaged
57+
Value: "true"
58+
59+
PublicSubnetRouteTableAssociation:
60+
Type: "AWS::EC2::SubnetRouteTableAssociation"
61+
Properties:
62+
SubnetId: !Ref PublicSubnet
63+
RouteTableId: !Ref PublicRouteTableId
64+
65+
Outputs:
66+
PublicSubnetIds:
67+
Description: Subnet IDs of the public subnets.
68+
Value:
69+
!Join [
70+
"",
71+
[!Ref PublicSubnet]
72+
]
73+
----
74+
====

0 commit comments

Comments
 (0)