1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/aws-outposts-machine-set.adoc
2024-08-01 15:16:19 +00:00

220 lines
7.7 KiB
Plaintext

// Module included in the following assemblies:
//
// * installing/installing_aws/ipi/installing-aws-outposts.adoc
:_mod-docs-content-type: PROCEDURE
[id="aws-outposts-machine-set_{context}"]
= Creating a compute machine set that deploys edge compute machines on an Outpost
To create edge compute machines on AWS Outposts, you must create a new compute machine set with a compatible configuration.
.Prerequisites
* You have an AWS Outposts site.
* You have installed an {product-title} cluster into a custom VPC on AWS.
* You have access to the cluster using an account with `cluster-admin` permissions.
* You have installed the {oc-first}.
.Procedure
. List the compute machine sets in your cluster by running the following command:
+
[source,terminal]
----
$ oc get machinesets.machine.openshift.io -n openshift-machine-api
----
+
.Example output
[source,text]
----
NAME DESIRED CURRENT READY AVAILABLE AGE
<original_machine_set_name_1> 1 1 1 1 55m
<original_machine_set_name_2> 1 1 1 1 55m
----
. Record the names of the existing compute machine sets.
. Create a YAML file that contains the values for a new compute machine set custom resource (CR) by using one of the following methods:
** Copy an existing compute machine set configuration into a new file by running the following command:
+
[source,terminal]
----
$ oc get machinesets.machine.openshift.io <original_machine_set_name_1> \
-n openshift-machine-api -o yaml > <new_machine_set_name_1>.yaml
----
+
You can edit this YAML file with your preferred text editor.
** Create an empty YAML file named `<new_machine_set_name_1>.yaml` with your preferred text editor and include the required values for your new compute machine set.
+
If you are not sure which value to set for a specific field, you can view values of an existing compute machine set CR by running the following command:
+
[source,terminal]
----
$ oc get machinesets.machine.openshift.io <original_machine_set_name_1> \
-n openshift-machine-api -o yaml
----
+
--
.Example output
[source,yaml]
----
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> # <1>
name: <infrastructure_id>-<role>-<availability_zone> # <2>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<availability_zone>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <role>
machine.openshift.io/cluster-api-machine-type: <role>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<availability_zone>
spec:
providerSpec: # <3>
# ...
----
<1> The cluster infrastructure ID.
<2> A default node label. For AWS Outposts, you use the `outposts` role.
<3> The omitted `providerSpec` section includes values that must be configured for your Outpost.
--
. Configure the new compute machine set to create edge compute machines in the Outpost by editing the `<new_machine_set_name_1>.yaml` file:
+
--
.Example compute machine set for AWS Outposts
[source,yaml]
----
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> # <1>
name: <infrastructure_id>-outposts-<availability_zone> # <2>
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-outposts-<availability_zone>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: outposts
machine.openshift.io/cluster-api-machine-type: outposts
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-outposts-<availability_zone>
spec:
metadata:
labels:
node-role.kubernetes.io/outposts: ""
location: outposts
providerSpec:
value:
ami:
id: <ami_id> # <3>
apiVersion: machine.openshift.io/v1beta1
blockDevices:
- ebs:
volumeSize: 120
volumeType: gp2 # <4>
credentialsSecret:
name: aws-cloud-credentials
deviceIndex: 0
iamInstanceProfile:
id: <infrastructure_id>-worker-profile
instanceType: m5.xlarge # <5>
kind: AWSMachineProviderConfig
placement:
availabilityZone: <availability_zone>
region: <region> # <6>
securityGroups:
- filters:
- name: tag:Name
values:
- <infrastructure_id>-worker-sg
subnet:
id: <subnet_id> # <7>
tags:
- name: kubernetes.io/cluster/<infrastructure_id>
value: owned
userDataSecret:
name: worker-user-data
taints: # <8>
- key: node-role.kubernetes.io/outposts
effect: NoSchedule
----
<1> Specifies the cluster infrastructure ID.
<2> Specifies the name of the compute machine set. The name is composed of the cluster infrastructure ID, the `outposts` role name, and the Outpost availability zone.
<3> Specifies the Amazon Machine Image (AMI) ID.
<4> Specifies the EBS volume type. AWS Outposts requires gp2 volumes.
<5> Specifies the AWS instance type. You must use an instance type that is configured in your Outpost.
<6> Specifies the AWS region in which the Outpost availability zone exists.
<7> Specifies the dedicated subnet for your Outpost.
<8> Specifies a taint to prevent workloads from being scheduled on nodes that have the `node-role.kubernetes.io/outposts` label. To schedule user workloads in the Outpost, you must specify a corresponding toleration in the `Deployment` resource for your application.
--
. Save your changes.
. Create a compute machine set CR by running the following command:
+
[source,terminal]
----
$ oc create -f <new_machine_set_name_1>.yaml
----
.Verification
* To verify that the compute machine set is created, list the compute machine sets in your cluster by running the following command:
+
[source,terminal]
----
$ oc get machinesets.machine.openshift.io -n openshift-machine-api
----
+
.Example output
[source,text]
----
NAME DESIRED CURRENT READY AVAILABLE AGE
<new_machine_set_name_1> 1 1 1 1 4m12s
<original_machine_set_name_1> 1 1 1 1 55m
<original_machine_set_name_2> 1 1 1 1 55m
----
* To list the machines that are managed by the new compute machine set, run the following command:
+
[source,terminal]
----
$ oc get -n openshift-machine-api machines.machine.openshift.io \
-l machine.openshift.io/cluster-api-machineset=<new_machine_set_name_1>
----
+
.Example output
[source,text]
----
NAME PHASE TYPE REGION ZONE AGE
<machine_from_new_1> Provisioned m5.xlarge us-east-1 us-east-1a 25s
<machine_from_new_2> Provisioning m5.xlarge us-east-1 us-east-1a 25s
----
* To verify that a machine created by the new compute machine set has the correct configuration, examine the relevant fields in the CR for one of the new machines by running the following command:
+
[source,terminal]
----
$ oc describe machine <machine_from_new_1> -n openshift-machine-api
----