Chapter 2. Create a cluster on Google Cloud with Workload Identity Federation authentication
As a system administrator or cloud engineer, you can provision an OpenShift Dedicated cluster on Google Cloud using Workload Identity Federation (WIF). This feature establishes a trust relationship that allows your cluster’s control plane and workloads to securely assume the necessary Google Cloud roles and access required services. This approach eliminates the security risk and operational overhead associated with managing and rotating long-lived Google Cloud service account keys.
2.1. Prerequisites Copy linkLink copied to clipboard!
- You have confirmed your Google Cloud account has the necessary resource quotas and limits to support your desired cluster size according to the cluster resource requirements. For more information regarding resource quotas and limits, see Additional resources.
- You have reviewed the introduction to OpenShift Dedicated and the documentation on architecture concepts.
- You have reviewed the OpenShift Dedicated cloud deployment options.
- You have read and completed the Required customer procedure.
You have downloaded the latest version of the OpenShift Cluster Manager CLI (
ocm) for your operating system from the Downloads page on OpenShift Cluster Manager.ImportantThe
ocmis a Developer Preview feature only. For more information about the support scope of Red Hat Developer Preview features, see Developer Preview Support Scope.- You have created a Workload Identity Federation configuration. For more information, see Create a Workload Identity Federation configuration.
WIF supports the deployment of a private OpenShift Dedicated on Google Cloud cluster with Private Service Connect (PSC). Red Hat recommends using PSC when deploying private clusters. For more information about the prerequisites for PSC, see Prerequisites for Private Service Connect.
2.2. Workload Identity Federation Copy linkLink copied to clipboard!
Workload Identity Federation (WIF) is a Google Cloud Identity and Access Management (IAM) feature that provides third parties a secure method to access resources on a customer’s cloud account. WIF eliminates the need for service account keys, and is Google Cloud’s preferred method of credential authentication.
While service account keys can provide powerful access to your Google Cloud resources, they must be maintained by the user and can be a security risk if they are not managed properly. WIF does not use service keys as an access method for your Google Cloud resources. Instead, WIF grants access by using credentials from external identity providers to generate short-lived credentials for workloads. The workloads can then use these credentials to temporarily impersonate service accounts and access Google Cloud resources. This removes the burden of having to properly maintain service account keys, and removes the risk of unauthorized users gaining access to service account keys.
The following bulleted items provide a basic overview of the Workload Identity Federation process:
- The owner of the Google Cloud project configures a workload identity pool with an identity provider, allowing OpenShift Dedicated to access the project’s associated service accounts using short-lived credentials.
- This workload identity pool is configured to authenticate requests using an Identity Provider (IdP) that the user defines.
- For applications to get access to cloud resources, they first pass credentials to Google’s Security Token Service (STS). STS uses the specified identity provider to verify the credentials.
- Once the credentials are verified, STS returns a temporary access token to the caller, giving the application the ability to impersonate the service account bound to that identity.
Operators also need access to cloud resources. By using WIF instead of service account keys to grant this access, cluster security is further strengthened, as service account keys are no longer stored in the cluster. Instead, operators are given temporary access tokens that impersonate the service accounts. These tokens are short-lived and regularly rotated.
For more information about Workload Identity Federation, see the Google Cloud documentation.
Workload Identity Federation (WIF) is only available on OpenShift Dedicated version 4.17 and later, and is only supported by the Customer Cloud Subscription (CCS) infrastructure type.
2.3. Create a Workload Identity Federation configuration Copy linkLink copied to clipboard!
You can create a Workload Identity Federation (WIF) configuration using the auto mode or the manual mode in the ocm CLI.
In auto mode, the service accounts for OpenShift Dedicated components and other IAM resources are created automatically.
You can also use the manual mode, where a script.sh file has commands that you use to manually create the service accounts for OpenShift Dedicated components and other IAM resources.
Procedure
Based on your mode preference, run one of the following commands to create a WIF configuration:
Create a WIF configuration in auto mode by running the following command, replacing
<wif_name>with the name of your WIF configuration and<gcp_project_id>with the ID of the Google Cloud project where the WIF configuration is implemented:$ ocm gcp create wif-config --name <wif_name> \ --project <gcp_project_id> \ --version <osd_version> \ --federated-project <gcp_project_id>where:
--wif_name- Specifies the name of the WIF configuration. The name must be unique within your Google Cloud project.
--project- Specifies the ID of the Google Cloud project where the WIF configuration will be implemented.
--version- Optional. Specifies the desired OpenShift Dedicated version the wif-config will need to support. If you do not specify a version, the wif-config will support the latest OpenShift Dedicated y-stream version as well as the last three supported OpenShift Dedicated y-stream versions (beginning with version 4.17).
--federated-project-
Optional. Specifies the ID of the dedicated project where the workload identity pools and providers will be created and managed. If this flag is not specified, the workload identity pools and providers will be created and managed in the project specified by the
--projectflag.
ImportantUsing a dedicated project to create and manage workload identity pools and providers is recommended by Google Cloud. Using a dedicated project helps you to establish centralized governance over the configuration of workload identity pools and providers, enforce uniform attribute mappings and conditions throughout all projects and applications, and ensure that only authorized identity providers can authenticate with WIF.
Creating and managing workload identity pools and providers in a dedicated project is only allowed during initial WIF configuration creation. The
--federated-projectflag cannot be applied to existingwif-configs.For more information, see Use a dedicated project to manage workload identity pools and providers.
Example output
2026/09/26 13:05:41 Creating workload identity configuration... 2026/09/26 13:05:47 Workload identity pool created with name 2e1kcps6jtgla8818vqs8tbjjls4oeub 2026/09/26 13:05:47 workload identity provider created with name oidc 2026/09/26 13:05:48 IAM service account osd-worker-oeub created 2026/09/26 13:05:49 IAM service account osd-control-plane-oeub created 2026/09/26 13:05:49 IAM service account openshift-gcp-ccm-oeub created 2026/09/26 13:05:50 IAM service account openshift-gcp-pd-csi-driv-oeub created 2026/09/26 13:05:50 IAM service account openshift-image-registry-oeub created 2026/09/26 13:05:51 IAM service account openshift-machine-api-gcp-oeub created 2026/09/26 13:05:51 IAM service account osd-deployer-oeub created 2026/09/26 13:05:52 IAM service account cloud-credential-operator-oeub created 2026/09/26 13:05:52 IAM service account openshift-cloud-network-c-oeub created 2026/09/26 13:05:53 IAM service account openshift-ingress-gcp-oeub created 2026/09/26 13:05:55 Role "osd_deployer_v4.22" updatedCreate a WIF configuration in manual mode by running the following command, replacing
<wif_name>with the name of your WIF configuration and<gcp_project_id>with the ID of the Google Cloud project where the WIF configuration is implemented:$ ocm gcp create wif-config --name <wif_name> \ --project <gcp_project_id> \ --mode=manualwhere:
--wif_name- Specifies the name of the WIF configuration. The name must be unique within your Google Cloud project.
--project- Specifies the ID of the Google Cloud project where the WIF configuration will be implemented.
--mode=manualSpecifies that the WIF configuration is created in manual mode. In this mode, a
script.shfile is generated that contains commands to manually create the service accounts for OpenShift Dedicated components and other IAM resources.Once the WIF is configured, the following service accounts, roles, and groups are created.
NoteRed Hat custom roles are versioned with every OpenShift y-stream release, for example 4.22.
Table 2.1. WIF configuration service accounts, group, and roles Service Account/Group Google Cloud predefined roles and Red Hat custom roles osd-deployer
osd_deployer_v<y-stream-version>
osd-control-plane
- compute.instanceAdmin
- compute.networkAdmin
- compute.securityAdmin
- compute.storageAdmin
osd-worker
- compute.storageAdmin
- compute.viewer
cloud-credential-operator-gcp-ro-creds
cloud_credential_operator_gcp_ro_creds_v<y-stream-version>
openshift-cloud-network-config-controller-gcp
openshift_cloud_network_config_controller_gcp_v<y-stream-version>
openshift-gcp-ccm
openshift_gcp_ccm_v<y-stream-version>
openshift-gcp-pd-csi-driver-operator
- compute.storageAdmin
- resourcemanager.tagUser
- openshift_gcp_pd_csi_driver_operator_v<y-stream-version>
openshift-image-registry-gcp
openshift_image_registry_gcs_v<y-stream-version>
openshift-ingress-gcp
openshift_ingress_gcp_v<y-stream-version>
openshift-machine-api-gcp
-
iam.serviceAccountUser (scoped to
osd-workerandosd-control-planeservice accounts) - openshift_machine_api_gcp_v<y-stream-version>
Access via SRE group:sd-sre-platform-gcp-access
sre_managed_support
For the complete list of WIF configuration roles and their assigned permissions, see managed-cluster-config.
2.4. Create a Workload Identity Federation cluster using OpenShift Cluster Manager Copy linkLink copied to clipboard!
Follow the steps in this procedure to create an OpenShift Dedicated cluster on Google Cloud using Workload Identity Federation (WIF) for authentication through the OpenShift Cluster Manager web console.
Prerequisites
- You have created a WIF configuration. For more information, see "Create a Workload Identity Federation configuration".
- You have access to the OpenShift Cluster Manager web console. For more information, see Accessing OpenShift Cluster Manager in the Additional resources section.
Procedure
- Log in to OpenShift Cluster Manager and click Create cluster on the OpenShift Dedicated card.
Under Billing model, configure the subscription type and infrastructure type.
- Select a subscription type. For information about OpenShift Dedicated subscription options, see Cluster subscriptions and registration in the OpenShift Cluster Manager documentation.
- Select the Customer cloud subscription infrastructure type.
- Click Next.
- Select Run on Google Cloud.
Select Workload Identity Federation as the Authentication type.
NoteWorkload Identity Federation (WIF) is Google Cloud’s recommended method of authentication for OpenShift Dedicated installation. It greatly improves a cluster’s resilience by using short-lived, least-privilege credentials and eliminates the need for static service account keys.
- Read and complete all the required prerequisites.
- Click the checkbox indicating that you have read and completed all the required prerequisites.
- Select a configured WIF configuration from the WIF configuration drop-down list.
- Click Next.
On the Details page, provide a name for your cluster and specify the cluster details:
- In the Cluster name field, enter a name for your cluster.
Optional: Cluster creation generates a domain prefix as a subdomain for your provisioned cluster on
openshiftapps.com. If the cluster name is less than or equal to 15 characters, that name is used for the domain prefix. If the cluster name is longer than 15 characters, the domain prefix is randomly generated as a 15-character string.To customize the subdomain prefix, select the Create custom domain prefix checkbox, and enter your domain prefix name in the Domain prefix field. The domain prefix cannot be longer than 15 characters, must be unique within your organization, and cannot be changed after cluster creation. If you plan to install the cluster into a Shared VPC and select a managed DNS zone in a later step, the DNS Zone list is filtered to show only zones that begin with this domain prefix; ensure the prefix matches the managed DNS zones you have created or intend to use.
Select a cluster version from the Version drop-down menu.
NoteWorkload Identity Federation (WIF) is only supported on OpenShift Dedicated version 4.17 and later.
Select a channel from the Channel drop-down menu.
NoteChannel options include Stable-4.y (default option), Fast-4.y, and EUS-4.y. For more information about the Stable, Fast, and EUS channel options, see Understanding update channels and releases.
- Select a cloud provider region from the Region drop-down menu.
- Select a Single zone or Multi-zone configuration.
Optional: Select Enable Secure Boot support for Shielded VMs to use Shielded VMs when installing your cluster. Once you create your cluster, the Enable Secure Boot support for Shielded VMs setting cannot be changed. For more information, see Shielded VMs.
ImportantTo successfully create a cluster, you must select Enable Secure Boot support for Shielded VMs if your organization has the policy constraint
constraints/compute.requireShieldedVmenabled. For more information regarding Google Cloud organizational policy constraints, see Organization policy constraints.ImportantEnable Secure Boot support for Shielded VMs is not supported for OpenShift Dedicated on Google Cloud clusters created using bare-metal instance types. For more information, see Limitations in the Google Cloud documentation.
- Leave Enable user workload monitoring selected to monitor your own projects in isolation from Red Hat Site Reliability Engineer (SRE) platform metrics. This option is enabled by default.
Optional: Expand Advanced Encryption to make changes to encryption settings.
- Select Use custom KMS keys to use custom KMS keys. If you prefer not to use custom KMS keys, leave the default setting Use default KMS Keys.
With Use Custom KMS keys selected:
- Select a key ring location from the Key ring location drop-down menu.
- Select a key ring from the Key ring drop-down menu.
- Select a key name from the Key name drop-down menu.
- Provide the KMS Service Account.
Optional: Select Enable FIPS cryptography if you require your cluster to be FIPS validated.
NoteIf Enable FIPS cryptography is selected, Enable additional etcd encryption is enabled by default and cannot be disabled. You can select Enable additional etcd encryption without selecting Enable FIPS cryptography.
Optional: Select Enable additional etcd encryption if you require etcd key value encryption. With this option, the etcd key values are encrypted, but not the keys. This option is in addition to the control plane storage encryption that encrypts the etcd volumes in OpenShift Dedicated clusters by default.
NoteBy enabling etcd encryption for the key values in etcd, you incur a performance overhead of approximately 20%. The overhead is a result of introducing this second layer of encryption, in addition to the default control plane storage encryption that encrypts the etcd volumes. Consider enabling etcd encryption only if you specifically require it for your use case.
- Click Next.
- On the Machine pool page, select a Compute node instance type and a Compute node count. The number and types of nodes that are available depend on your OpenShift Dedicated subscription. If you are using multiple availability zones, the compute node count is per zone.
Optional: Expand Add node labels to add labels to your nodes. Click Add additional label to add more node labels.
ImportantThis step refers to labels within Kubernetes, not Google Cloud. For more information regarding Kubernetes labels, see Labels and Selectors.
- Click Next.
- In the Cluster privacy dialog, select Public or Private to use either public or private API endpoints and application routes for your cluster. If you select Private, Use Private Service Connect is selected by default, and cannot be disabled. Private Service Connect (PSC) is Google Cloud’s security-enhanced networking feature.
Optional: To install the cluster in an existing Google Cloud Virtual Private Cloud (VPC):
Select Install into an existing VPC.
ImportantPrivate Service Connect (PSC) is supported only with Install into an existing VPC.
- If you are installing into an existing VPC and you want to enable an HTTP or HTTPS proxy for your cluster, select Configure a cluster-wide proxy.
Accept the default application ingress settings, or to create your own custom settings, select Custom Settings. All of the custom settings are optional.
-
In Route selector, enter a comma-separated list of
key=valuepairs to limit which routes this ingress exposes. Leave the field empty if all routes should remain eligible based on your other choices. - In Excluded namespaces, enter a comma-separated list of namespace names whose routes must not use this ingress.
In Exclude namespace selectors, specify one or more label selectors. For each selector, provide a label key and a comma-separated list of label values. The default Ingress Controller does not apply to namespaces whose labels satisfy any of the configured selectors.
ImportantDo not include spaces around commas, for example, use
finance,HR,legal, and notfinance, HR, legal.- Set Namespace ownership policy for route admission when namespaces share hostnames, for example, select Strict for restrictive admission.
Set Wildcard policy to allow or disallow wildcard patterns in route hostnames, for example, select Disallowed to block wildcard host routes.
For more information about custom application ingress settings, click on the information icon provided for each setting.
-
In Route selector, enter a comma-separated list of
- Click Next.
Optional: To install the cluster into a Google Cloud Shared VPC, follow these steps.
NoteInstalling a new OpenShift Dedicated cluster into a VPC that was automatically created by the installer for a different cluster is not supported.
- Select Install into Google Cloud Shared VPC.
Specify the Host project ID. If the specified host project ID is incorrect, cluster creation fails.
NoteIn a typical Shared VPC deployment, the following Google Cloud roles are required on the project hosting the VPC:
-
roles/compute.networkAdmin -
roles/compute.securityAdmin -
roles/dns.admin
You can significantly reduce these permissions by using a custom role with minimal permissions. For more information, see Configure reduced permissions for a Shared VPC host project on Google Cloud in the Additional resources section.
If you use a managed DNS zone (by selecting a zone from the DNS Zone list), the
roles/dns.adminrole is not required on the host project.-
Optional. To use a pre-created DNS zone and reduce host project permissions, complete the following actions:
- View the provided CLI command instructions to create a zone if you have not already done so. For more information about creating a DNS zone using the ocm CLI, see Creating a managed DNS zone in the Additional resources section.
- Click the Refresh button to update the list of available zones.
Select your preferred zone from the DNS Zone list. The list displays the zone ID alongside the Google Cloud project and managed zone ID for easy identification.
NoteA custom domain prefix must be specified on a previous step on the Details page before zones appear in the DNS Zone list. The DNS Zone list is filtered to show only zones that begin with the domain prefix you specified. The list may be empty if no matching DNS zones exist, or if the domain prefix was entered incorrectly. If the list is empty, verify your domain prefix and ensure you have created a managed DNS zone with a matching prefix.
If no zone is selected, the installer will attempt to create one automatically, which requires higher-level permissions in the host project.
If you opted to install the cluster in an existing Google Cloud VPC, provide your VPC subnet settings and select Next. You must ensure that your VPC is configured to allow outbound internet access to the domains required for the OpenShift Dedicated service. This outbound access is required for the OpenShift Dedicated service to communicate with Red Hat’s management plane and SRE tooling via secure and encrypted endpoints over the public internet.
NoteIf you are installing a cluster into a Shared VPC, the VPC name and subnets are shared from the host project.
- Click Next.
If you opted to configure a cluster-wide proxy, provide your proxy configuration details on the Cluster-wide proxy page:
Enter a value in at least one of the following fields:
- Specify a valid HTTP proxy URL.
- Specify a valid HTTPS proxy URL.
-
In the Additional trust bundle field, provide a PEM encoded X.509 certificate bundle. The bundle is added to the trusted certificate store for the cluster nodes. An additional trust bundle file is required if you use a TLS-inspecting proxy unless the identity certificate for the proxy is signed by an authority from the Red Hat Enterprise Linux CoreOS (RHCOS) trust bundle. This requirement applies regardless of whether the proxy is transparent or requires explicit configuration using the
http-proxyandhttps-proxyarguments.
Click Next.
For more information about configuring a proxy with OpenShift Dedicated, see Configuring a cluster-wide proxy.
Accept the default application ingress settings, or to create your own custom settings, select Custom Settings. All of the custom settings are optional.
-
In Route selector, enter a comma-separated list of
key=valuepairs to limit which routes this ingress exposes. Leave the field empty if all routes should remain eligible based on your other choices. - In Excluded namespaces, enter a comma-separated list of namespace names whose routes must not use this ingress.
In Exclude namespace selectors, specify one or more label selectors. For each selector, provide a label key and a comma-separated list of label values. The default Ingress Controller does not apply to namespaces whose labels satisfy any of the configured selectors.
ImportantDo not include spaces around commas, for example, use
finance,HR,legal, and notfinance, HR, legal.- Set Namespace ownership policy for route admission when namespaces share hostnames, for example, select Strict for restrictive admission.
Set Wildcard policy to allow or disallow wildcard patterns in route hostnames, for example, select Disallowed to block wildcard host routes.
For more information about custom application ingress settings, click the information icon provided for each setting.
-
In Route selector, enter a comma-separated list of
In the CIDR ranges dialog, configure custom classless inter-domain routing (CIDR) ranges or use the defaults that are provided.
ImportantCIDR configurations cannot be changed later. Confirm your selections with your network administrator before proceeding.
If the cluster privacy is set to Private, you cannot access your cluster until you configure private connections in your cloud provider.
On the Cluster update strategy page, configure your update preferences:
Choose a cluster update method:
- Select Individual updates if you want to schedule each update individually. This is the default option.
Select Recurring updates to update your cluster on your preferred day and start time, when updates are available.
NoteYou can review the end-of-life dates in the update lifecycle documentation for OpenShift Dedicated. For more information, see OpenShift Dedicated update life cycle.
Provide administrator approval based on your cluster update method:
- Individual updates: If you select an update version that requires approval, provide an administrator’s acknowledgment and click Approve and continue.
- Recurring updates: If you selected recurring updates for your cluster, provide an administrator’s acknowledgment and click Approve and continue. OpenShift Cluster Manager does not start scheduled y-stream updates for minor versions without receiving an administrator’s acknowledgment.
- If you opted for recurring updates, select a preferred day of the week and upgrade start time in UTC from the drop-down menus.
- Optional: You can set a grace period for Node draining during cluster upgrades. A 1 hour grace period is set by default.
Click Next.
NoteIf critical security concerns significantly impact the security or stability of a cluster, Red Hat Site Reliability Engineering (SRE) might schedule automatic updates to the latest z-stream version that is not impacted. The updates are applied within 48 hours after customer notifications are provided. For a description of the critical impact security rating, see Understanding Red Hat security ratings.
- Review the summary of your selections and click Create cluster to start the cluster installation. The installation takes approximately 30-40 minutes to complete.
- Optional: On the Overview tab, you can enable the delete protection feature by selecting Enable, which is located directly under Delete Protection: Disabled. This will prevent your cluster from being deleted. To disable delete protection, select Disable. By default, clusters are created with the delete protection feature disabled.
Verification
- You can monitor the progress of the installation in the Overview page for your cluster. You can view the installation logs on the same page. Your cluster is ready when the Status in the Details section of the page is listed as Ready.
If your cluster deployment fails during installation, certain resources created during the installation process are not automatically removed from your Google Cloud account. To remove these resources from your Google Cloud account, you must delete the failed cluster.
2.5. Create a Workload Identity Federation cluster using the OpenShift Cluster Manager CLI Copy linkLink copied to clipboard!
You can create an OpenShift Dedicated on Google Cloud cluster with Workload Identity Federation (WIF) using the OpenShift Cluster Manager CLI (ocm) in interactive or noninteractive mode.
Prerequisites
- You have created a WIF configuration. For more information, see "Create a Workload Identity Federation configuration".
- You have created the required firewall rules in your Google Cloud project if you are installing a cluster by using OpenShift Dedicated version 4.21 or later. For more information, see Create firewall rules for reduced Workload Identity Federation permissions on Google Cloud .
-
You have downloaded the latest version of the OpenShift Cluster Manager CLI (
ocm) for your operating system from the Downloads page on OpenShift Cluster Manager.
Procedure
Based on your mode preference, run one of the following commands to create an OpenShift Dedicated cluster on Google Cloud with WIF configuration:
In
interactivemode, cluster attributes are displayed automatically as prompts during the creation of the cluster. Enter the values for those prompts based on specified requirements in the fields provided.In
non-interactivemode, specify the values for specific parameters within the command.Create a cluster in interactive mode by running the following command:
$ ocm create cluster --interactivewhere:
--interactiveSpecifies that the cluster is created in interactive mode. This mode prompts you to enter the required configuration options during cluster creation. If you do not include this parameter, the cluster is created in
non-interactivemode by default.Create a cluster in noninteractive mode by running the following command. The following example is made up of optional and required parameters and might differ from your noninteractive mode command. Parameters not identified as optional are required. For additional details about these and other parameters, run the
ocm create cluster --help flagcommand in your terminal window.$ ocm create cluster <cluster_name> \ --provider=gcp \ --ccs=true \ --wif-config <wif_name> \ --dns-zone-id <dns_zone_id> \ --region <gcp_region> \ --subscription-type=marketplace-gcp \ --marketplace-gcp-terms=true \ --version <version> \ --multi-az=true \ --enable-autoscaling=true \ --min-replicas=3 \ --max-replicas=6 \ --secure-boot-for-shielded-vms=true --channel <channel_name>where:
<cluster_name>-
Specifies the name of the cluster. Replace
<cluster_name>with a name for your cluster. --provider=gcp- Specifies the cloud provider for the cluster.
--ccs=true- Specifies that the cluster is a Customer Cloud Subscription (CCS) cluster.
--wif-config <wif_name>-
Specifies the name of the WIF configuration to assign to the cluster. Replace
<wif_name>with the name of your WIF configuration. --dns-zone-id <dns_zone_id>-
Optional. Specifies the DNS zone ID to use for the cluster. Replace
<dns_zone_id>with the ID of your DNS zone. For more information about this parameter, see Creating a managed DNS zone in the Additional resources section. --region <gcp_region>-
Specifies the Google Cloud region where the new cluster will be deployed. Replace
<gcp_region>with the required Google Cloud region. --subscription-type=marketplace-gcp- Optional. Specifies the subscription billing model for the cluster.
--marketplace-gcp-terms=true-
Confirms that you have accepted the Google Cloud Marketplace terms and agreements for the OpenShift Dedicated product listing. This parameter is required if you provided a value of
marketplace-gcpfor thesubscription-typeparameter. --version <version>Specifies the required OpenShift Dedicated version. This parameter is optional. However, if an OpenShift Dedicated version is specified, the version must also be supported by the assigned WIF configuration. If a version is specified that is not supported by the assigned WIF configuration, cluster creation will fail. If this occurs, update the assigned WIF configuration to the required version or create a new WIF configuration with the required version. If you do not specify a version, the cluster is created with the default version for the assigned WIF configuration.
For more information about supported versions for WIF configurations, see "Create a Workload Identity Federation configuration".
--multi-az=true- Specifies that the cluster is deployed to multiple data centers. This parameter is optional.
--enable-autoscaling=true- Enables autoscaling of compute nodes. This parameter is optional.
--min-replicas=3- Specifies the minimum number of compute nodes. This parameter is optional.
--max-replicas=6- Specifies the maximum number of compute nodes. This parameter is optional.
--secure-boot-for-shielded-vms=true- Enables Secure Boot, which allows the use of Shielded VMs in the Google Cloud. This parameter is optional.
--channel <channel_name>-
Specifies the name of the channel you want to assign the cluster to. Channel options include
stable-4.y,fast-4.y, andeus-4.y. Replace<channel_name>with the required channel. This parameter is optional.
Verification
To verify that the cluster was created successfully, run the following command:
$ ocm get cluster <cluster_name>If the cluster was created successfully, the output displays the cluster state as
ready.
If your cluster deployment fails during installation, certain resources created during the installation process are not automatically removed from your Google Cloud account. To remove these resources from your Google Cloud account, you must delete the failed cluster. For more information, see "Delete an OpenShift Dedicated cluster on Google Cloud".
2.6. List Workload Identity Federation clusters Copy linkLink copied to clipboard!
You can list OpenShift Dedicated clusters that have been deployed using Workload Identity Federation (WIF) authentication by using the OpenShift Cluster Manager CLI (ocm).
Procedure
To list all of your OpenShift Dedicated clusters that have been deployed using the WIF authentication type, run one of the following commands:
Using the
--parameterflag with thesearchoption:$ ocm list clusters --parameter search="gcp.authentication.wif_config_id != ''"Using a specific wif-config ID to filter the clusters associated with that configuration, replacing
<wif_config_id>with the ID of the WIF configuration:$ ocm list clusters --parameter search="gcp.authentication.wif_config_id = '<wif_config_id>'"
2.7. Update a Workload Identity Federation configuration Copy linkLink copied to clipboard!
You can update an existing Workload Identity Federation (WIF) configuration to support newer OpenShift Dedicated y-stream versions and to align with the latest security best practices.
Updating a WIF configuration is only applicable for y-stream updates. For an overview of the update process, including details regarding version semantics, see The Ultimate Guide to OpenShift Release and Upgrade Process for Cluster Administrators.
Before upgrading a WIF-enabled OpenShift Dedicated cluster to a newer version, you must update the wif-config to that version as well. If you do not update the wif-config version before attempting to upgrade the cluster version, the cluster version upgrade will fail.
As part of Red Hat’s ongoing commitment to the principle of least privilege, certain permissions previously assigned to the osd-deployer service account in WIF configurations have been removed. These changes help enhance the security of your clusters by ensuring that service accounts have only the permissions they need to perform their functions.
For the complete list of WIF configuration roles and their assigned permissions, see managed-cluster-config.
To align your existing WIF configurations with these updated permissions, you can run the ocm gcp update wif-config command. This command updates the WIF configuration to include the latest permissions and roles required for optimal operation.
When you update a wif-config or create a new one, ensure your OpenShift Cluster Manager CLI (ocm) is up to date. Not updating to the latest version of the ocm can result in error messages and service disruptions.
+ .Example output
Error: failed to create wif-config: failed to create wif-config: status is 400, identifier is '400', code is 'CLUSTERS-MGMT-400', at '2025-10-06T15:18:37Z' and operation identifier is 'f9551d63-a58a-4e3c-b847-5f99ba1b0b74': Client version is out of date for WIF operations. Please update from vOCM-CLI/1.0.7 to v1.0.8 and try again.
You can also update an existing OpenShift Dedicated cluster that is already using WIF by adding a dedicated project to manage workload identity pools and providers by using the --federated-project flag. This best-practice model separates the workload identity pools and providers into a dedicated, centralized Google Cloud project.
When you update the configuration by using the --federated-project flag, any associated workload identity pools move to the new federated project you specify, while the existing IAM service accounts and custom roles remain in the original cluster-associated project.
Procedure
To check the version of your
ocm, run the following command:$ ocm version-
Optional: If your
ocmversion is not the latest available, download and install the latest version from the Downloads page on OpenShift Cluster Manager. Update a wif-config to a specific OpenShift Dedicated version by running the following command:
$ ocm gcp update wif-config <wif_name> \ --version <version> \ --federated-project <gcp_project_id>where:
<wif_name>- The name of the WIF configuration you want to update.
<version>- Optional: The OpenShift Dedicated y-stream version you plan to update the cluster to. If you do not specify a version, the wif-config is updated to support the latest OpenShift Dedicated y-stream version and the last three OpenShift Dedicated supported y-stream versions (beginning with version 4.17).
--federated-project <gcp_project_id>- Optional: A flag to specify a new dedicated project where the workload identity pools and providers will be created and managed. If this flag is not included, the workload identity pools and providers will remain in the project associated with the cluster.
Next steps
If you are upgrading a cluster across multiple y-stream versions, update the WIF configuration to each intermediate version before upgrading the cluster to that version. For example, to upgrade from 4.20 to 4.22, update the WIF configuration to 4.21 first, upgrade the cluster to 4.21, then update the WIF configuration to 4.22 and upgrade the cluster to 4.22.
The stale set of permissions previously assigned to the osd-deployer service account will remain on the account after updating the wif-config. You need to manually access the roles and remove these stale permissions from them.
Follow the instructions in the "Removing stale deployer permissions from service accounts managed by a WIF configuration" and "Removing stale support permissions from service accounts managed by a WIF configuration" guides to remove these stale permissions.
In addition, if you used the --federated-project flag to move the workload identity pool to a new dedicated project, you can manually remove the stale workload identity pool from the original cluster-associated project. For more information, see Delete a pool in the Google Cloud documentation.
2.7.1. Remove stale deployer permissions from service accounts managed by a WIF configuration Copy linkLink copied to clipboard!
To remove the stale deployer permissions from service accounts managed by a WIF configuration, run the following commands on a terminal with access to the Google Cloud project hosting the service accounts.
Prerequisites
You have set the
PROJECT_IDenvironment variable to your Google Cloud project ID:$ export PROJECT_ID=<your_gcp_project_id>
Procedure
Retrieve the existing role definition:
$ gcloud iam roles describe \ osd_deployer_v4.22 \ --project $PROJECT_ID \ --format=yaml > /tmp/deployer_role.yamlRemove the unwanted permissions. You can do this by filtering out the unwanted permissions from the role definition file and saving the updated definition to a new file:
$ cat /tmp/deployer_role.yaml | \ grep -v "resourcemanager.projects.setIamPolicy" | \ grep -v "iam.serviceAccounts.signBlob" | \ grep -v "iam.serviceAccounts.actAs" > /tmp/updated_deployer_role.yamlReview the changes in the output between the original and updated role definitions to ensure only the intended permission lines were removed. Verify that no comments, descriptions, or other metadata lines were unintentionally filtered:
$ diff /tmp/deployer_role.yaml /tmp/updated_deployer_role.yamlUpdate the role in Google Cloud with the updated role definition file:
$ gcloud iam roles update \ osd_deployer_v4.22 \ --project=$PROJECT_ID \ --file=/tmp/updated_deployer_role.yaml
Verification
Verify that the stale permissions are no longer listed in the role:
$ gcloud iam roles describe \ osd_deployer_v4.22 \ --project=$PROJECT_IDConfirm that
resourcemanager.projects.setIamPolicy,iam.serviceAccounts.signBlob, andiam.serviceAccounts.actAsare no longer present in theincludedPermissionslist.Confirm that
compute.firewalls.createis no longer present in theincludedPermissionslist.
2.7.2. Remove stale support permissions from service accounts managed by a WIF configuration Copy linkLink copied to clipboard!
To remove stale support permissions, run the following commands on a terminal with access to the Google Cloud project hosting the service accounts.
Prerequisites
You have set the
PROJECT_IDenvironment variable to your Google Cloud project ID:$ export PROJECT_ID=<your_gcp_project_id>
Procedure
Retrieve the existing role definition:
$ gcloud iam roles describe sre_managed_support --project $PROJECT_ID --format=yaml > /tmp/support_role.yamlRemove the unwanted permissions. You can do this by filtering out the unwanted permissions from the role definition file and saving the updated definition to a new file:
$ cat /tmp/support_role.yaml | grep -v "compute.firewalls.create" > /tmp/updated_support_role.yamlReview the changes in the output between the original and updated role definitions to ensure only the intended permission lines were removed. Verify that no comments, descriptions, or other metadata lines were unintentionally filtered:
$ diff /tmp/support_role.yaml /tmp/updated_support_role.yamlUpdate the role in Google Cloud with the updated role definition file:
$ gcloud iam roles update sre_managed_support --project $PROJECT_ID --file=/tmp/updated_support_role.yaml
Verification
Verify that the stale permissions are no longer listed in the role:
$ gcloud iam roles describe sre_managed_support --project $PROJECT_IDConfirm that
compute.firewalls.createis no longer present in theincludedPermissionslist.
2.7.3. Remove stale CSI driver and Machine API permissions from service accounts managed by a WIF configuration Copy linkLink copied to clipboard!
The wif-config permission set enables Workload Identity Federation (WIF) authentication for OpenShift Dedicated service accounts to securely interact with Google Cloud services. You can remove stale permissions from the CSI driver and Machine API service accounts to reduce the scope of permissions to only those required for the cluster’s operation.
This procedure is applicable to clusters using WIF with versions 4.20, 4.21, and 4.22.
Prerequisites
You have set the
PROJECT_IDenvironment variable to your Google Cloud project ID:$ export PROJECT_ID=<your_gcp_project_id>You have set the
WIF_SUFFIXenvironment variable to the last four characters of thewif-configID:$ export WIF_SUFFIX=<last_four_characters_of_wif_config_id>You have set the
WIF_IDenvironment variable to your WIF configuration ID:$ export WIF_ID=<your_wif_config_id>
Procedure
Prune the
wif-configto only include version4.20and later versions. Only manual mode is supported for pruning operations:$ ocm gcp update wif-config ${WIF_ID} --versions v4.20,v4.21,v4.22 --mode manual --output-dir /tmp/scripts/Execute the generated scripts to apply the changes:
$ /tmp/scripts/apply.sh $ /tmp/scripts/prune.shRemove the CSI driver service account’s redundant project-level
iam.serviceAccountUserrole binding:$ gcloud projects remove-iam-policy-binding "${PROJECT_ID}" \ --member="serviceAccount:gcp-pd-csi-driver-op-${WIF_SUFFIX}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser" \ --condition=NoneRemove the
iam.serviceAccounts.actAspermission from the Machine API service account custom role. Repeat the following sub-steps for each applicable version (v4.20,v4.21,v4.22):Set the
VERSIONenvironment variable to the target version:$ export VERSION=<version>Replace
<version>withv4.20,v4.21, orv4.22.Retrieve the existing role definition:
$ gcloud iam roles describe machine_api_gcp_${VERSION} \ --project $PROJECT_ID \ --format=yaml > /tmp/role.yamlRemove the unwanted permission. You can do this by filtering out the unwanted permission from the role definition file and saving the updated definition to a new file:
$ cat /tmp/role.yaml | grep -v "iam.serviceAccounts.actAs" > /tmp/updated_role.yamlReview the changes in the output between the original and updated role definitions to ensure only the intended permission line was removed. Verify that no comments, descriptions, or other metadata lines were unintentionally filtered:
$ diff /tmp/role.yaml /tmp/updated_role.yamlUpdate the role in Google Cloud with the updated role definition file:
$ gcloud iam roles update machine_api_gcp_${VERSION} \ --project $PROJECT_ID \ --file=/tmp/updated_role.yaml
Verification
Verify that the
iam.serviceAccounts.actAspermission is no longer listed in the Machine API role for each applicable version:$ gcloud iam roles describe machine_api_gcp_${VERSION} \ --project $PROJECT_IDConfirm that
iam.serviceAccounts.actAsis no longer present in theincludedPermissionslist.
2.7.4. Troubleshoot Workload Identity Federation permission issues Copy linkLink copied to clipboard!
Discover how to troubleshoot common permission issues that can occur when using a Workload Identity Federation (WIF) configuration in OpenShift Dedicated clusters on Google Cloud. The following table lists common symptoms, their causes, and recommended resolutions.
| Symptom | Cause | Resolution |
|---|---|---|
| Cluster version upgrade fails with a WIF configuration version mismatch error. | The WIF configuration was not updated to match the target OpenShift Dedicated version before the cluster upgrade was initiated. |
Update the WIF configuration to the target version by running |
|
Machine API pods report |
The scoped |
Verify that the |
|
GCP PD CSI Driver pods fail to attach or mount persistent volumes with |
The project-level | For clusters running OpenShift Dedicated 4.21 or later, update the WIF configuration, which applies the scoped binding automatically. For clusters running earlier versions, follow the procedure in "Reducing permissions while using the GCP PD CSI Driver Operator" to manually grant the scoped binding before removing the project-level role. |
|
The |
The installed version of the OpenShift Cluster Manager CLI ( |
Download and install the latest version of the |
|
After removing stale permissions, the | IAM role changes can take up to 60 seconds to propagate across Google Cloud. |
Wait 60 seconds and run the |
To restore permissions that were removed by mistake, run the following command:
$ ocm gcp update wif-config <wif_config_id>
This command automatically detects and restores missing permissions to the custom roles within the specified WIF configuration.
2.8. Verify a Workload Identity Federation configuration Copy linkLink copied to clipboard!
You can verify that the configuration of resources associated with a Workload Identity Federation (WIF) configuration are correct by running the ocm gcp verify wif-config command.
Procedure
Get the name and ID of your active WIF configurations by running the following command:
$ ocm gcp list wif-configsDetermine if the WIF configuration you want to verify is configured correctly by running the following command, replacing
<wif_config_name>and<wif_config_id>with the name and ID of your WIF configuration, respectively:$ ocm gcp verify wif-config <wif_config_name>|<wif_config_id>If a misconfiguration is found, the output provides details about the misconfiguration and recommends that you update the WIF configuration.
Example output
Error: verification failed with error: missing role 'compute.storageAdmin'. Running 'ocm gcp update wif-config' may fix errors related to cloud resource misconfiguration. exit status 1.