// Module included in the following assemblies:
//
// * operators/admin/olm-managing-po.adoc

:_mod-docs-content-type: PROCEDURE
[id="olm-installing-po-after_{context}"]
= Installing platform Operators after cluster creation

As a cluster administrator, you can install platform Operators after cluster creation on clusters that have enabled the `TechPreviewNoUpgrade` feature set by using the cluster-wide `PlatformOperator` API.

.Procedure

. Choose a platform Operator from the supported set of OLM-based Operators. For the list of this set and details on current limitations, see "Technology Preview restrictions for platform Operators".

. Create a `PlatformOperator` object YAML file for your chosen platform Operator, for example a `service-mesh-po.yaml` file for the {SMProductName} Operator:
+
.Example `sevice-mesh-po.yaml` file
[source,yaml]
----
apiVersion: platform.openshift.io/v1alpha1
kind: PlatformOperator
metadata:
  name: service-mesh-po
spec:
  package:
    name: servicemeshoperator
----

. Create the `PlatformOperator` object by running the following command:
+
[source,terminal]
----
$ oc apply -f service-mesh-po.yaml
----
+
[NOTE]
====
If your cluster does not have the `TechPreviewNoUpgrade` feature set enabled, the object creation fails with the following message:

[source,terminal]
----
error: resource mapping not found for name: "service-mesh-po" namespace: "" from "service-mesh-po.yaml": no matches for kind "PlatformOperator" in version "platform.openshift.io/v1alpha1"
ensure CRDs are installed first
----
====

.Verification

. Check the status of the `service-mesh-po` platform Operator by running the following command:
+
[source,terminal]
----
$ oc get platformoperator service-mesh-po -o yaml
----
+
.Example output
[source,yaml]
----
...
status:
  activeBundleDeployment:
    name: service-mesh-po
  conditions:
  - lastTransitionTime: "2022-10-24T17:24:40Z"
    message: Successfully applied the service-mesh-po BundleDeployment resource
    reason: InstallSuccessful
    status: "True" <1>
    type: Installed
----
<1> Wait until the `Installed` status condition reports `True`.

. Verify that the `platform-operators-aggregated` cluster Operator is reporting an `Available=True` status:
+
[source,terminal]
----
$ oc get clusteroperator platform-operators-aggregated -o yaml
----
+
.Example output
[source,yaml]
----
...
status:
  conditions:
  - lastTransitionTime: "2022-10-24T17:43:26Z"
    message: All platform operators are in a successful state
    reason: AsExpected
    status: "False"
    type: Progressing
  - lastTransitionTime: "2022-10-24T17:43:26Z"
    status: "False"
    type: Degraded
  - lastTransitionTime: "2022-10-24T17:43:26Z"
    message: All platform operators are in a successful state
    reason: AsExpected
    status: "True"
    type: Available
----
