Skip to content

Commit 619c313

Browse files
authored
Merge pull request #52907 from adellape/po_structure
2 parents 995b6b3 + 376c1fa commit 619c313

22 files changed

+672
-13
lines changed

_topic_maps/_topic_map.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1544,6 +1544,9 @@ Topics:
15441544
- Name: Using OLM on restricted networks
15451545
File: olm-restricted-networks
15461546
Distros: openshift-origin,openshift-enterprise
1547+
- Name: Managing platform Operators
1548+
File: olm-managing-po
1549+
Distros: openshift-enterprise,openshift-origin
15471550
- Name: Developing Operators
15481551
Dir: operator_sdk
15491552
Distros: openshift-origin,openshift-enterprise

architecture/control-plane.adoc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ include::modules/arch-olm-operators.adoc[leveloffset=+2]
3333
* For more details on running add-on Operators in {product-title}, see the _Operators_ guide sections on xref:../operators/understanding/olm/olm-understanding-olm.adoc#olm-understanding-olm[Operator Lifecycle Manager (OLM)] and xref:../operators/understanding/olm-understanding-operatorhub.adoc#olm-understanding-operatorhub[OperatorHub].
3434
* For more details on the Operator SDK, see xref:../operators/operator_sdk/osdk-about.adoc#osdk-about[Developing Operators].
3535
36+
ifdef::openshift-enterprise,openshift-webscale,openshift-origin[]
37+
include::modules/arch-platform-operators.adoc[leveloffset=+2]
38+
39+
[role="_additional-resources"]
40+
.Additional resources
41+
* xref:../operators/admin/olm-managing-po.adoc#olm-managing-po[Managing platform Operators]
42+
* xref:../operators/admin/olm-managing-po.adoc#olm-po-techpreview_olm-managing-po[Technology Preview restrictions for platform Operators]
43+
* xref:../operators/understanding/olm-packaging-format.adoc#olm-rukpak-about_olm-packaging-format[RukPak component and packaging format]
44+
* xref:../post_installation_configuration/cluster-capabilities.adoc#cluster-capabilities[Cluster capabilities]
45+
endif::[]
46+
3647
include::modules/update-service-overview.adoc[leveloffset=+1]
3748

3849
include::modules/understanding-machine-config-operator.adoc[leveloffset=+1]

modules/arch-platform-operators.adoc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * architecture/control-plane.adoc
4+
// * operators/admin/olm-managing-po.adoc
5+
6+
:_content-type: CONCEPT
7+
8+
ifeval::["{context}" == "control-plane"]
9+
[id="platform-operators_{context}"]
10+
= Platform Operators (Technology Preview)
11+
12+
:FeatureName: The platform Operator type
13+
include::snippets/technology-preview.adoc[]
14+
endif::[]
15+
16+
ifeval::["{context}" == "olm-managing-po"]
17+
[id="platform-operators_{context}"]
18+
= About platform Operators
19+
endif::[]
20+
21+
Operator Lifecycle Manager (OLM) introduces a new type of Operator called _platform Operators_. A platform Operator is an OLM-based Operator that can be installed during or after an {product-title} cluster's Day 0 operations and participates in the cluster's lifecycle. As a cluster administrator, you can use platform Operators to further customize your {product-title} installation to meet your requirements and use cases.
22+
23+
Using the existing cluster capabilities feature in {product-title}, cluster administrators can already disable a subset of Cluster Version Operator-based (CVO) components considered non-essential to the initial payload prior to cluster installation. Platform Operators iterate on this model by providing additional customization options. Through the platform Operator mechanism, which relies on resources from the RukPak component, OLM-based Operators can now be installed at cluster installation time and can block cluster rollout if the Operator fails to install successfully.
24+
25+
In {product-title} 4.12, this Technology Preview release focuses on the basic platform Operator mechanism and builds a foundation for expanding the concept in upcoming releases. You can use the cluster-wide `PlatformOperator` API to configure Operators before or after cluster creation on clusters that have enabled the `TechPreviewNoUpgrades` feature set.

modules/olm-deleting-po.adoc

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * operators/admin/olm-managing-po.adoc
4+
5+
:_content-type: PROCEDURE
6+
[id="olm-deleting-po_{context}"]
7+
= Deleting platform Operators
8+
9+
As a cluster administrator, you can delete existing platform Operators. Operator Lifecycle Manager (OLM) performs a cascading deletion. First, OLM removes the bundle deployment for the platform Operator, which then deletes any objects referenced in the `registry+v1` type bundle.
10+
11+
[NOTE]
12+
====
13+
The platform Operator manager and bundle deployment provisioner only manage objects that are referenced in the bundle, but not objects subsequently deployed by any bundle workloads themselves. For example, if a bundle workload creates a namespace and the Operator is not configured to clean it up before the Operator is removed, it is outside of the scope of OLM to remove the namespace during platform Operator deletion.
14+
====
15+
16+
.Procedure
17+
18+
. Get a list of installed platform Operators and find the name for the Operator you want to delete:
19+
+
20+
[source,terminal]
21+
----
22+
$ oc get platformoperator
23+
----
24+
25+
. Delete the `PlatformOperator` resource for the chosen Operator, for example, for the Quay Operator:
26+
+
27+
[source,terminal]
28+
----
29+
$ oc delete platformoperator quay-operator
30+
----
31+
+
32+
.Example output
33+
[source,terminal]
34+
----
35+
platformoperator.platform.openshift.io "quay-operator" deleted
36+
----
37+
38+
.Verification
39+
40+
. Verify the namespace for the platform Operator is eventually deleted, for example, for the Quay Operator:
41+
+
42+
[source,terminal]
43+
----
44+
$ oc get ns quay-operator-system
45+
----
46+
+
47+
.Example output
48+
[source,terminal]
49+
----
50+
Error from server (NotFound): namespaces "quay-operator-system" not found
51+
----
52+
53+
. Verify the `platform-operators-aggregated` cluster Operator continues to report an `Available=True` status:
54+
+
55+
[source,terminal]
56+
----
57+
$ oc get co platform-operators-aggregated
58+
----
59+
+
60+
.Example output
61+
[source,terminal]
62+
----
63+
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
64+
platform-operators-aggregated 4.12.0-0 True False False 70s
65+
----

modules/olm-installing-from-operatorhub-using-cli.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ endif::[]
1515
[id="olm-installing-operator-from-operatorhub-using-cli_{context}"]
1616
= Installing from OperatorHub using the CLI
1717

18-
Instead of using the {product-title} web console, you can install an Operator from OperatorHub using the CLI. Use the `oc` command to create or update a `Subscription` object.
18+
Instead of using the {product-title} web console, you can install an Operator from OperatorHub by using the CLI. Use the `oc` command to create or update a `Subscription` object.
1919

2020
.Prerequisites
2121

modules/olm-installing-from-operatorhub-using-web-console.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ endif::[]
3232
[id="olm-installing-from-operatorhub-using-web-console_{context}"]
3333
= Installing from OperatorHub using the web console
3434

35-
You can install and subscribe to an Operator from OperatorHub using the {product-title} web console.
35+
You can install and subscribe to an Operator from OperatorHub by using the {product-title} web console.
3636

3737
.Prerequisites
3838

modules/olm-installing-operators-from-operatorhub.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ endif::[]
1818
OperatorHub is a user interface for discovering Operators; it works in conjunction with Operator Lifecycle Manager (OLM), which installs and manages Operators on a cluster.
1919

2020
ifndef::olm-user[]
21-
As a cluster administrator, you can install an Operator from OperatorHub using the {product-title}
21+
As a cluster administrator, you can install an Operator from OperatorHub by using the {product-title}
2222
ifdef::openshift-enterprise,openshift-webscale,openshift-origin[]
2323
web console or CLI. Subscribing an Operator to one or more namespaces makes the Operator available to developers on your cluster.
2424
endif::[]
2525
endif::[]
2626

2727
ifdef::olm-user[]
28-
As a user with the proper permissions, you can install an Operator from OperatorHub using the {product-title} web console or CLI.
28+
As a user with the proper permissions, you can install an Operator from OperatorHub by using the {product-title} web console or CLI.
2929
endif::[]
3030

3131
During installation, you must determine the following initial settings for the Operator:

modules/olm-installing-po-after.adoc

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * operators/admin/olm-managing-po.adoc
4+
5+
:_content-type: PROCEDURE
6+
[id="olm-installing-po-after_{context}"]
7+
= Installing platform Operators after cluster creation
8+
9+
As a cluster administrator, you can install platform Operators after cluster creation on clusters that have enabled the `TechPreviewNoUpgrades` feature set by using the cluster-wide `PlatformOperator` API.
10+
11+
.Procedure
12+
13+
. 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".
14+
15+
. Create a `PlatformOperator` object YAML file for your chosen platform Operator, for example a `cert-manager.yaml` file for the {cert-manager-operator}:
16+
+
17+
.Example `cert-manager.yaml` file
18+
[source,yaml]
19+
----
20+
apiVersion: platform.openshift.io/v1alpha1
21+
kind: PlatformOperator
22+
metadata:
23+
name: cert-manager
24+
spec:
25+
package:
26+
name: openshift-cert-manager-operator
27+
----
28+
29+
. Create the `PlatformOperator` object by running the following command:
30+
+
31+
[source,terminal]
32+
----
33+
$ oc apply -f cert-manager.yaml
34+
----
35+
36+
.Verification
37+
38+
. Check the status of the `cert-manager` platform Operator by running the following command:
39+
+
40+
[source,terminal]
41+
----
42+
$ oc get platformoperator cert-manager -o yaml
43+
----
44+
+
45+
.Example output
46+
[source,yaml]
47+
----
48+
...
49+
status:
50+
activeBundleDeployment:
51+
name: cert-manager
52+
conditions:
53+
- lastTransitionTime: "2022-10-24T17:24:40Z"
54+
message: Successfully applied the cert-manager BundleDeployment resource
55+
reason: InstallSuccessful
56+
status: "True" <1>
57+
type: Installed
58+
----
59+
<1> Wait until the `Installed` status condition reports `True`.
60+
61+
. Verify that the `platform-operators-aggregated` cluster Operator is reporting an `Available=True` status:
62+
+
63+
[source,terminal]
64+
----
65+
$ oc get clusteroperator platform-operators-aggregate -o yaml
66+
----
67+
+
68+
.Example output
69+
[source,yaml]
70+
----
71+
...
72+
status:
73+
conditions:
74+
- lastTransitionTime: "2022-10-24T17:43:26Z"
75+
message: All platform operators are in a successful state
76+
reason: AsExpected
77+
status: "False"
78+
type: Progressing
79+
- lastTransitionTime: "2022-10-24T17:43:26Z"
80+
status: "False"
81+
type: Degraded
82+
- lastTransitionTime: "2022-10-24T17:43:26Z"
83+
message: All platform operators are in a successful state
84+
reason: AsExpected
85+
status: "True"
86+
type: Available
87+
----

modules/olm-installing-po-during.adoc

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * operators/admin/olm-managing-po.adoc
4+
5+
:_content-type: PROCEDURE
6+
[id="olm-installing-po-during_{context}"]
7+
= Installing platform Operators during cluster creation
8+
9+
As a cluster administrator, you can install platform Operators by providing `FeatureGate` and `PlatformOperator` manifests during cluster creation.
10+
11+
.Procedure
12+
13+
. 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".
14+
15+
. Select a cluster installation method and follow the instructions through creating an `install-config.yaml` file. For more details on preparing for a cluster installation, see "Selecting a cluster installation method and preparing it for users".
16+
17+
. After you have created the `install-config.yaml` file and completed any modifications to it, change to the directory that contains the installation program and create the manifests:
18+
+
19+
[source,terminal]
20+
----
21+
$ ./openshift-install create manifests --dir <installation_directory> <1>
22+
----
23+
<1> For `<installation_directory>`, specify the name of the directory that contains the `install-config.yaml` file for your cluster.
24+
25+
. Create a `FeatureGate` object YAML file in the `<installation_directory>/manifests/` directory that enables the `TechPreviewNoUpgrade` feature set, for example a `feature-gate.yaml` file:
26+
+
27+
.Example `feature-gate.yaml` file
28+
[source,yaml]
29+
----
30+
apiVersion: config.openshift.io/v1
31+
kind: FeatureGate
32+
metadata:
33+
annotations:
34+
include.release.openshift.io/self-managed-high-availability: "true"
35+
include.release.openshift.io/single-node-developer: "true"
36+
release.openshift.io/create-only: "true"
37+
name: cluster
38+
spec:
39+
featureSet: TechPreviewNoUpgrade <1>
40+
----
41+
<1> Enable the `TechPreviewNoUpgrade` feature set.
42+
43+
. Create a `PlatformOperator` object YAML file for your chosen platform Operator in the `<installation_directory>/manifests/` directory, for example a `cert-manager.yaml` file for the {cert-manager-operator}:
44+
+
45+
.Example `cert-manager.yaml` file
46+
[source,yaml]
47+
----
48+
apiVersion: platform.openshift.io/v1alpha1
49+
kind: PlatformOperator
50+
metadata:
51+
name: cert-manager
52+
spec:
53+
package:
54+
name: openshift-cert-manager-operator
55+
----
56+
57+
. When you are ready to complete the cluster install, refer to your chosen installation method and continue through running the `openshift-install create cluster` command.
58+
+
59+
During cluster creation, your provided manifests are used to enable the `TechPreviewNoUpgrade` feature set and install your chosen platform Operator.
60+
+
61+
[IMPORTANT]
62+
====
63+
Failure of the platform Operator to successfully install will block the cluster installation process.
64+
====
65+
66+
.Verification
67+
68+
. Check the status of the `cert-manager` platform Operator by running the following command:
69+
+
70+
[source,terminal]
71+
----
72+
$ oc get platformoperator cert-manager -o yaml
73+
----
74+
+
75+
.Example output
76+
[source,yaml]
77+
----
78+
...
79+
status:
80+
activeBundleDeployment:
81+
name: cert-manager
82+
conditions:
83+
- lastTransitionTime: "2022-10-24T17:24:40Z"
84+
message: Successfully applied the cert-manager BundleDeployment resource
85+
reason: InstallSuccessful
86+
status: "True" <1>
87+
type: Installed
88+
----
89+
<1> Wait until the `Installed` status condition reports `True`.
90+
91+
. Verify that the `platform-operators-aggregated` cluster Operator is reporting an `Available=True` status:
92+
+
93+
[source,terminal]
94+
----
95+
$ oc get clusteroperator platform-operators-aggregate -o yaml
96+
----
97+
+
98+
.Example output
99+
[source,yaml]
100+
----
101+
...
102+
status:
103+
conditions:
104+
- lastTransitionTime: "2022-10-24T17:43:26Z"
105+
message: All platform operators are in a successful state
106+
reason: AsExpected
107+
status: "False"
108+
type: Progressing
109+
- lastTransitionTime: "2022-10-24T17:43:26Z"
110+
status: "False"
111+
type: Degraded
112+
- lastTransitionTime: "2022-10-24T17:43:26Z"
113+
message: All platform operators are in a successful state
114+
reason: AsExpected
115+
status: "True"
116+
type: Available
117+
----

0 commit comments

Comments
 (0)