Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
39 changes: 22 additions & 17 deletions modules/machineset-creating.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ endif::[]
[id="machineset-creating_{context}"]
= Creating a compute machine set

[role="_abstract"]
In addition to the compute machine sets created by the installation program, you can create your own to dynamically manage the machine compute resources for specific workloads of your choice.

ifdef::vsphere[]
Expand Down Expand Up @@ -111,8 +112,8 @@ apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> <1>
name: <infrastructure_id>-<role> <2>
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
name: <infrastructure_id>-<role>
namespace: openshift-machine-api
spec:
replicas: 1
Expand All @@ -128,17 +129,20 @@ spec:
machine.openshift.io/cluster-api-machine-type: <role>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
spec:
providerSpec: <3>
providerSpec:
...
----
<1> The cluster infrastructure ID.
<2> A default node label.
where:

`<infrastructure_id>`:: Specifies the cluster infrastructure ID.
`<infrastructure_id>_<role>`:: Specifies a default node label.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tiny typo

Suggested change
`<infrastructure_id>_<role>`:: Specifies a default node label.
`<infrastructure_id>-<role>`:: Specifies a default node label.

+
[NOTE]
====
For clusters that have user-provisioned infrastructure, a compute machine set can only create `worker` and `infra` type machines.
====
<3> The values in the `<providerSpec>` section of the compute machine set CR are platform-specific. For more information about `<providerSpec>` parameters in the CR, see the sample compute machine set CR configuration for your provider.
+
The values in the `<providerSpec>` section of the compute machine set CR are platform-specific. For more information about `<providerSpec>` parameters in the CR, see the sample compute machine set CR configuration for your provider.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix my egregious mistake 😛

Suggested change
The values in the `<providerSpec>` section of the compute machine set CR are platform-specific. For more information about `<providerSpec>` parameters in the CR, see the sample compute machine set CR configuration for your provider.
The values in the `spec.template.spec.providerSpec` section of the compute machine set CR are platform-specific. For more information about `providerSpec` parameters in the CR, see the sample compute machine set CR configuration for your provider.

I think you can get away with only using the path once, but it's not a replaceable value and idk why I did that

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you might want this to indent one over to the left - if so, use an open block to accomplish that

--

ifdef::vsphere[]
Expand All @@ -157,8 +161,8 @@ template:
value:
apiVersion: machine.openshift.io/v1beta1
credentialsSecret:
name: vsphere-cloud-credentials <1>
dataDisks: <2>
name: <secret_name>
dataDisks:
- name: <disk_name>
provisioningMode: <mode>
sizeGiB: 10
Expand All @@ -171,22 +175,23 @@ template:
numCPUs: 4
numCoresPerSocket: 4
snapshot: ""
template: <vm_template_name> <3>
template: <vm_template_name>
userDataSecret:
name: worker-user-data <4>
name: <ignition_secret>
workspace:
datacenter: <vcenter_data_center_name>
datastore: <vcenter_datastore_name>
folder: <vcenter_vm_folder_path>
resourcepool: <vsphere_resource_pool>
server: <vcenter_server_address> <5>
server: <vcenter_server_address>
----
<1> The name of the secret in the `openshift-machine-api` namespace that contains the required vCenter credentials.
<2> The collection of data disk definitions.
For more information, see "Configuring data disks by using machine sets".
<3> The name of the {op-system} VM template for your cluster that was created during installation.
<4> The name of the secret in the `openshift-machine-api` namespace that contains the required Ignition configuration credentials.
<5> The IP address or fully qualified domain name (FQDN) of the vCenter server.
where:

`<secret_name>`:: Specifies the name of the secret in the `openshift-machine-api` namespace that contains the required vCenter credentials.
`dataDisks`:: Specifies the collection of data disk definitions. For more information, see "Configuring data disks by using machine sets".
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is an outlier. I don't see a good way to make it into a user-replaced value, and I think it would be unfortunate for readability to swap the rest over to YAML field paths. WDYT about moving the contents of this one to a note at the end of the list like I think I mentioned on another PR with a similar snag?

`<vm_template_name>`:: Specifies the name of the {op-system} VM template for your cluster that was created during installation.
`<ignition_secret>`:: Specifies the name of the secret in the `openshift-machine-api` namespace that contains the required Ignition configuration credentials.
`<vcenter_server_address>`:: Specifies the IP address or fully qualified domain name (FQDN) of the vCenter server.
endif::vsphere[]

. Create a `MachineSet` CR by running the following command:
Expand Down
100 changes: 52 additions & 48 deletions modules/machineset-yaml-aws.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ endif::[]

:_mod-docs-content-type: REFERENCE
[id="machineset-yaml-aws_{context}"]
= Sample YAML for a compute machine set custom resource on AWS
= Sample YAML for a compute machine set custom resource on AWS

[role="_abstract"]
ifndef::edge[]
The sample YAML defines a compute machine set that runs in the `us-east-1a` Amazon Web Services (AWS) Local Zone and creates nodes that are labeled with
endif::edge[]
Expand All @@ -29,6 +30,8 @@ This sample YAML defines a compute machine set that runs in the `us-east-1-nyc-1
[NOTE]
====
If you want to reference the sample YAML file in the context of Wavelength Zones, ensure that you replace the AWS Region and zone information with supported Wavelength Zone values.
Machine sets running on AWS support non-guaranteed Spot Instances. You can save on costs by using Spot Instances at a lower price compared to
On-Demand Instances on AWS. You can configure Spot Instances by adding `spotMarketOptions` to the `MachineSet` YAML file.
Comment on lines +33 to +34
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is conditioned for edge, but these lines came from the infra docs. It also applies to the standard machine set.

For a standard machine set, the non-guaranteed instance type docs are in the same assembly, but for the infra machine set docs, we do need to make sure there are still links to the content as they were in e.g.

Machine sets running on AWS support non-guaranteed xref:../machine_management/creating_machinesets/creating-machineset-aws.adoc#machineset-non-guaranteed-instance_creating-machineset-aws[Spot Instances]. You can save on costs by using Spot Instances at a lower price compared to
On-Demand Instances on AWS. xref:../machine_management/creating_machinesets/creating-machineset-aws.adoc#machineset-creating-non-guaranteed-instance_creating-machineset-aws[Configure Spot Instances] by adding `spotMarketOptions` to the `MachineSet` YAML file.

So, I think probably:

  • move this into the infra version of the body
  • it doesn't need to be a note - it's just a config option that we chose to mention for infra machine sets
  • add docs titles so that users know what they are looking for
  • add those docs links in an AR section under the modules
Machine sets running on AWS support non-guaranteed Spot Instances. You can save on costs by using Spot Instances at a lower price compared to On-Demand Instances on AWS. For more information, see "Machine sets that deploy machines as Spot Instances".

...

.Additional resources

* xref:../machine_management/creating_machinesets/creating-machineset-aws.adoc#machineset-non-guaranteed-instance_creating-machineset-aws[Machine sets that deploy machines as Spot Instances]

It might make more sense to do this in #105997

====
endif::[]

Expand All @@ -44,69 +47,69 @@ apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id> <1>
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
ifndef::infra,edge[]
name: <infrastructure_id>-<role>-<zone> <2>
name: <infrastructure_id>-<role>-<zone>
endif::infra,edge[]
ifdef::infra[]
name: <infrastructure_id>-infra-<zone> <2>
name: <infrastructure_id>-infra-<zone>
endif::infra[]
ifdef::edge[]
name: <infrastructure_id>-edge-<zone> <2>
name: <infrastructure_id>-edge-<zone>
endif::edge[]
namespace: openshift-machine-api
spec:
replicas: 1
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
ifdef::edge[]
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-edge-<zone>
endif::edge[]
ifndef::infra,edge[]
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
endif::infra,edge[]
ifdef::infra[]
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<zone>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<zone>
endif::infra[]
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
ifndef::infra,edge[]
machine.openshift.io/cluster-api-machine-role: <role> <3>
machine.openshift.io/cluster-api-machine-type: <role>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
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>-<zone>
endif::infra,edge[]
ifdef::infra[]
machine.openshift.io/cluster-api-machine-role: infra <3>
machine.openshift.io/cluster-api-machine-type: infra
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<zone>
machine.openshift.io/cluster-api-machine-role: infra
machine.openshift.io/cluster-api-machine-type: infra
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-infra-<zone>
endif::infra[]
ifdef::edge[]
machine.openshift.io/cluster-api-machine-role: edge <3>
machine.openshift.io/cluster-api-machine-type: edge
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-edge-<zone>
machine.openshift.io/cluster-api-machine-role: edge
machine.openshift.io/cluster-api-machine-type: edge
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-edge-<zone>
endif::edge[]
spec:
metadata:
labels:
ifndef::infra,edge[]
node-role.kubernetes.io/<role>: ""
node-role.kubernetes.io/<role>: ""
endif::infra,edge[]
ifdef::infra[]
node-role.kubernetes.io/infra: ""
node-role.kubernetes.io/infra: ""
endif::infra[]
ifdef::edge[]
machine.openshift.io/parent-zone-name: <value_of_ParentZoneName>
machine.openshift.io/zone-group: <value_of_GroupName>
machine.openshift.io/zone-type: <value_of_ZoneType>
node-role.kubernetes.io/edge: ""
node-role.kubernetes.io/edge: ""
endif::edge[]
providerSpec:
value:
ami:
id: ami-046fe691f52a953f9 <4>
id: <ami_id>
apiVersion: machine.openshift.io/v1beta1
blockDevices:
- ebs:
Expand All @@ -117,12 +120,12 @@ endif::edge[]
name: aws-cloud-credentials
deviceIndex: 0
iamInstanceProfile:
id: <infrastructure_id>-worker-profile
id: <infrastructure_id>-worker-profile
instanceType: m6i.large
kind: AWSMachineProviderConfig
placement:
availabilityZone: <zone> <5>
region: <region> <6>
availabilityZone: <zone>
region: <region>
securityGroups:
- filters:
- name: tag:Name
Expand All @@ -137,21 +140,21 @@ ifndef::edge[]
filters:
- name: tag:Name
values:
- <infrastructure_id>-private-<zone> <7>
- <infrastructure_id>-private-<zone>
endif::edge[]
ifdef::edge[]
id: <value_of_PublicSubnetIds> <7>
id: <value_of_PublicSubnetIds>
publicIp: true
endif::edge[]
tags:
- name: kubernetes.io/cluster/<infrastructure_id>
- name: kubernetes.io/cluster/<infrastructure_id>
value: owned
- name: <custom_tag_name> <8>
value: <custom_tag_value>
- name: <custom_tag_name>
value: <custom_tag_value>
userDataSecret:
name: worker-user-data
ifdef::infra,edge[]
taints: <9>
taints:
ifdef::infra[]
- key: node-role.kubernetes.io/infra
endif::infra[]
Expand All @@ -161,26 +164,27 @@ endif::edge[]
effect: NoSchedule
endif::infra,edge[]
----
<1> Specify the infrastructure ID that is based on the cluster ID that you set when you provisioned the cluster. If you have the OpenShift CLI installed, you can obtain the infrastructure ID by running the following command:
where:

`<infrastructure_id>`:: Specifies the infrastructure ID that is based on the cluster ID that you set when you provisioned the cluster. If you have the OpenShift CLI installed, you can obtain the infrastructure ID by running the following command:
+
[source,terminal]
----
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
----
ifndef::infra,edge[]
<2> Specify the infrastructure ID, role node label, and zone.
<3> Specify the role node label to add.
`<infrastructure_id>-role-<zone>`:: Specifies the infrastructure ID, role node label, and zone.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`<infrastructure_id>-role-<zone>`:: Specifies the infrastructure ID, role node label, and zone.
`<infrastructure_id>-<role>-<zone>`:: Specifies the infrastructure ID, role node label, and zone.

`<role>`:: Specifies the role node label to add.
endif::infra,edge[]
ifdef::infra[]
<2> Specify the infrastructure ID, `infra` role node label, and zone.
<3> Specify the `infra` role node label.
`<infrastructure_id>-infra-<zone>`:: Specifies the infrastructure ID, `infra` role node label, and zone.
`machine.openshift.io/cluster-api-machine-type`:: Requires the `infra` role node label.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Andrea has some good suggestions for a similar one in here
https://redhat-internal.slack.com/archives/C06RCV37WTV/p1772119436618659

endif::infra[]
ifdef::edge[]
<2> Specify the infrastructure ID, `edge` role node label, and zone name.
<3> Specify the `edge` role node label.
`<infrastructure_id>-edge-<zone>`:: Specifies the infrastructure ID, `edge` role node label, and zone.
`machine.openshift.io/cluster-api-machine-type`:: Requires the `edge` role node label.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar as above

endif::edge[]
<4> Specify a valid {op-system-first} Amazon
Machine Image (AMI) for your AWS zone for your {product-title} nodes. If you want to use an AWS Marketplace image, you must complete the {product-title} subscription from the link:https://aws.amazon.com/marketplace/fulfillment?productId=59ead7de-2540-4653-a8b0-fa7926d5c845[AWS Marketplace] to obtain an AMI ID for your region.
`<ami_id>`:: Specifies a valid {op-system-first} Amazon Machine Image (AMI) for your AWS zone for your {product-title} nodes. If you want to use an AWS Marketplace image, you must complete the {product-title} subscription from the link:https://aws.amazon.com/marketplace/fulfillment?productId=59ead7de-2540-4653-a8b0-fa7926d5c845[AWS Marketplace] to obtain an AMI ID for your region.
+
[source,terminal]
----
Expand All @@ -189,26 +193,26 @@ $ oc -n openshift-machine-api \
get machineset/<infrastructure_id>-<role>-<zone>
----
ifndef::edge[]
<5> Specify the zone name, for example, `us-east-1a`.
`<zone>`:: Specifies the zone name, for example, `us-east-1a`.
endif::edge[]
ifdef::edge[]
<5> Specify the zone name, for example, `us-east-1-nyc-1a`.
endif::edge[]
<6> Specify the region, for example, `us-east-1`.
`<zone>`:: Specifies the zone name, for example, `us-east-1-nyc-1a`.
endif::edge[]
`<region>`:: Specifies the region, for example, `us-east-1`.
ifndef::edge[]
<7> Specify the infrastructure ID and zone.
`<infrastructure_id>-private-<zone>`:: Specifies the infrastructure ID and zone, with the string `-private-` between them.
endif::edge[]
ifdef::edge[]
<7> The ID of the public subnet that you created in AWS {zone-type}. You created this public subnet ID when you finished the procedure for "Creating a subnet in an AWS zone".
`<value_of_PublicSubnetIds>`:: Specifies the ID of the public subnet that you created in AWS {zone-type}. You created this public subnet ID when you finished the procedure for "Creating a subnet in an AWS zone".
endif::edge[]
<8> Optional: Specify custom tag data for your cluster. For example, you might add an admin contact email address by specifying a `name:value` pair of `Email:\admin-email@example.com`.
`<custom_tag_name>`:: Optional: Specifies custom tag data for your cluster. For example, you might add an admin contact email address by specifying a `name:value` pair of `Email:\admin-email@example.com`.
+
[NOTE]
====
Custom tags can also be specified during installation in the `install-config.yml` file. If the `install-config.yml` file and the machine set include a tag with the same `name` data, the value for the tag from the machine set takes priority over the value for the tag in the `install-config.yml` file.
====
ifdef::infra,edge[]
<9> Specify a taint to prevent user workloads from being scheduled on
`<taints>`:: Specifies a taint to prevent user workloads from being scheduled on
ifdef::infra[`infra`]
ifdef::edge[`edge`]
nodes.
Expand Down
Loading