diff --git a/docs/user/reconciliation.md b/docs/user/reconciliation.md new file mode 100644 index 0000000000..c765c6f32a --- /dev/null +++ b/docs/user/reconciliation.md @@ -0,0 +1,166 @@ +# Reconciliation + +This document describes the cluster-version operator's reconciliation logic and explains how the operator applies a release image to the cluster. + +## Release image content + +```console +$ mkdir /tmp/release +$ oc image extract quay.io/openshift-release-dev/ocp-release:4.1.0[-1] --path /:/tmp/release +$ ls /tmp/release/release-manifests +0000_03_authorization-openshift_01_rolebindingrestriction.crd.yaml +0000_03_quota-openshift_01_clusterresourcequota.crd.yaml +0000_03_security-openshift_01_scc.crd.yaml +0000_05_config-operator_02_apiserver.cr.yaml +0000_05_config-operator_02_authentication.cr.yaml +... +0000_90_openshift-controller-manager-operator_02_servicemonitor.yaml +0000_90_openshift-controller-manager-operator_03_operand-servicemonitor.yaml +image-references +release-metadata +$ cat /tmp/release/release-manifests/release-metadata +{ + "kind": "cincinnati-metadata-v0", + "version": "4.1.0", + "previous": [], + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:0758" + } +} +$ cat /tmp/release/release-manifests/image-references +{ + "kind": "ImageStream", + "apiVersion": "image.openshift.io/v1", + "metadata": { + "name": "4.1.0", + "creationTimestamp": "2019-06-03T14:49:14Z", + "annotations": { + "release.openshift.io/from-image-stream": "ocp/4.1-art-latest-2019-05-31-174150", + "release.openshift.io/from-release": "registry.svc.ci.openshift.org/ocp/release:4.1.0-0.nightly-2019-05-31-174150" + } + }, + "spec": { + "lookupPolicy": { + "local": false + }, + "tags": [ + { + "name": "aws-machine-controllers", + "annotations": { + "io.openshift.build.commit.id": "d8d8e285fc19920c3311e791f4fe22db7003588f", + "io.openshift.build.commit.ref": "", + "io.openshift.build.source-location": "https://github.com/openshift/cluster-api-provider-aws" + }, + "from": { + "kind": "DockerImage", + "name": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7483248489c918e0c65a6b391bd171da0565cb9995b2acc61a1e517b6551e037" + }, + "generation": 2, + "importPolicy": {}, + "referencePolicy": { + "type": "Source" + } + }, + ... + ] + }, + "status": { + "dockerImageRepository": "" + } +} +``` + +## Manifest graph + +The cluster-version operator unpacks the release image, ingests manifests, loads them into a graph. +For upgrades, the graph is ordered by the number and component of the manifest file: + +
+ +
+ +The `0000_03_authorization-openshift_*` manifest gets its own node, the `0000_03_quota-openshift_01_*` manifest gets its own node, and the `0000_03_security-openshift_*` manifest gets its own node. +The next group of manifests are under `0000_05_config-operator_*`. +Because the number is bumped, the graph blocks until the previous `0000_03_*` are all complete before beginning the `0000_05_*` block. + +We are more relaxed for the initial install, because there is not yet any user data in the cluster to be worried about. +So the graph nodes are all parallelized with the by-number ordering flattened out: + +
+ +
+ +For the usual reconciliation loop (neither an upgrade between releases nor a fresh install), the flattened graph is also randomly permuted to avoid hanging on ordering bugs. + +## Synchronizing the graph + +The cluster-version operator spawns worker goroutines that walk the graph, pushing manifests in their queue. +For each manifest in the node, the worker synchronizes the cluster with the manifest using a resource builder. +On error (or timeout), the worker abandons the manifest, graph node, and any dependencies of that graph node. +On success, the worker proceeds to the next manifest in the graph node. + +## Resource builders + +Resource builders synchronize the cluster with a manifest from the release image. +The general approach is to generates a merged manifest combining critical spec properties from the release-image manifest with data from a preexisting in-cluster object, if any. +If the merged manifest differs from the in-cluster object, the merged manifest is pushed back into the cluster. + +Some types have additional logic, as described in the following subsections. +Note that this logic only applies to manifests included in the release image itself. +For example, only [ClusterOperator](../dev/clusteroperator.md) from the release image will have the blocking logic described [below](#clusteroperator); if an admin or secondary operator pushed a ClusterOperator object, it would not impact the cluster-version operator's graph synchronization. + +### ClusterOperator + +The cluster-version operator does not push [ClusterOperator](../dev/clusteroperator.md) into the cluster. +Instead, the operators create ClusterOperator themselves. +The ClusterOperator builder only monitors the in-cluster object and blocks until it is: + +* Available +* Either not progressing or, when the release image manifest has `status.versions` entries, listing at least the versions given in that manifest. + For example, an OpenShift API server ClusterOperator entry in the release image like: + + ```yaml + apiVersion: config.openshift.io/v1 + kind: ClusterOperator + metadata: + name: openshift-apiserver + spec: {} + status: + versions: + - name: operator + version: "4.1.0" + ``` + + would block until the in-cluster ClusterOperator reported `operator` at version 4.1.0. + + The progressing check is deprecated and will be removed once all operators are reporting versions. +* Not degraded (except during initialization, where we ignore the degraded status) + +### CustomResourceDefinition + +After pushing the merged CustomResourceDefinition into the cluster, the builder monitors the in-cluster object and blocks until it is established. + +### DaemonSet + +The builder does not block after an initial DaemonSet push (when the in-cluster object has generation 1). + +For subsequent updates, the builder blocks until: + +* The in-cluster object's observed generation catches up with the specified generation. +* Pods with the release-image-specified configuration are scheduled on each node. +* There are no nodes without available, ready pods. + +### Deployment + +The builder does not block after an initial Deployment push (when the in-cluster object has generation 1). + +For subsequent updates, the builder blocks until: + +* The in-cluster object's observed generation catches up with the specified generation. +* Sufficient pods with the release-image-specified configuration are scheduled to fulfill the requested `replicas`. +* There are no unavailable replicas. + +### Job + +After pushing the merged Job into the cluster, the builder blocks until the Job succeeds. diff --git a/docs/user/tasks-by-number-and-component.svg b/docs/user/tasks-by-number-and-component.svg new file mode 100644 index 0000000000..8edb76fb0f --- /dev/null +++ b/docs/user/tasks-by-number-and-component.svg @@ -0,0 +1,871 @@ + + + + + + +tasks + + +0 + +no manifests + + +1 + +customresourcedefinition rolebindingrestrictions.authorization.openshift.io (1 of 344) + + +0->1 + + + + +2 + +customresourcedefinition clusterresourcequotas.quota.openshift.io (2 of 344) + + +0->2 + + + + +3 + +customresourcedefinition securitycontextconstraints.security.openshift.io (3 of 344) + + +0->3 + + + + +4 + +apiserver cluster (4 of 344) +authentication cluster (5 of 344) +build cluster (6 of 344) +console cluster (7 of 344) +dns cluster (8 of 344) +featuregate cluster (9 of 344) +image cluster (10 of 344) +infrastructure cluster (11 of 344) +ingress cluster (12 of 344) +network cluster (13 of 344) +oauth cluster (14 of 344) +project cluster (15 of 344) +scheduler cluster (16 of 344) + + +1->4 + + + + +2->4 + + + + +3->4 + + + + +5 + +customresourcedefinition apiservers.config.openshift.io (17 of 344) +customresourcedefinition authentications.config.openshift.io (18 of 344) +customresourcedefinition builds.config.openshift.io (19 of 344) +customresourcedefinition consoles.config.openshift.io (20 of 344) +customresourcedefinition dnses.config.openshift.io (21 of 344) +customresourcedefinition featuregates.config.openshift.io (22 of 344) +customresourcedefinition images.config.openshift.io (23 of 344) +customresourcedefinition infrastructures.config.openshift.io (24 of 344) +customresourcedefinition ingresses.config.openshift.io (25 of 344) +customresourcedefinition networks.config.openshift.io (26 of 344) +customresourcedefinition oauths.config.openshift.io (27 of 344) +namespace openshift-config-managed (28 of 344) +namespace openshift-config (29 of 344) +customresourcedefinition projects.config.openshift.io (30 of 344) +customresourcedefinition schedulers.config.openshift.io (31 of 344) +clusterrole system:openshift:cluster-config-operator:cluster-reader (32 of 344) + + +4->5 + + + + +6 + +customresourcedefinition clusterresourcequotas.quota.openshift.io (33 of 344) + + +4->6 + + + + +7 + +namespace openshift-kube-apiserver-operator (34 of 344) +customresourcedefinition kubeapiservers.operator.openshift.io (35 of 344) +kubeapiserver cluster (36 of 344) +service openshift-kube-apiserver-operator/metrics (37 of 344) +configmap openshift-kube-apiserver-operator/kube-apiserver-operator-config (38 of 344) +clusterrolebinding system:openshift:operator:kube-apiserver-operator (39 of 344) +serviceaccount openshift-kube-apiserver-operator/kube-apiserver-operator (40 of 344) +deployment openshift-kube-apiserver-operator/kube-apiserver-operator (41 of 344) +clusteroperator kube-apiserver (42 of 344) + + +5->7 + + + + +6->7 + + + + +8 + +namespace openshift-kube-controller-manager-operator (43 of 344) +customresourcedefinition kubecontrollermanagers.operator.openshift.io (44 of 344) +kubecontrollermanager cluster (45 of 344) +service openshift-kube-controller-manager-operator/metrics (46 of 344) +configmap openshift-kube-controller-manager-operator/kube-controller-manager-operator-config (47 of 344) +clusterrolebinding system:openshift:operator:kube-controller-manager-operator (48 of 344) +serviceaccount openshift-kube-controller-manager-operator/kube-controller-manager-operator (49 of 344) +deployment openshift-kube-controller-manager-operator/kube-controller-manager-operator (50 of 344) +clusteroperator kube-controller-manager (51 of 344) + + +7->8 + + + + +9 + +namespace openshift-kube-scheduler-operator (52 of 344) +customresourcedefinition kubeschedulers.operator.openshift.io (53 of 344) +kubescheduler cluster (54 of 344) +service openshift-kube-scheduler-operator/metrics (55 of 344) +configmap openshift-kube-scheduler-operator/openshift-kube-scheduler-operator-config (56 of 344) +clusterrolebinding system:openshift:operator:cluster-kube-scheduler-operator (57 of 344) +serviceaccount openshift-kube-scheduler-operator/openshift-kube-scheduler-operator (58 of 344) +deployment openshift-kube-scheduler-operator/openshift-kube-scheduler-operator (59 of 344) +clusteroperator kube-scheduler (60 of 344) + + +7->9 + + + + +10 + +no manifests + + +8->10 + + + + +9->10 + + + + +11 + +credentialsrequest openshift-cloud-credential-operator/openshift-machine-api (61 of 344) +namespace openshift-machine-api (62 of 344) +configmap openshift-machine-api/machine-api-operator-images (63 of 344) +customresourcedefinition machines.machine.openshift.io (64 of 344) +customresourcedefinition machinesets.machine.openshift.io (65 of 344) +customresourcedefinition machinehealthchecks.healthchecking.openshift.io (66 of 344) +serviceaccount openshift-machine-api/machine-api-operator (67 of 344) +clusterrole machine-api-manager (68 of 344) +clusterrolebinding machine-api-manager-rolebinding (69 of 344) +deployment openshift-machine-api/machine-api-operator (70 of 344) +clusteroperator machine-api (71 of 344) + + +10->11 + + + + +12 + +namespace openshift-apiserver-operator (72 of 344) +customresourcedefinition openshiftapiservers.operator.openshift.io (73 of 344) +openshiftapiserver cluster (74 of 344) +configmap openshift-apiserver-operator/openshift-apiserver-operator-config (75 of 344) +clusterrolebinding system:openshift:operator:openshift-apiserver-operator (76 of 344) +serviceaccount openshift-apiserver-operator/openshift-apiserver-operator (77 of 344) +service openshift-apiserver-operator/metrics (78 of 344) +deployment openshift-apiserver-operator/openshift-apiserver-operator (79 of 344) +clusteroperator openshift-apiserver (80 of 344) + + +10->12 + + + + +13 + +no manifests + + +11->13 + + + + +12->13 + + + + +14 + +clusterrole system:openshift:cloud-credential-operator:cluster-reader (81 of 344) +customresourcedefinition credentialsrequests.cloudcredential.openshift.io (82 of 344) +namespace openshift-cloud-credential-operator (83 of 344) +clusterrole cloud-credential-operator-role (84 of 344) +clusterrolebinding cloud-credential-operator-rolebinding (85 of 344) +service openshift-cloud-credential-operator/controller-manager-service (86 of 344) +deployment openshift-cloud-credential-operator/cloud-credential-operator (87 of 344) +credentialsrequest openshift-cloud-credential-operator/cloud-credential-operator-iam-ro (88 of 344) +clusteroperator cloud-credential (89 of 344) + + +13->14 + + + + +15 + +namespace openshift-authentication-operator (90 of 344) +namespace openshift-authentication (91 of 344) +customresourcedefinition authentications.operator.openshift.io (92 of 344) +authentication cluster (93 of 344) +service openshift-authentication-operator/metrics (94 of 344) +configmap openshift-authentication-operator/authentication-operator-config (95 of 344) +clusterrolebinding system:openshift:operator:authentication (96 of 344) +serviceaccount openshift-authentication-operator/authentication-operator (97 of 344) +serviceaccount openshift-authentication/oauth-openshift (98 of 344) +secret openshift-authentication/v4-0-config-system-ocp-branding-template (99 of 344) +deployment openshift-authentication-operator/authentication-operator (100 of 344) +clusteroperator authentication (101 of 344) + + +13->15 + + + + +16 + +namespace openshift-machine-api (102 of 344) +customresourcedefinition clusterautoscalers.autoscaling.openshift.io (103 of 344) +customresourcedefinition machineautoscalers.autoscaling.openshift.io (104 of 344) +clusterrole cluster-autoscaler-operator (105 of 344) +role openshift-machine-api/cluster-autoscaler-operator (106 of 344) +rolebinding openshift-machine-api/cluster-autoscaler-operator (107 of 344) +clusterrolebinding cluster-autoscaler-operator (108 of 344) +serviceaccount openshift-machine-api/cluster-autoscaler-operator (109 of 344) +serviceaccount openshift-machine-api/cluster-autoscaler (110 of 344) +clusterrole cluster-autoscaler (111 of 344) +role openshift-machine-api/cluster-autoscaler (112 of 344) +clusterrolebinding cluster-autoscaler (113 of 344) +rolebinding openshift-machine-api/cluster-autoscaler (114 of 344) +deployment openshift-machine-api/cluster-autoscaler-operator (115 of 344) +clusteroperator cluster-autoscaler (116 of 344) + + +13->16 + + + + +17 + +customresourcedefinition configs.imageregistry.operator.openshift.io (117 of 344) +namespace openshift-image-registry (118 of 344) +credentialsrequest openshift-cloud-credential-operator/openshift-image-registry (119 of 344) +clusterrole cluster-image-registry-operator (120 of 344) +clusterrolebinding default-account-cluster-image-registry-operator (121 of 344) +serviceaccount openshift-image-registry/cluster-image-registry-operator (122 of 344) +configmap openshift-image-registry/serviceca (123 of 344) +role openshift-image-registry/node-ca (124 of 344) +rolebinding openshift-image-registry/node-ca (125 of 344) +serviceaccount openshift-image-registry/node-ca (126 of 344) +deployment openshift-image-registry/cluster-image-registry-operator (127 of 344) +clusteroperator image-registry (128 of 344) + + +13->17 + + + + +18 + +clusterrole openshift-ingress-operator (129 of 344) +customresourcedefinition ingresscontrollers.operator.openshift.io (130 of 344) +credentialsrequest openshift-cloud-credential-operator/openshift-ingress (131 of 344) +namespace openshift-ingress-operator (132 of 344) +clusterrolebinding openshift-ingress-operator (133 of 344) +rolebinding openshift-ingress-operator/ingress-operator (134 of 344) +role openshift-ingress-operator/ingress-operator (135 of 344) +serviceaccount openshift-ingress-operator/ingress-operator (136 of 344) +deployment openshift-ingress-operator/ingress-operator (137 of 344) +clusteroperator ingress (138 of 344) + + +13->18 + + + + +19 + +namespace openshift-cluster-machine-approver (139 of 344) +serviceaccount openshift-cluster-machine-approver/machine-approver-sa (140 of 344) +clusterrole system:openshift:controller:machine-approver (141 of 344) +clusterrolebinding system:openshift:controller:machine-approver (142 of 344) +deployment openshift-cluster-machine-approver/machine-approver (143 of 344) + + +13->19 + + + + +20 + +namespace openshift-monitoring (144 of 344) +clusterrole cluster-monitoring-operator (145 of 344) +serviceaccount openshift-monitoring/cluster-monitoring-operator (146 of 344) +clusterrolebinding cluster-monitoring-operator (147 of 344) +deployment openshift-monitoring/cluster-monitoring-operator (148 of 344) +clusteroperator monitoring (149 of 344) +operatorgroup openshift-monitoring/openshift-cluster-monitoring (150 of 344) + + +13->20 + + + + +21 + +namespace openshift-cluster-node-tuning-operator (151 of 344) +customresourcedefinition tuneds.tuned.openshift.io (152 of 344) +serviceaccount openshift-cluster-node-tuning-operator/cluster-node-tuning-operator (153 of 344) +clusterrole cluster-node-tuning-operator (154 of 344) +clusterrolebinding cluster-node-tuning-operator (155 of 344) +deployment openshift-cluster-node-tuning-operator/cluster-node-tuning-operator (156 of 344) +clusteroperator node-tuning (157 of 344) + + +13->21 + + + + +22 + +namespace openshift-controller-manager-operator (158 of 344) +namespace openshift-controller-manager (159 of 344) +customresourcedefinition openshiftcontrollermanagers.operator.openshift.io (160 of 344) +openshiftcontrollermanager cluster (161 of 344) +configmap openshift-controller-manager-operator/openshift-controller-manager-operator-config (162 of 344) +service openshift-controller-manager-operator/metrics (163 of 344) +configmap openshift-controller-manager-operator/openshift-controller-manager-images (164 of 344) +clusterrolebinding system:openshift:operator:openshift-controller-manager-operator (165 of 344) +serviceaccount openshift-controller-manager-operator/openshift-controller-manager-operator (166 of 344) +deployment openshift-controller-manager-operator/openshift-controller-manager-operator (167 of 344) +clusteroperator openshift-controller-manager (168 of 344) + + +13->22 + + + + +23 + +customresourcedefinition configs.samples.operator.openshift.io (169 of 344) +namespace openshift-cluster-samples-operator (170 of 344) +serviceaccount openshift-cluster-samples-operator/cluster-samples-operator (171 of 344) +role openshift-cluster-samples-operator/cluster-samples-operator (172 of 344) +clusterrole cluster-samples-operator (173 of 344) +rolebinding openshift-cluster-samples-operator/cluster-samples-operator (174 of 344) +clusterrolebinding cluster-samples-operator (175 of 344) +rolebinding openshift/cluster-samples-operator-openshift-edit (176 of 344) +role openshift-config/coreos-pull-secret-reader (177 of 344) +rolebinding openshift-config/cluster-samples-operator-openshift-config-secret-reader (178 of 344) +deployment openshift-cluster-samples-operator/cluster-samples-operator (179 of 344) +clusteroperator openshift-samples (180 of 344) +imagestream openshift/cli (181 of 344) +imagestream openshift/cli-artifacts (182 of 344) +imagestream openshift/installer (183 of 344) +imagestream openshift/installer-artifacts (184 of 344) +imagestream openshift/tests (185 of 344) +imagestream openshift/must-gather (186 of 344) + + +13->23 + + + + +24 + +namespace openshift-cluster-storage-operator (187 of 344) +clusterrolebinding cluster-storage-operator (188 of 344) +clusterrole cluster-storage-operator (189 of 344) +rolebinding openshift-cluster-storage-operator/cluster-storage-operator (190 of 344) +role openshift-cluster-storage-operator/cluster-storage-operator (191 of 344) +serviceaccount openshift-cluster-storage-operator/cluster-storage-operator (192 of 344) +deployment openshift-cluster-storage-operator/cluster-storage-operator (193 of 344) +clusteroperator storage (194 of 344) + + +13->24 + + + + +25 + +namespace openshift-service-catalog-apiserver-operator (195 of 344) +customresourcedefinition servicecatalogapiservers.operator.openshift.io (196 of 344) +servicecatalogapiserver cluster (197 of 344) +configmap openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator-config (198 of 344) +configmap openshift-service-catalog-apiserver-operator/version-mapping (199 of 344) +clusterrolebinding system:openshift:operator:openshift-service-catalog-apiserver-operator (200 of 344) +serviceaccount openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator (201 of 344) +service openshift-service-catalog-apiserver-operator/metrics (202 of 344) +deployment openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator (203 of 344) +clusteroperator service-catalog-apiserver (204 of 344) + + +13->25 + + + + +26 + +namespace openshift-service-catalog-controller-manager-operator (205 of 344) +customresourcedefinition servicecatalogcontrollermanagers.operator.openshift.io (206 of 344) +configmap openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator-config (207 of 344) +service openshift-service-catalog-controller-manager-operator/metrics (208 of 344) +clusterrolebinding system:openshift:operator:openshift-service-catalog-controller-manager-operator (209 of 344) +serviceaccount openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator (210 of 344) +deployment openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator (211 of 344) +clusteroperator service-catalog-controller-manager (212 of 344) + + +13->26 + + + + +27 + +customresourcedefinition consoles.operator.openshift.io (213 of 344) +oauthclient console (214 of 344) +console cluster (215 of 344) +namespace openshift-console (216 of 344) +namespace openshift-console-operator (217 of 344) +clusterrole console-operator (218 of 344) +role openshift-console/console-operator (219 of 344) +role openshift-config-managed/console-operator (220 of 344) +role openshift-config-managed/console-public (221 of 344) +role openshift-console-operator/console-operator (222 of 344) +rolebinding openshift-console/console-operator (223 of 344) +rolebinding openshift-console-operator/console-operator (224 of 344) +clusterrolebinding console-operator (225 of 344) +rolebinding openshift-config-managed/console-operator (226 of 344) +rolebinding openshift-config-managed/console-public (227 of 344) +configmap openshift-config-managed/console-public (228 of 344) +configmap openshift-console-operator/console-operator-config (229 of 344) +serviceaccount openshift-console-operator/console-operator (230 of 344) +deployment openshift-console/downloads (231 of 344) +route openshift-console/downloads (232 of 344) +service openshift-console/downloads (233 of 344) +deployment openshift-console-operator/console-operator (234 of 344) +clusteroperator console (235 of 344) + + +13->27 + + + + +28 + +namespace openshift-operator-lifecycle-manager (236 of 344) +namespace openshift-operators (237 of 344) +clusterrole system:controller:operator-lifecycle-manager (238 of 344) +serviceaccount openshift-operator-lifecycle-manager/olm-operator-serviceaccount (239 of 344) +clusterrolebinding olm-operator-binding-openshift-operator-lifecycle-manager (240 of 344) +service openshift-operator-lifecycle-manager/olm-operator-metrics (241 of 344) +service openshift-operator-lifecycle-manager/catalog-operator-metrics (242 of 344) +customresourcedefinition clusterserviceversions.operators.coreos.com (243 of 344) +customresourcedefinition installplans.operators.coreos.com (244 of 344) +customresourcedefinition subscriptions.operators.coreos.com (245 of 344) +customresourcedefinition catalogsources.operators.coreos.com (246 of 344) +deployment openshift-operator-lifecycle-manager/olm-operator (247 of 344) +deployment openshift-operator-lifecycle-manager/catalog-operator (248 of 344) +clusterrole aggregate-olm-edit (249 of 344) +clusterrole aggregate-olm-view (250 of 344) +customresourcedefinition operatorgroups.operators.coreos.com (251 of 344) +configmap openshift-operator-lifecycle-manager/olm-operators (252 of 344) +catalogsource openshift-operator-lifecycle-manager/olm-operators (253 of 344) +operatorgroup openshift-operators/global-operators (254 of 344) +operatorgroup openshift-operator-lifecycle-manager/olm-operators (255 of 344) +subscription openshift-operator-lifecycle-manager/packageserver (256 of 344) +clusteroperator operator-lifecycle-manager (257 of 344) +clusteroperator operator-lifecycle-manager-catalog (258 of 344) +clusterserviceversion openshift-operator-lifecycle-manager/packageserver.v0.9.0 (259 of 344) +deployment openshift-operator-lifecycle-manager/packageserver (260 of 344) +servicemonitor openshift-operator-lifecycle-manager/olm-operator (261 of 344) +servicemonitor openshift-operator-lifecycle-manager/catalog-operator (262 of 344) +rolebinding openshift-operator-lifecycle-manager/operator-lifecycle-manager-metrics (263 of 344) +role openshift-operator-lifecycle-manager/operator-lifecycle-manager-metrics (264 of 344) + + +13->28 + + + + +29 + +namespace openshift-marketplace (265 of 344) +customresourcedefinition catalogsourceconfigs.operators.coreos.com (266 of 344) +customresourcedefinition operatorsources.operators.coreos.com (267 of 344) +serviceaccount openshift-marketplace/marketplace-operator (268 of 344) +clusterrole marketplace-operator (269 of 344) +role openshift-marketplace/marketplace-operator (270 of 344) +clusterrolebinding marketplace-operator (271 of 344) +rolebinding openshift-marketplace/marketplace-operator (272 of 344) +operatorsource openshift-marketplace/redhat-operators (273 of 344) +operatorsource openshift-marketplace/certified-operators (274 of 344) +operatorsource openshift-marketplace/community-operators (275 of 344) +deployment openshift-marketplace/marketplace-operator (276 of 344) +clusteroperator openshift-marketplace/marketplace (277 of 344) + + +13->29 + + + + +30 + +clusterrolebinding system:openshift:operator:service-ca-operator (278 of 344) +namespace openshift-service-ca-operator (279 of 344) +customresourcedefinition servicecas.operator.openshift.io (280 of 344) +configmap openshift-service-ca-operator/service-ca-operator-config (281 of 344) +serviceca cluster (282 of 344) +serviceaccount openshift-service-ca-operator/service-ca-operator (283 of 344) +deployment openshift-service-ca-operator/service-ca-operator (284 of 344) +serviceca cluster (285 of 344) +clusteroperator service-ca (286 of 344) + + +13->30 + + + + +31 + +no manifests + + +14->31 + + + + +15->31 + + + + +16->31 + + + + +17->31 + + + + +18->31 + + + + +19->31 + + + + +20->31 + + + + +21->31 + + + + +22->31 + + + + +23->31 + + + + +24->31 + + + + +25->31 + + + + +26->31 + + + + +27->31 + + + + +28->31 + + + + +29->31 + + + + +30->31 + + + + +32 + +namespace openshift-network-operator (287 of 344) +customresourcedefinition networks.operator.openshift.io (288 of 344) +clusterrolebinding default-account-cluster-network-operator (289 of 344) +deployment openshift-network-operator/network-operator (290 of 344) +clusteroperator network (291 of 344) + + +31->32 + + + + +33 + +clusterrole openshift-dns-operator (292 of 344) +customresourcedefinition dnses.operator.openshift.io (293 of 344) +namespace openshift-dns-operator (294 of 344) +clusterrolebinding openshift-dns-operator (295 of 344) +rolebinding openshift-dns-operator/dns-operator (296 of 344) +role openshift-dns-operator/dns-operator (297 of 344) +serviceaccount openshift-dns-operator/dns-operator (298 of 344) +deployment openshift-dns-operator/dns-operator (299 of 344) +clusteroperator dns (300 of 344) + + +31->33 + + + + +34 + +clusterrole system:openshift:machine-config-operator:cluster-reader (301 of 344) +namespace openshift-machine-config-operator (302 of 344) +customresourcedefinition mcoconfigs.machineconfiguration.openshift.io (303 of 344) +configmap openshift-machine-config-operator/machine-config-operator-images (304 of 344) +clusterrolebinding default-account-openshift-machine-config-operator (305 of 344) +deployment openshift-machine-config-operator/machine-config-operator (306 of 344) +configmap openshift-machine-config-operator/machine-config-osimageurl (307 of 344) +clusteroperator machine-config (308 of 344) +deployment openshift-machine-config-operator/etcd-quorum-guard (309 of 344) +poddisruptionbudget openshift-machine-config-operator/etcd-quorum-guard (310 of 344) + + +32->34 + + + + +33->34 + + + + +35 + +role openshift-authentication-operator/prometheus-k8s (311 of 344) +role openshift-authentication/prometheus-k8s (312 of 344) +rolebinding openshift-authentication-operator/prometheus-k8s (313 of 344) +rolebinding openshift-authentication/prometheus-k8s (314 of 344) +servicemonitor openshift-authentication-operator/authentication-operator (315 of 344) +servicemonitor openshift-authentication/oauth-openshift (316 of 344) + + +34->35 + + + + +36 + +clusterrole registry-monitoring (317 of 344) +clusterrolebinding registry-monitoring (318 of 344) +role openshift-image-registry/prometheus-k8s (319 of 344) +rolebinding openshift-image-registry/prometheus-k8s (320 of 344) +servicemonitor openshift-image-registry/image-registry (321 of 344) + + +34->36 + + + + +37 + +role openshift-service-catalog-apiserver-operator/prometheus-k8s (322 of 344) +rolebinding openshift-service-catalog-apiserver-operator/prometheus-k8s (323 of 344) +servicemonitor openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator (324 of 344) + + +34->37 + + + + +38 + +role openshift-service-catalog-controller-manager-operator/prometheus-k8s (325 of 344) +rolebinding openshift-service-catalog-controller-manager-operator/prometheus-k8s (326 of 344) +servicemonitor openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator (327 of 344) + + +34->38 + + + + +39 + +configmap openshift-config-managed/release-verification (328 of 344) + + +34->39 + + + + +40 + +role openshift-kube-apiserver-operator/prometheus-k8s (329 of 344) +rolebinding openshift-kube-apiserver-operator/prometheus-k8s (330 of 344) +servicemonitor openshift-kube-apiserver-operator/kube-apiserver-operator (331 of 344) + + +34->40 + + + + +41 + +role openshift-kube-controller-manager-operator/prometheus-k8s (332 of 344) +rolebinding openshift-kube-controller-manager-operator/prometheus-k8s (333 of 344) +servicemonitor openshift-kube-controller-manager-operator/kube-controller-manager-operator (334 of 344) + + +34->41 + + + + +42 + +role openshift-kube-scheduler-operator/prometheus-k8s (335 of 344) +rolebinding openshift-kube-scheduler-operator/prometheus-k8s (336 of 344) +servicemonitor openshift-kube-scheduler-operator/kube-scheduler-operator (337 of 344) + + +34->42 + + + + +43 + +role openshift-apiserver-operator/prometheus-k8s (338 of 344) +rolebinding openshift-apiserver-operator/prometheus-k8s (339 of 344) +servicemonitor openshift-apiserver-operator/openshift-apiserver-operator (340 of 344) + + +34->43 + + + + +44 + +role openshift-controller-manager-operator/prometheus-k8s (341 of 344) +rolebinding openshift-controller-manager-operator/prometheus-k8s (342 of 344) +servicemonitor openshift-controller-manager-operator/openshift-controller-manager-operator (343 of 344) +servicemonitor openshift-controller-manager/openshift-controller-manager (344 of 344) + + +34->44 + + + + + diff --git a/docs/user/tasks-flatten-by-number-and-component.svg b/docs/user/tasks-flatten-by-number-and-component.svg new file mode 100644 index 0000000000..e2f385373f --- /dev/null +++ b/docs/user/tasks-flatten-by-number-and-component.svg @@ -0,0 +1,731 @@ + + + + + + +tasks + + +0 + +no manifests + + +1 + +customresourcedefinition rolebindingrestrictions.authorization.openshift.io (1 of 344) + + +0->1 + + + + +2 + +customresourcedefinition clusterresourcequotas.quota.openshift.io (2 of 344) + + +0->2 + + + + +3 + +customresourcedefinition securitycontextconstraints.security.openshift.io (3 of 344) + + +0->3 + + + + +4 + +apiserver cluster (4 of 344) +authentication cluster (5 of 344) +build cluster (6 of 344) +console cluster (7 of 344) +dns cluster (8 of 344) +featuregate cluster (9 of 344) +image cluster (10 of 344) +infrastructure cluster (11 of 344) +ingress cluster (12 of 344) +network cluster (13 of 344) +oauth cluster (14 of 344) +project cluster (15 of 344) +scheduler cluster (16 of 344) + + +0->4 + + + + +5 + +customresourcedefinition apiservers.config.openshift.io (17 of 344) +customresourcedefinition authentications.config.openshift.io (18 of 344) +customresourcedefinition builds.config.openshift.io (19 of 344) +customresourcedefinition consoles.config.openshift.io (20 of 344) +customresourcedefinition dnses.config.openshift.io (21 of 344) +customresourcedefinition featuregates.config.openshift.io (22 of 344) +customresourcedefinition images.config.openshift.io (23 of 344) +customresourcedefinition infrastructures.config.openshift.io (24 of 344) +customresourcedefinition ingresses.config.openshift.io (25 of 344) +customresourcedefinition networks.config.openshift.io (26 of 344) +customresourcedefinition oauths.config.openshift.io (27 of 344) +namespace openshift-config-managed (28 of 344) +namespace openshift-config (29 of 344) +customresourcedefinition projects.config.openshift.io (30 of 344) +customresourcedefinition schedulers.config.openshift.io (31 of 344) +clusterrole system:openshift:cluster-config-operator:cluster-reader (32 of 344) + + +0->5 + + + + +6 + +customresourcedefinition clusterresourcequotas.quota.openshift.io (33 of 344) + + +0->6 + + + + +7 + +namespace openshift-kube-apiserver-operator (34 of 344) +customresourcedefinition kubeapiservers.operator.openshift.io (35 of 344) +kubeapiserver cluster (36 of 344) +service openshift-kube-apiserver-operator/metrics (37 of 344) +configmap openshift-kube-apiserver-operator/kube-apiserver-operator-config (38 of 344) +clusterrolebinding system:openshift:operator:kube-apiserver-operator (39 of 344) +serviceaccount openshift-kube-apiserver-operator/kube-apiserver-operator (40 of 344) +deployment openshift-kube-apiserver-operator/kube-apiserver-operator (41 of 344) +clusteroperator kube-apiserver (42 of 344) + + +0->7 + + + + +8 + +namespace openshift-kube-controller-manager-operator (43 of 344) +customresourcedefinition kubecontrollermanagers.operator.openshift.io (44 of 344) +kubecontrollermanager cluster (45 of 344) +service openshift-kube-controller-manager-operator/metrics (46 of 344) +configmap openshift-kube-controller-manager-operator/kube-controller-manager-operator-config (47 of 344) +clusterrolebinding system:openshift:operator:kube-controller-manager-operator (48 of 344) +serviceaccount openshift-kube-controller-manager-operator/kube-controller-manager-operator (49 of 344) +deployment openshift-kube-controller-manager-operator/kube-controller-manager-operator (50 of 344) +clusteroperator kube-controller-manager (51 of 344) + + +0->8 + + + + +9 + +namespace openshift-kube-scheduler-operator (52 of 344) +customresourcedefinition kubeschedulers.operator.openshift.io (53 of 344) +kubescheduler cluster (54 of 344) +service openshift-kube-scheduler-operator/metrics (55 of 344) +configmap openshift-kube-scheduler-operator/openshift-kube-scheduler-operator-config (56 of 344) +clusterrolebinding system:openshift:operator:cluster-kube-scheduler-operator (57 of 344) +serviceaccount openshift-kube-scheduler-operator/openshift-kube-scheduler-operator (58 of 344) +deployment openshift-kube-scheduler-operator/openshift-kube-scheduler-operator (59 of 344) +clusteroperator kube-scheduler (60 of 344) + + +0->9 + + + + +10 + +credentialsrequest openshift-cloud-credential-operator/openshift-machine-api (61 of 344) +namespace openshift-machine-api (62 of 344) +configmap openshift-machine-api/machine-api-operator-images (63 of 344) +customresourcedefinition machines.machine.openshift.io (64 of 344) +customresourcedefinition machinesets.machine.openshift.io (65 of 344) +customresourcedefinition machinehealthchecks.healthchecking.openshift.io (66 of 344) +serviceaccount openshift-machine-api/machine-api-operator (67 of 344) +clusterrole machine-api-manager (68 of 344) +clusterrolebinding machine-api-manager-rolebinding (69 of 344) +deployment openshift-machine-api/machine-api-operator (70 of 344) +clusteroperator machine-api (71 of 344) + + +0->10 + + + + +11 + +namespace openshift-apiserver-operator (72 of 344) +customresourcedefinition openshiftapiservers.operator.openshift.io (73 of 344) +openshiftapiserver cluster (74 of 344) +configmap openshift-apiserver-operator/openshift-apiserver-operator-config (75 of 344) +clusterrolebinding system:openshift:operator:openshift-apiserver-operator (76 of 344) +serviceaccount openshift-apiserver-operator/openshift-apiserver-operator (77 of 344) +service openshift-apiserver-operator/metrics (78 of 344) +deployment openshift-apiserver-operator/openshift-apiserver-operator (79 of 344) +clusteroperator openshift-apiserver (80 of 344) + + +0->11 + + + + +12 + +clusterrole system:openshift:cloud-credential-operator:cluster-reader (81 of 344) +customresourcedefinition credentialsrequests.cloudcredential.openshift.io (82 of 344) +namespace openshift-cloud-credential-operator (83 of 344) +clusterrole cloud-credential-operator-role (84 of 344) +clusterrolebinding cloud-credential-operator-rolebinding (85 of 344) +service openshift-cloud-credential-operator/controller-manager-service (86 of 344) +deployment openshift-cloud-credential-operator/cloud-credential-operator (87 of 344) +credentialsrequest openshift-cloud-credential-operator/cloud-credential-operator-iam-ro (88 of 344) +clusteroperator cloud-credential (89 of 344) + + +0->12 + + + + +13 + +namespace openshift-authentication-operator (90 of 344) +namespace openshift-authentication (91 of 344) +customresourcedefinition authentications.operator.openshift.io (92 of 344) +authentication cluster (93 of 344) +service openshift-authentication-operator/metrics (94 of 344) +configmap openshift-authentication-operator/authentication-operator-config (95 of 344) +clusterrolebinding system:openshift:operator:authentication (96 of 344) +serviceaccount openshift-authentication-operator/authentication-operator (97 of 344) +serviceaccount openshift-authentication/oauth-openshift (98 of 344) +secret openshift-authentication/v4-0-config-system-ocp-branding-template (99 of 344) +deployment openshift-authentication-operator/authentication-operator (100 of 344) +clusteroperator authentication (101 of 344) + + +0->13 + + + + +14 + +namespace openshift-machine-api (102 of 344) +customresourcedefinition clusterautoscalers.autoscaling.openshift.io (103 of 344) +customresourcedefinition machineautoscalers.autoscaling.openshift.io (104 of 344) +clusterrole cluster-autoscaler-operator (105 of 344) +role openshift-machine-api/cluster-autoscaler-operator (106 of 344) +rolebinding openshift-machine-api/cluster-autoscaler-operator (107 of 344) +clusterrolebinding cluster-autoscaler-operator (108 of 344) +serviceaccount openshift-machine-api/cluster-autoscaler-operator (109 of 344) +serviceaccount openshift-machine-api/cluster-autoscaler (110 of 344) +clusterrole cluster-autoscaler (111 of 344) +role openshift-machine-api/cluster-autoscaler (112 of 344) +clusterrolebinding cluster-autoscaler (113 of 344) +rolebinding openshift-machine-api/cluster-autoscaler (114 of 344) +deployment openshift-machine-api/cluster-autoscaler-operator (115 of 344) +clusteroperator cluster-autoscaler (116 of 344) + + +0->14 + + + + +15 + +customresourcedefinition configs.imageregistry.operator.openshift.io (117 of 344) +namespace openshift-image-registry (118 of 344) +credentialsrequest openshift-cloud-credential-operator/openshift-image-registry (119 of 344) +clusterrole cluster-image-registry-operator (120 of 344) +clusterrolebinding default-account-cluster-image-registry-operator (121 of 344) +serviceaccount openshift-image-registry/cluster-image-registry-operator (122 of 344) +configmap openshift-image-registry/serviceca (123 of 344) +role openshift-image-registry/node-ca (124 of 344) +rolebinding openshift-image-registry/node-ca (125 of 344) +serviceaccount openshift-image-registry/node-ca (126 of 344) +deployment openshift-image-registry/cluster-image-registry-operator (127 of 344) +clusteroperator image-registry (128 of 344) + + +0->15 + + + + +16 + +clusterrole openshift-ingress-operator (129 of 344) +customresourcedefinition ingresscontrollers.operator.openshift.io (130 of 344) +credentialsrequest openshift-cloud-credential-operator/openshift-ingress (131 of 344) +namespace openshift-ingress-operator (132 of 344) +clusterrolebinding openshift-ingress-operator (133 of 344) +rolebinding openshift-ingress-operator/ingress-operator (134 of 344) +role openshift-ingress-operator/ingress-operator (135 of 344) +serviceaccount openshift-ingress-operator/ingress-operator (136 of 344) +deployment openshift-ingress-operator/ingress-operator (137 of 344) +clusteroperator ingress (138 of 344) + + +0->16 + + + + +17 + +namespace openshift-cluster-machine-approver (139 of 344) +serviceaccount openshift-cluster-machine-approver/machine-approver-sa (140 of 344) +clusterrole system:openshift:controller:machine-approver (141 of 344) +clusterrolebinding system:openshift:controller:machine-approver (142 of 344) +deployment openshift-cluster-machine-approver/machine-approver (143 of 344) + + +0->17 + + + + +18 + +namespace openshift-monitoring (144 of 344) +clusterrole cluster-monitoring-operator (145 of 344) +serviceaccount openshift-monitoring/cluster-monitoring-operator (146 of 344) +clusterrolebinding cluster-monitoring-operator (147 of 344) +deployment openshift-monitoring/cluster-monitoring-operator (148 of 344) +clusteroperator monitoring (149 of 344) +operatorgroup openshift-monitoring/openshift-cluster-monitoring (150 of 344) + + +0->18 + + + + +19 + +namespace openshift-cluster-node-tuning-operator (151 of 344) +customresourcedefinition tuneds.tuned.openshift.io (152 of 344) +serviceaccount openshift-cluster-node-tuning-operator/cluster-node-tuning-operator (153 of 344) +clusterrole cluster-node-tuning-operator (154 of 344) +clusterrolebinding cluster-node-tuning-operator (155 of 344) +deployment openshift-cluster-node-tuning-operator/cluster-node-tuning-operator (156 of 344) +clusteroperator node-tuning (157 of 344) + + +0->19 + + + + +20 + +namespace openshift-controller-manager-operator (158 of 344) +namespace openshift-controller-manager (159 of 344) +customresourcedefinition openshiftcontrollermanagers.operator.openshift.io (160 of 344) +openshiftcontrollermanager cluster (161 of 344) +configmap openshift-controller-manager-operator/openshift-controller-manager-operator-config (162 of 344) +service openshift-controller-manager-operator/metrics (163 of 344) +configmap openshift-controller-manager-operator/openshift-controller-manager-images (164 of 344) +clusterrolebinding system:openshift:operator:openshift-controller-manager-operator (165 of 344) +serviceaccount openshift-controller-manager-operator/openshift-controller-manager-operator (166 of 344) +deployment openshift-controller-manager-operator/openshift-controller-manager-operator (167 of 344) +clusteroperator openshift-controller-manager (168 of 344) + + +0->20 + + + + +21 + +customresourcedefinition configs.samples.operator.openshift.io (169 of 344) +namespace openshift-cluster-samples-operator (170 of 344) +serviceaccount openshift-cluster-samples-operator/cluster-samples-operator (171 of 344) +role openshift-cluster-samples-operator/cluster-samples-operator (172 of 344) +clusterrole cluster-samples-operator (173 of 344) +rolebinding openshift-cluster-samples-operator/cluster-samples-operator (174 of 344) +clusterrolebinding cluster-samples-operator (175 of 344) +rolebinding openshift/cluster-samples-operator-openshift-edit (176 of 344) +role openshift-config/coreos-pull-secret-reader (177 of 344) +rolebinding openshift-config/cluster-samples-operator-openshift-config-secret-reader (178 of 344) +deployment openshift-cluster-samples-operator/cluster-samples-operator (179 of 344) +clusteroperator openshift-samples (180 of 344) +imagestream openshift/cli (181 of 344) +imagestream openshift/cli-artifacts (182 of 344) +imagestream openshift/installer (183 of 344) +imagestream openshift/installer-artifacts (184 of 344) +imagestream openshift/tests (185 of 344) +imagestream openshift/must-gather (186 of 344) + + +0->21 + + + + +22 + +namespace openshift-cluster-storage-operator (187 of 344) +clusterrolebinding cluster-storage-operator (188 of 344) +clusterrole cluster-storage-operator (189 of 344) +rolebinding openshift-cluster-storage-operator/cluster-storage-operator (190 of 344) +role openshift-cluster-storage-operator/cluster-storage-operator (191 of 344) +serviceaccount openshift-cluster-storage-operator/cluster-storage-operator (192 of 344) +deployment openshift-cluster-storage-operator/cluster-storage-operator (193 of 344) +clusteroperator storage (194 of 344) + + +0->22 + + + + +23 + +namespace openshift-service-catalog-apiserver-operator (195 of 344) +customresourcedefinition servicecatalogapiservers.operator.openshift.io (196 of 344) +servicecatalogapiserver cluster (197 of 344) +configmap openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator-config (198 of 344) +configmap openshift-service-catalog-apiserver-operator/version-mapping (199 of 344) +clusterrolebinding system:openshift:operator:openshift-service-catalog-apiserver-operator (200 of 344) +serviceaccount openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator (201 of 344) +service openshift-service-catalog-apiserver-operator/metrics (202 of 344) +deployment openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator (203 of 344) +clusteroperator service-catalog-apiserver (204 of 344) + + +0->23 + + + + +24 + +namespace openshift-service-catalog-controller-manager-operator (205 of 344) +customresourcedefinition servicecatalogcontrollermanagers.operator.openshift.io (206 of 344) +configmap openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator-config (207 of 344) +service openshift-service-catalog-controller-manager-operator/metrics (208 of 344) +clusterrolebinding system:openshift:operator:openshift-service-catalog-controller-manager-operator (209 of 344) +serviceaccount openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator (210 of 344) +deployment openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator (211 of 344) +clusteroperator service-catalog-controller-manager (212 of 344) + + +0->24 + + + + +25 + +customresourcedefinition consoles.operator.openshift.io (213 of 344) +oauthclient console (214 of 344) +console cluster (215 of 344) +namespace openshift-console (216 of 344) +namespace openshift-console-operator (217 of 344) +clusterrole console-operator (218 of 344) +role openshift-console/console-operator (219 of 344) +role openshift-config-managed/console-operator (220 of 344) +role openshift-config-managed/console-public (221 of 344) +role openshift-console-operator/console-operator (222 of 344) +rolebinding openshift-console/console-operator (223 of 344) +rolebinding openshift-console-operator/console-operator (224 of 344) +clusterrolebinding console-operator (225 of 344) +rolebinding openshift-config-managed/console-operator (226 of 344) +rolebinding openshift-config-managed/console-public (227 of 344) +configmap openshift-config-managed/console-public (228 of 344) +configmap openshift-console-operator/console-operator-config (229 of 344) +serviceaccount openshift-console-operator/console-operator (230 of 344) +deployment openshift-console/downloads (231 of 344) +route openshift-console/downloads (232 of 344) +service openshift-console/downloads (233 of 344) +deployment openshift-console-operator/console-operator (234 of 344) +clusteroperator console (235 of 344) + + +0->25 + + + + +26 + +namespace openshift-operator-lifecycle-manager (236 of 344) +namespace openshift-operators (237 of 344) +clusterrole system:controller:operator-lifecycle-manager (238 of 344) +serviceaccount openshift-operator-lifecycle-manager/olm-operator-serviceaccount (239 of 344) +clusterrolebinding olm-operator-binding-openshift-operator-lifecycle-manager (240 of 344) +service openshift-operator-lifecycle-manager/olm-operator-metrics (241 of 344) +service openshift-operator-lifecycle-manager/catalog-operator-metrics (242 of 344) +customresourcedefinition clusterserviceversions.operators.coreos.com (243 of 344) +customresourcedefinition installplans.operators.coreos.com (244 of 344) +customresourcedefinition subscriptions.operators.coreos.com (245 of 344) +customresourcedefinition catalogsources.operators.coreos.com (246 of 344) +deployment openshift-operator-lifecycle-manager/olm-operator (247 of 344) +deployment openshift-operator-lifecycle-manager/catalog-operator (248 of 344) +clusterrole aggregate-olm-edit (249 of 344) +clusterrole aggregate-olm-view (250 of 344) +customresourcedefinition operatorgroups.operators.coreos.com (251 of 344) +configmap openshift-operator-lifecycle-manager/olm-operators (252 of 344) +catalogsource openshift-operator-lifecycle-manager/olm-operators (253 of 344) +operatorgroup openshift-operators/global-operators (254 of 344) +operatorgroup openshift-operator-lifecycle-manager/olm-operators (255 of 344) +subscription openshift-operator-lifecycle-manager/packageserver (256 of 344) +clusteroperator operator-lifecycle-manager (257 of 344) +clusteroperator operator-lifecycle-manager-catalog (258 of 344) +clusterserviceversion openshift-operator-lifecycle-manager/packageserver.v0.9.0 (259 of 344) +deployment openshift-operator-lifecycle-manager/packageserver (260 of 344) +servicemonitor openshift-operator-lifecycle-manager/olm-operator (261 of 344) +servicemonitor openshift-operator-lifecycle-manager/catalog-operator (262 of 344) +rolebinding openshift-operator-lifecycle-manager/operator-lifecycle-manager-metrics (263 of 344) +role openshift-operator-lifecycle-manager/operator-lifecycle-manager-metrics (264 of 344) + + +0->26 + + + + +27 + +namespace openshift-marketplace (265 of 344) +customresourcedefinition catalogsourceconfigs.operators.coreos.com (266 of 344) +customresourcedefinition operatorsources.operators.coreos.com (267 of 344) +serviceaccount openshift-marketplace/marketplace-operator (268 of 344) +clusterrole marketplace-operator (269 of 344) +role openshift-marketplace/marketplace-operator (270 of 344) +clusterrolebinding marketplace-operator (271 of 344) +rolebinding openshift-marketplace/marketplace-operator (272 of 344) +operatorsource openshift-marketplace/redhat-operators (273 of 344) +operatorsource openshift-marketplace/certified-operators (274 of 344) +operatorsource openshift-marketplace/community-operators (275 of 344) +deployment openshift-marketplace/marketplace-operator (276 of 344) +clusteroperator openshift-marketplace/marketplace (277 of 344) + + +0->27 + + + + +28 + +clusterrolebinding system:openshift:operator:service-ca-operator (278 of 344) +namespace openshift-service-ca-operator (279 of 344) +customresourcedefinition servicecas.operator.openshift.io (280 of 344) +configmap openshift-service-ca-operator/service-ca-operator-config (281 of 344) +serviceca cluster (282 of 344) +serviceaccount openshift-service-ca-operator/service-ca-operator (283 of 344) +deployment openshift-service-ca-operator/service-ca-operator (284 of 344) +serviceca cluster (285 of 344) +clusteroperator service-ca (286 of 344) + + +0->28 + + + + +29 + +namespace openshift-network-operator (287 of 344) +customresourcedefinition networks.operator.openshift.io (288 of 344) +clusterrolebinding default-account-cluster-network-operator (289 of 344) +deployment openshift-network-operator/network-operator (290 of 344) +clusteroperator network (291 of 344) + + +0->29 + + + + +30 + +clusterrole openshift-dns-operator (292 of 344) +customresourcedefinition dnses.operator.openshift.io (293 of 344) +namespace openshift-dns-operator (294 of 344) +clusterrolebinding openshift-dns-operator (295 of 344) +rolebinding openshift-dns-operator/dns-operator (296 of 344) +role openshift-dns-operator/dns-operator (297 of 344) +serviceaccount openshift-dns-operator/dns-operator (298 of 344) +deployment openshift-dns-operator/dns-operator (299 of 344) +clusteroperator dns (300 of 344) + + +0->30 + + + + +31 + +clusterrole system:openshift:machine-config-operator:cluster-reader (301 of 344) +namespace openshift-machine-config-operator (302 of 344) +customresourcedefinition mcoconfigs.machineconfiguration.openshift.io (303 of 344) +configmap openshift-machine-config-operator/machine-config-operator-images (304 of 344) +clusterrolebinding default-account-openshift-machine-config-operator (305 of 344) +deployment openshift-machine-config-operator/machine-config-operator (306 of 344) +configmap openshift-machine-config-operator/machine-config-osimageurl (307 of 344) +clusteroperator machine-config (308 of 344) +deployment openshift-machine-config-operator/etcd-quorum-guard (309 of 344) +poddisruptionbudget openshift-machine-config-operator/etcd-quorum-guard (310 of 344) + + +0->31 + + + + +32 + +role openshift-authentication-operator/prometheus-k8s (311 of 344) +role openshift-authentication/prometheus-k8s (312 of 344) +rolebinding openshift-authentication-operator/prometheus-k8s (313 of 344) +rolebinding openshift-authentication/prometheus-k8s (314 of 344) +servicemonitor openshift-authentication-operator/authentication-operator (315 of 344) +servicemonitor openshift-authentication/oauth-openshift (316 of 344) + + +0->32 + + + + +33 + +clusterrole registry-monitoring (317 of 344) +clusterrolebinding registry-monitoring (318 of 344) +role openshift-image-registry/prometheus-k8s (319 of 344) +rolebinding openshift-image-registry/prometheus-k8s (320 of 344) +servicemonitor openshift-image-registry/image-registry (321 of 344) + + +0->33 + + + + +34 + +role openshift-service-catalog-apiserver-operator/prometheus-k8s (322 of 344) +rolebinding openshift-service-catalog-apiserver-operator/prometheus-k8s (323 of 344) +servicemonitor openshift-service-catalog-apiserver-operator/openshift-service-catalog-apiserver-operator (324 of 344) + + +0->34 + + + + +35 + +role openshift-service-catalog-controller-manager-operator/prometheus-k8s (325 of 344) +rolebinding openshift-service-catalog-controller-manager-operator/prometheus-k8s (326 of 344) +servicemonitor openshift-service-catalog-controller-manager-operator/openshift-service-catalog-controller-manager-operator (327 of 344) + + +0->35 + + + + +36 + +configmap openshift-config-managed/release-verification (328 of 344) + + +0->36 + + + + +37 + +role openshift-kube-apiserver-operator/prometheus-k8s (329 of 344) +rolebinding openshift-kube-apiserver-operator/prometheus-k8s (330 of 344) +servicemonitor openshift-kube-apiserver-operator/kube-apiserver-operator (331 of 344) + + +0->37 + + + + +38 + +role openshift-kube-controller-manager-operator/prometheus-k8s (332 of 344) +rolebinding openshift-kube-controller-manager-operator/prometheus-k8s (333 of 344) +servicemonitor openshift-kube-controller-manager-operator/kube-controller-manager-operator (334 of 344) + + +0->38 + + + + +39 + +role openshift-kube-scheduler-operator/prometheus-k8s (335 of 344) +rolebinding openshift-kube-scheduler-operator/prometheus-k8s (336 of 344) +servicemonitor openshift-kube-scheduler-operator/kube-scheduler-operator (337 of 344) + + +0->39 + + + + +40 + +role openshift-apiserver-operator/prometheus-k8s (338 of 344) +rolebinding openshift-apiserver-operator/prometheus-k8s (339 of 344) +servicemonitor openshift-apiserver-operator/openshift-apiserver-operator (340 of 344) + + +0->40 + + + + +41 + +role openshift-controller-manager-operator/prometheus-k8s (341 of 344) +rolebinding openshift-controller-manager-operator/prometheus-k8s (342 of 344) +servicemonitor openshift-controller-manager-operator/openshift-controller-manager-operator (343 of 344) +servicemonitor openshift-controller-manager/openshift-controller-manager (344 of 344) + + +0->41 + + + + + diff --git a/hack/cluster-version-util/main.go b/hack/cluster-version-util/main.go new file mode 100644 index 0000000000..b7c28bf0f0 --- /dev/null +++ b/hack/cluster-version-util/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "log" + + "github.com/spf13/cobra" +) + +func main() { + rootCmd := &cobra.Command{ + Use: "cluster-version-util", + Short: "Utilities for understanding cluster-version operator functionality. Not for production use.", + } + + rootCmd.AddCommand(newTaskGraphCmd()) + + if err := rootCmd.Execute(); err != nil { + log.Fatal(err) + } +} diff --git a/hack/cluster-version-util/task_graph.go b/hack/cluster-version-util/task_graph.go new file mode 100644 index 0000000000..a0f8e304a3 --- /dev/null +++ b/hack/cluster-version-util/task_graph.go @@ -0,0 +1,65 @@ +package main + +import ( + "fmt" + "math/rand" + "time" + + "github.com/spf13/cobra" + + "github.com/openshift/cluster-version-operator/pkg/payload" +) + +var ( + taskGraphOpts struct { + parallel string + } +) + +func newTaskGraphCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "task-graph PATH", + Short: "Render a task graph for a release image extracted into PATH", + Args: cobra.ExactArgs(1), + RunE: runTaskGraphCmd, + } + + cmd.Flags().StringVar(&taskGraphOpts.parallel, "parallel", "by-number-and-component", "The output directory where the manifests will be rendered.") + return cmd +} + +func runTaskGraphCmd(cmd *cobra.Command, args []string) error { + manifestDir := args[0] + release, err := payload.LoadUpdate(manifestDir, "") + if err != nil { + return err + } + + total := len(release.Manifests) + var tasks []*payload.Task + for i := range release.Manifests { + tasks = append(tasks, &payload.Task{ + Index: i + 1, + Total: total, + Manifest: &release.Manifests[i], + }) + } + graph := payload.NewTaskGraph(tasks) + graph.Split(payload.SplitOnJobs) + + switch taskGraphOpts.parallel { + case "by-number-and-component": + graph.Parallelize(payload.ByNumberAndComponent) + case "flatten-by-number-and-component": + graph.Parallelize(payload.FlattenByNumberAndComponent) + case "permute-flatten-by-number-and-component": + r := rand.New(rand.NewSource(time.Now().UnixNano())) + graph.Parallelize(payload.PermuteOrder(payload.FlattenByNumberAndComponent, r)) + default: + return fmt.Errorf("unrecognized parallel strategy %q", taskGraphOpts.parallel) + } + + fmt.Println(graph.Tree()) + + return nil +} diff --git a/pkg/payload/task_graph.go b/pkg/payload/task_graph.go index da114a19f4..785754bb25 100644 --- a/pkg/payload/task_graph.go +++ b/pkg/payload/task_graph.go @@ -6,7 +6,6 @@ import ( "math/rand" "regexp" "sort" - "strconv" "strings" "sync" @@ -340,43 +339,29 @@ func (g *TaskGraph) Roots() []int { return roots } +// Tree renders the task graph in Graphviz DOT. func (g *TaskGraph) Tree() string { - roots := g.Roots() - visited := make([]int, len(g.Nodes)) - stage := 0 - var out []string - var depth []int - for len(roots) > 0 { - depth = append(depth, 0) - for _, i := range roots { - visited[i] = 1 - if d := len(g.Nodes[i].Tasks); d > depth[len(depth)-1] { - depth[len(depth)-1] = d - } - out = append(out, fmt.Sprintf("%d: %d %s in=%v out=%v", stage, i, g.Nodes[i], g.Nodes[i].In, g.Nodes[i].Out)) + out := []string{ + "digraph tasks {", + " labelloc=t;", + " rankdir=TB;", + } + for i, node := range g.Nodes { + label := make([]string, 0, len(node.Tasks)) + for _, task := range node.Tasks { + label = append(label, strings.Replace(task.String(), "\"", "", -1)) } - roots = roots[0:0] - for i, b := range visited { - if b == 1 || !covers(visited, g.Nodes[i].In) { - continue - } - roots = append(roots, i) + if len(label) == 0 { + label = append(label, "no manifests") } - stage++ + out = append(out, fmt.Sprintf(" %d [ label=\"%s\" shape=\"box\" ];", i, strings.Join(label, "\\n"))) } - for i, b := range visited { - if b == 1 { - continue + for i, node := range g.Nodes { + for _, j := range node.Out { + out = append(out, fmt.Sprintf(" %d -> %d;", i, j)) } - out = append(out, fmt.Sprintf("unreachable: %d %s in=%v out=%v", i, g.Nodes[i], g.Nodes[i].In, g.Nodes[i].Out)) - } - var totalDepth int - var levels []string - for _, d := range depth { - levels = append(levels, strconv.Itoa(d)) - totalDepth += d } - out = append(out, fmt.Sprintf("summary: depth=%d, levels=%s", totalDepth, strings.Join(levels, ","))) + out = append(out, "}") return strings.Join(out, "\n") }