Skip to content

Commit e41762d

Browse files
authored
Merge pull request #56253 from mjpytlak/osdocs-4894
OSDOCS#4894: Installing a three-node AWS cluster
2 parents 50d8a1e + d7fd869 commit e41762d

7 files changed

+118
-2
lines changed

_topic_maps/_topic_map.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ Topics:
182182
File: installing-restricted-networks-aws
183183
- Name: Installing a cluster on AWS with remote workers on AWS Outposts
184184
File: installing-aws-outposts-remote-workers
185+
- Name: Installing a three-node cluster on AWS
186+
File: installing-aws-three-node
185187
- Name: Uninstalling a cluster on AWS
186188
File: uninstalling-cluster-aws
187189
- Name: Installing on Azure
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
:_content-type: ASSEMBLY
2+
[id="installing-aws-three-node"]
3+
= Installing a three-node AWS cluster
4+
include::_attributes/common-attributes.adoc[]
5+
:context: installing-aws-three-node
6+
7+
toc::[]
8+
9+
In {product-title} version {product-version}, you can install a three-node cluster on Amazon Web Services (AWS). A three-node cluster consists of three control plane machines, which also act as compute machines. This type of cluster provides a smaller, more resource efficient cluster, for cluster administrators and developers to use for testing, development, and production.
10+
11+
You can install a three-node cluster using either installer-provisioned or user-provisioned infrastructure.
12+
13+
[NOTE]
14+
====
15+
Deploying a three-node cluster using an AWS Marketplace image is not supported.
16+
====
17+
18+
include::modules/installation-three-node-cluster-cloud-provider.adoc[leveloffset=+1]
19+
20+
== Next steps
21+
* xref:../../installing/installing_aws/installing-aws-customizations.adoc#installing-aws-customizations[Installing a cluster on AWS with customizations]
22+
* xref:../../installing/installing_aws/installing-aws-user-infra.adoc#installing-aws-user-infra[Installing a cluster on user-provisioned infrastructure in AWS by using CloudFormation templates]

modules/installation-creating-aws-worker.adoc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
// * installing/installing_aws/installing-aws-user-infra.adoc
44
// * installing/installing_aws/installing-restricted-networks-aws.adoc
55

6+
ifeval::["{context}" == "installing-aws-user-infra"]
7+
:three-node-cluster:
8+
endif::[]
9+
610
:_content-type: PROCEDURE
711
[id="installation-creating-aws-worker_{context}"]
812
= Creating the worker nodes in AWS
@@ -13,6 +17,13 @@ If you do not plan to automatically create worker nodes by using a MachineSet,
1317

1418
You can create worker nodes in Amazon Web Services (AWS) for your cluster to use.
1519

20+
ifdef::three-node-cluster[]
21+
[NOTE]
22+
====
23+
If you are installing a three-node cluster, skip this step. A three-node cluster consists of three control plane machines, which also act as compute machines.
24+
====
25+
endif::three-node-cluster[]
26+
1627
You can use the provided CloudFormation template and a custom parameter file to create a stack of AWS resources that represent a worker node.
1728

1829
[IMPORTANT]
@@ -40,6 +51,8 @@ have to contact Red Hat support with your installation logs.
4051
* You created the bootstrap machine.
4152
* You created the control plane machines.
4253
54+
55+
4356
.Procedure
4457

4558
. Create a JSON file that contains the parameter values that the CloudFormation
@@ -163,3 +176,7 @@ $ aws cloudformation describe-stacks --stack-name <name>
163176
You must create at least two worker machines, so you must create at least
164177
two stacks that use this CloudFormation template.
165178
====
179+
180+
ifeval::["{context}" == "installing-aws-user-infra"]
181+
:!three-node-cluster:
182+
endif::[]

modules/installation-generate-aws-user-infra-install-config.adoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
// * installing/installing_aws/installing-aws-user-infra.adoc
55
// * installing/installing_aws/installing-restricted-networks-aws.adoc
66

7+
ifeval::["{context}" == "installing-aws-user-infra"]
8+
:three-node-cluster:
9+
endif::[]
710
ifeval::["{context}" == "installing-restricted-networks-aws"]
811
:restricted:
912
endif::[]
@@ -145,6 +148,10 @@ platform:
145148
<1> Add the `subnets` section and specify the `PrivateSubnetIds` and `PublicSubnetIds` values from the outputs of the CloudFormation template for the VPC. Do not include the Local Zone subnets here.
146149
endif::localzone[]
147150
151+
ifdef::three-node-cluster[]
152+
. If you are installing a three-node cluster, modify the `install.config.yaml` file by setting the `compute.replicas` parameter to `0`. This ensures that the cluster's control planes are schedulable. For more information, see "Installing a three-node cluster on AWS".
153+
endif::three-node-cluster[]
154+
148155
. Optional: Back up the `install-config.yaml` file.
149156
+
150157
[IMPORTANT]
@@ -153,6 +160,9 @@ The `install-config.yaml` file is consumed during the installation process. If
153160
you want to reuse the file, you must back it up now.
154161
====
155162
163+
ifeval::["{context}" == "installing-aws-user-infra"]
164+
:!three-node-cluster:
165+
endif::[]
156166
ifeval::["{context}" == "installing-restricted-networks-aws"]
157167
:!restricted:
158168
endif::[]

modules/installation-initializing.adoc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ ifeval::["{context}" == "installing-alibaba-vpc"]
5454
endif::[]
5555
ifeval::["{context}" == "installing-aws-customizations"]
5656
:aws:
57+
:three-node-cluster:
5758
endif::[]
5859
ifeval::["{context}" == "installing-aws-network-customizations"]
5960
:aws:
@@ -472,6 +473,13 @@ ifndef::restricted,alibabacloud-default,alibabacloud-custom,alibabacloud-vpc,nut
472473
. Modify the `install-config.yaml` file. You can find more information about
473474
the available parameters in the "Installation configuration parameters" section.
474475
endif::restricted,alibabacloud-default,alibabacloud-custom,alibabacloud-vpc,nutanix,aws-outposts[]
476+
ifdef::three-node-cluster[]
477+
+
478+
[NOTE]
479+
====
480+
If you are installing a three-node cluster, be sure to set the `compute.replicas` parameter to `0`. This ensures that cluster's control planes are schedulable. For more information, see "Installing a three-node cluster on AWS".
481+
====
482+
endif::three-node-cluster[]
475483

476484
ifdef::alibabacloud-default,alibabacloud-custom,alibabacloud-vpc[]
477485
. Installing the cluster into Alibaba Cloud requires that the Cloud Credential Operator (CCO) operate in manual mode. Modify the `install-config.yaml` file to set the `credentialsMode` parameter to `Manual`:
@@ -666,6 +674,7 @@ ifeval::["{context}" == "installing-alibaba-vpc"]
666674
endif::[]
667675
ifeval::["{context}" == "installing-aws-customizations"]
668676
:!aws:
677+
:!three-node-cluster:
669678
endif::[]
670679
ifeval::["{context}" == "installing-aws-network-customizations"]
671680
:!aws:
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// Module included in the following assemblies:
2+
// * installing/installing_aws/installing-aws-three-node.adoc
3+
// *
4+
// *
5+
6+
:_content-type: PROCEDURE
7+
[id="installation-three-node-cluster_{context}"]
8+
= Configuring a three-node cluster
9+
10+
You configure a three-node cluster by setting the number of worker nodes to `0` in the `install-config.yaml` file before deploying the cluster. Setting the number of worker nodes to `0` ensures that the control plane machines are schedulable. This allows application workloads to be scheduled to run from the control plane nodes.
11+
12+
[NOTE]
13+
====
14+
Because application workloads run from control plane nodes, additional subscriptions are required, as the control plane nodes are considered to be compute nodes.
15+
====
16+
17+
.Prerequisites
18+
19+
* You have an existing `install-config.yaml` file.
20+
21+
.Procedure
22+
23+
. Set the number of compute replicas to `0` in your `install-config.yaml` file, as shown in the following `compute` stanza:
24+
+
25+
[source,yaml]
26+
----
27+
compute:
28+
- name: worker
29+
platform: {}
30+
replicas: 0
31+
----
32+
. If you are deploying a cluster with user-provisioned infrastructure, do not create additional worker nodes.
33+
34+
.Verification
35+
36+
To verify that the control plane nodes are schedulable, open the `cluster-scheduler-02-config.yml` Kubernetes manifest file and confirm that the `spec.mastersSchedulable` parameter is set to `true`. You can locate this file in `<installation_directory>/manifests`.
37+
38+
* If you install a cluster on infrastructure that the installation program provisions, you can complete this verification step after the cluster is deployed.
39+
* If you install a cluster on infrastructure that you provision, you can complete this verification step after creating the Kubernetes manifest and Ignition configuration files.
40+
41+
.Example `cluster-scheduler-02-config.yml` file for a three-node cluster
42+
[source,yaml]
43+
----
44+
apiVersion: config.openshift.io/v1
45+
kind: Scheduler
46+
metadata:
47+
creationTimestamp: null
48+
name: cluster
49+
spec:
50+
mastersSchedulable: true
51+
policy:
52+
name: ""
53+
status: {}
54+
----

modules/installation-user-infra-generate-k8s-manifest-ignition.adoc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
ifeval::["{context}" == "installing-aws-user-infra"]
2626
:aws:
27+
:three-node-cluster:
2728
endif::[]
2829
ifeval::["{context}" == "installing-restricted-networks-aws"]
2930
:aws:
@@ -207,7 +208,7 @@ to initialize them.
207208
+
208209
* You can preserve the compute machine set files to create compute machines by using the machine API, but you must update references to them to match your environment.
209210
endif::osp,vsphere,vmc[]
210-
ifdef::baremetal,baremetal-restricted,ibm-z,ibm-power[]
211+
ifdef::baremetal,baremetal-restricted,ibm-z,ibm-power,three-node-cluster[]
211212
+
212213
[WARNING]
213214
====
@@ -218,7 +219,7 @@ If you are installing a three-node cluster, skip the following step to allow the
218219
====
219220
When you configure control plane nodes from the default unschedulable to schedulable, additional subscriptions are required. This is because control plane nodes then become compute nodes.
220221
====
221-
endif::baremetal,baremetal-restricted,ibm-z,ibm-power[]
222+
endif::baremetal,baremetal-restricted,ibm-z,ibm-power,three-node-cluster[]
222223

223224
. Check that the `mastersSchedulable` parameter in the `<installation_directory>/manifests/cluster-scheduler-02-config.yml` Kubernetes manifest file is set to `false`. This setting prevents pods from being scheduled on the control plane machines:
224225
+
@@ -496,6 +497,7 @@ ifeval::["{context}" == "installing-restricted-networks-aws"]
496497
endif::[]
497498
ifeval::["{context}" == "installing-aws-user-infra"]
498499
:!aws:
500+
:!three-node-cluster:
499501
endif::[]
500502
ifeval::["{context}" == "installing-azure-user-infra"]
501503
:!azure:

0 commit comments

Comments
 (0)