Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -13,39 +13,44 @@ function SecureClusterUsingOperator({
return (
<Flex direction={{ default: 'column' }}>
<p>
You can install secured cluster services on your clusters by using the{' '}
You can install secured cluster services on your clusters using the{' '}
<strong>SecuredCluster</strong> custom resource.
</p>
<Title headingLevel={subHeadingLevel}>Prerequisites</Title>
<List component="ul">
<ListItem>
<p>
In the RHACS web portal, you have created a cluster registration secret and
downloaded the YAML file for the cluster registration secret.
downloaded its YAML file.
</p>
</ListItem>
<ListItem>
<p>You have installed the RHACS Operator on the cluster you are securing.</p>
<p>
In the Red Hat OpenShift Container Platform web console on the cluster that
you are securing, you have installed the RHACS Operator.
</p>
<p>
For Operator installation, create a new Red Hat OpenShift Container Platform
project. <strong>rhacs-operator</strong> is a good name choice.
For Operator installation, create a new project or namespace.{' '}
<strong>rhacs-operator</strong> is a good name choice.
</p>
<p>To install the RHACS Operator:</p>
<List component="ul">
<ListItem>
On Red Hat OpenShift Container Platform, use{' '}
<strong>Operators &gt; OperatorHub</strong> in the web console.
</ListItem>
<ListItem>
On other platforms, apply an image pull secret and use the{' '}
<strong>rhacs-operator</strong> Helm chart.
</ListItem>
</List>
</ListItem>
<ListItem>
<p>Apply the cluster registration secret on the secured cluster. </p>
<p>
Perform one of the following tasks to apply the cluster registration
secrets:
</p>
<p>Apply the cluster registration secret on the secured cluster.</p>
<p>Apply it using one of the following methods:</p>
<List component="ul">
<ListItem>
<p>
In the OpenShift Container Platform web console on the cluster that
you are securing, in the top menu, click <strong>+</strong> to open
the <strong>Import YAML</strong> page.
On an OpenShift cluster, in the OpenShift Container Platform web
console, in the top menu, click <strong>+</strong> to open the{' '}
<strong>Import YAML</strong> page.
</p>
<p>
You can drag the cluster registration secret file or copy and paste
Expand All @@ -55,20 +60,26 @@ function SecureClusterUsingOperator({
</ListItem>
<ListItem>
<p>
On the cluster that you are securing, using the Red Hat OpenShift
CLI, run a command similar to the following:
On an OpenShift cluster: using the <strong>oc</strong> CLI, run a
command similar to the following:
</p>
<ClipboardCopy>
oc create -f cluster-registration-secret.yaml -n stackrox
oc create -f &lt;cluster-registration-secret-file&gt;.yaml -n stackrox
</ClipboardCopy>
</ListItem>
<ListItem>
<p>
On other clusters: using the <strong>kubectl</strong> CLI, run a
command similar to the following:
</p>
<ClipboardCopy>
kubectl create -f &lt;cluster-registration-secret-file&gt;.yaml -n stackrox
</ClipboardCopy>
</ListItem>
</List>
</ListItem>
<ListItem>
<p>
On the cluster that you are securing, install secured cluster services using
the RHACS Operator.
</p>
<p>Install secured cluster services on the cluster using the RHACS Operator.</p>
</ListItem>
</List>
</Flex>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,16 @@ const validationSchema: yup.ObjectSchema<InitBundleFormValues> = yup.object().sh
'Name can have only the following characters: letters, digits, period, underscore, hyphen (but no spaces)'
)
.required('Bundle name is required'),
installation: yup.string().trim().required(), // Select
platform: yup.string().trim().required(), // Radio
installation: yup
.string<InstallationKey>()
.trim()
.oneOf(Object.keys(installationOptions) as InstallationKey[])
.required(),
platform: yup
.string<PlatformKey>()
.trim()
.oneOf(Object.keys(platformOptions) as PlatformKey[])
.required(),
});

function InitBundleForm(): ReactElement {
Expand All @@ -68,7 +76,6 @@ function InitBundleForm(): ReactElement {
isSubmitting,
isValid,
setFieldValue,
setValues,
submitForm,
touched,
values,
Expand Down Expand Up @@ -103,12 +110,8 @@ function InitBundleForm(): ReactElement {
return setFieldValue(event.target.id, value);
}

function onChangePlatform(value) {
return setValues({
installation: value === 'OpenShift' ? 'Operator' : 'Helm',
name: values.name, // redundant but function requires all values
platform: value,
});
function onChangePlatform(value: string) {
return setFieldValue('platform', value);
}

function onSelectInstallation(_id: string, value: string) {
Expand Down Expand Up @@ -171,21 +174,16 @@ function InitBundleForm(): ReactElement {
id="installation"
value={values.installation}
handleSelect={onSelectInstallation}
isDisabled={values.platform !== 'OpenShift'}
toggleAriaLabel="Installation method menu toggle"
aria-label="Select an installation method"
>
{Object.entries(installationOptions)
.filter(
([installationKey]) =>
values.platform === 'OpenShift' ||
installationKey !== 'Operator'
)
.map(([installationKey, installationLabel]) => (
{Object.entries(installationOptions).map(
([installationKey, installationLabel]) => (
<SelectOption key={installationKey} value={installationKey}>
{installationLabel}
</SelectOption>
))}
)
)}
</SelectSingle>
<FormHelperText>
<HelperText>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import FileSaver from 'file-saver';

import type { GenerateClusterInitBundleResponse } from 'services/ClustersService';

export const installationOptions: Record<string, string> = {
export const installationOptions = {
Operator: 'Operator (recommended)',
Helm: 'Helm chart',
} as const;

export type InstallationKey = keyof typeof installationOptions;

export const platformOptions: Record<string, string> = {
export const platformOptions = {
OpenShift: 'OpenShift',
EKS: 'EKS',
AKS: 'AKS',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function SecureClusterUsingOperator({
return (
<Flex direction={{ default: 'column' }}>
<Title headingLevel={headingLevel}>
Secure a cluster using Operator installation method
Secure a cluster using the Operator installation method
</Title>
{version && (
<>
Expand All @@ -32,6 +32,7 @@ function SecureClusterUsingOperator({
rel="noopener noreferrer"
>
Generating and applying an init bundle for RHACS on Red Hat OpenShift
(OpenShift)
</a>
</ExternalLink>
<ExternalLink>
Expand All @@ -43,42 +44,51 @@ function SecureClusterUsingOperator({
target="_blank"
rel="noopener noreferrer"
>
Installing RHACS on secured clusters by using the Operator
Installing RHACS on secured clusters by using the Operator (OpenShift)
</a>
</ExternalLink>
{/* TODO ROX-33550: Add non-OpenShift operator documentation links when available */}
</>
)}
<p>
You can install secured cluster services on your clusters by using the{' '}
You can install secured cluster services on your clusters using the{' '}
<strong>SecuredCluster</strong> custom resource.
</p>
<Title headingLevel={subHeadingLevel}>Prerequisites</Title>
<List component="ul">
<ListItem>
<p>
In the RHACS web portal, you have created an init bundle and downloaded the
YAML file for the init bundle.
In the RHACS web portal, you have created an init bundle and downloaded its
YAML file.
</p>
</ListItem>
<ListItem>
<p>You have installed the RHACS Operator on the cluster you are securing.</p>
Copy link
Contributor Author

@sachaudh sachaudh Mar 17, 2026

Choose a reason for hiding this comment

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

@porridge, I changed this from the suggested: "In the cluster that you are securing, you have installed the RHACS Operator". This puts the action first and tacks on the location as a simple prepositional phrase at the end, which feels more direct.

I see that we use fronted prepositional phrases with a relative clause in a few other areas, too. Your suggestion probably followed the same pattern, but I wonder if we should keep this to make it clearer.

@mansursyed @zhenpesky, this might be relevant for you both, too.

<p>
In the Red Hat OpenShift Container Platform web console on the cluster that
you are securing, you have installed the RHACS Operator.
</p>
<p>
For Operator installation, create a new Red Hat OpenShift Container Platform
project. <strong>rhacs-operator</strong> is a good name choice.
For Operator installation, create a new project or namespace.{' '}
<strong>rhacs-operator</strong> is a good name choice.
</p>
<p>To install the RHACS Operator:</p>
<List component="ul">
<ListItem>
On Red Hat OpenShift Container Platform, use{' '}
<strong>Operators &gt; OperatorHub</strong> in the web console.
</ListItem>
<ListItem>
On other platforms, apply an image pull secret and use the{' '}
<strong>rhacs-operator</strong> Helm chart.
</ListItem>
</List>
</ListItem>
</List>
<Title headingLevel={subHeadingLevel}>Repeat for each secured cluster</Title>
<List component="ol">
<ListItem>
<p>Apply the init bundle on the secured cluster. </p>
<p>Apply the init bundle on the secured cluster.</p>
<p>
Applying the init bundle creates the secrets and resources that the secured
cluster needs to communicate with RHACS. Perform one of the following tasks
to apply the init bundle:
cluster needs to communicate with RHACS. Apply it using one of the following
methods:
</p>
{version && (
<ExternalLink>
Expand All @@ -97,9 +107,9 @@ function SecureClusterUsingOperator({
<List component="ul">
<ListItem>
<p>
In the OpenShift Container Platform web console on the cluster that
you are securing, in the top menu, click <strong>+</strong> to open
the <strong>Import YAML</strong> page.
On an OpenShift cluster, in the OpenShift Container Platform web
console, in the top menu, click <strong>+</strong> to open the{' '}
<strong>Import YAML</strong> page.
</p>
<p>
You can drag the init bundle file or copy and paste its contents
Expand All @@ -108,21 +118,26 @@ function SecureClusterUsingOperator({
</ListItem>
<ListItem>
<p>
On the cluster that you are securing, using the Red Hat OpenShift
CLI, run a command similar to the following:
On an OpenShift cluster: using the <strong>oc</strong> CLI, run a
command similar to the following:
</p>
<ClipboardCopy>
oc create -f name-Operator-secrets-cluster-init-bundle.yaml -n
stackrox
oc create -f &lt;init-bundle-file&gt;.yaml -n stackrox
</ClipboardCopy>
</ListItem>
<ListItem>
<p>
On other clusters: using the <strong>kubectl</strong> CLI, run a
command similar to the following:
</p>
<ClipboardCopy>
kubectl create -f &lt;init-bundle-file&gt;.yaml -n stackrox
</ClipboardCopy>
</ListItem>
</List>
</ListItem>
<ListItem>
<p>
On the cluster that you are securing, install secured cluster services using
the RHACS Operator.
</p>
<p>Install secured cluster services on the cluster using the RHACS Operator.</p>
</ListItem>
</List>
</Flex>
Expand Down
Loading