Bug 1671125

Summary: Clicking "create new" for cluster logging instance from the console goes to a blank page
Product: OpenShift Container Platform Reporter: Mike Fiedler <mifiedle>
Component: Management ConsoleAssignee: Alec Merdler <amerdler>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Fiedler <mifiedle>
Severity: high Docs Contact:
Priority: unspecified    
Version: 4.1.0CC: aos-bugs, jokerman, mmccomas, rmeggins, spadgett, yapei
Target Milestone: ---   
Target Release: 4.1.0   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-02-27 18:10:28 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Mike Fiedler 2019-01-30 19:47:20 UTC
Description of problem:

Not sure if logging is correct component here, please xfer if not.

Clicking "Create New" for "Cluster Logging instance" on the console leads to a blank page 

Version-Release number of selected component (if applicable):  4.0.0-0.nightly-2019-01-29-025207


How reproducible: Always


Steps to Reproduce:
1. Install cluster logging operators using the OperatorHub
2. Click Operator Management -> Install plans -> clusterlogging -> Create New for a cluster logging instance


Actual results:

Browser navigates to blank page at URL https://console-openshift-console.apps.mffiedler-2.perf-testing.devcluster.openshift.com/k8s/ns/openshift-operators/operators.coreos.com~v1alpha1~ClusterServiceVersion/clusterlogging.v0.0.1

See below for response body

Expected results:

Good dialog for creating a new instance


Additional info:

Response body for the GET on https://console-openshift-console.apps.mffiedler-2.perf-testing.devcluster.openshift.com/api/kubernetes/apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/clusterserviceversions/clusterlogging.v0.0.1



{"apiVersion":"operators.coreos.com/v1alpha1","kind":"ClusterServiceVersion","metadata":{"annotations":{"alm-examples":"[\n    {\n      \"apiVersion\": \"logging.openshift.io/v1alpha1\",\n      \"kind\": \"ClusterLogging\",\n      \"metadata\": {\n        \"name\": \"instance\"\n       },\n      \"spec\": {\n        \"managementState\": \"Managed\",\n        \"logStore\": {\n          \"type\": \"elasticsearch\",\n          \"elasticsearch\": {\n            \"nodeCount\": 3,\n            \"redundancyPolicy\": \"SingleRedundancy\",\n            \"storage\": {\n              \"storageClassName\": \"gp2\"\n              \"size\": \"200G\"\n             },\n           },\n        },\n        \"visualization\": {\n          \"type\": \"kibana\",\n          \"kibana\": {\n            \"replicas\": 1\n          },\n        },\n        \"curation\": {\n          \"type\": \"curator\",\n          \"curator\": {\n            \"schedule\": \"30 3 * * *\"\n          },\n        },\n        \"collection\": {\n          \"logs\": {\n            \"type\": \"fluentd\",\n            \"fluentd\": {}\n          },\n        }\n      }\n    }\n]","categories":"openshift optional, logging, aggregated, elasticsearch, kibana, fluentd, efk","certified":"false","containerImage":"quay.io/openshift/cluster-logging-operator:latest","createdAt":"2018-08-01T08:00:00Z","description":"The Cluster Logging Operator for OKD provides a means for configuring and managing your aggregated logging stack.","olm.operatorGroup":"global-operators","olm.operatorNamespace":"openshift-operators","olm.targetNamespaces":"","support":"AOS Logging"},"creationTimestamp":"2019-01-30T15:00:29Z","generation":1,"name":"clusterlogging.v0.0.1","namespace":"openshift-operators","resourceVersion":"582534","selfLink":"/apis/operators.coreos.com/v1alpha1/namespaces/openshift-operators/clusterserviceversions/clusterlogging.v0.0.1","uid":"c8d55095-249f-11e9-8ca7-0680ee20f4a8"},"spec":{"apiservicedefinitions":{},"customresourcedefinitions":{"owned":[{"description":"A Cluster Logging instance","displayName":"Cluster Logging","kind":"ClusterLogging","name":"clusterloggings.logging.openshift.io","resources":[{"kind":"Deployment","name":"","version":"v1"},{"kind":"DaemonSet","name":"","version":"v1"},{"kind":"CronJob","name":"","version":"v1beta1"},{"kind":"ReplicaSet","name":"","version":"v1"},{"kind":"Pod","name":"","version":"v1"},{"kind":"ConfigMap","name":"","version":"v1"},{"kind":"Secret","name":"","version":"v1"},{"kind":"Service","name":"","version":"v1"},{"kind":"Route","name":"","version":"v1"},{"kind":"Elasticsearch","name":"","version":"v1alpha1"}],"specDescriptors":[{"description":"The desired number of Kibana Pods for the Visualization component","displayName":"Kibana Size","path":"visualization.kibana.replicas","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podCount"]},{"description":"Resource requirements for the Kibana pods","displayName":"Kibana Resource Requirements","path":"visualization.kibana.resources","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]},{"description":"The node selector to use for the Kibana Visualization component","displayName":"Kibana Node Selector","path":"visualization.kibana.nodeSelector","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:nodeSelector"]},{"description":"The desired number of Elasticsearch Nodes for the Log Storage component","displayName":"Elasticsearch Size","path":"logStore.elasticsearch.nodeCount","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podCount"]},{"description":"Resource requirements for each Elasticsearch node","displayName":"Elasticsearch Resource Requirements","path":"logStore.elasticsearch.resources","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]},{"description":"The node selector to use for the Elasticsearch Log Storage component","displayName":"Elasticsearch Node Selector","path":"logStore.elasticsearch.nodeSelector","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:nodeSelector"]},{"description":"Resource requirements for the Fluentd pods","displayName":"Fluentd Resource Requirements","path":"collection.logs.fluentd.resources","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]},{"description":"The node selector to use for the Fluentd log collection component","displayName":"Fluentd node selector","path":"collection.logs.fluentd.nodeSelector","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:nodeSelector"]},{"description":"Resource requirements for the Rsyslog pods","displayName":"Rsyslog Resource Requirements","path":"collection.logs.rsyslog.resources","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]},{"description":"The node selector to use for the Rsyslog log collection component","displayName":"Rsyslog node selector","path":"collection.logs.rsyslog.nodeSelector","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:nodeSelector"]},{"description":"Resource requirements for the Curator pods","displayName":"Curator Resource Requirements","path":"curation.curator.resources","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]},{"description":"The node selector to use for the Curator component","displayName":"Curator Node Selector","path":"curation.curator.nodeSelector","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:nodeSelector"]},{"description":"The cron schedule for the Curator component","displayName":"Curation Schedule","path":"curation.curator.schedule"}],"statusDescriptors":[{"description":"The status for each of the Kibana pods for the Visualization component","displayName":"Kibana Status","path":"visualization.kibanaStatus.pods","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The status for each of the Elasticsearch Client pods for the Log Storage component","displayName":"Elasticsearch Client Pod Status","path":"logStore.elasticsearchStatus.pods.client","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The status for each of the Elasticsearch Data pods for the Log Storage component","displayName":"Elasticsearch Data Pod Status","path":"logStore.elasticsearchStatus.pods.data","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The status for each of the Elasticsearch Master pods for the Log Storage component","displayName":"Elasticsearch Master Pod Status","path":"logStore.elasticsearchStatus.pods.master","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The cluster status for each of the Elasticsearch Clusters for the Log Storage component","displayName":"Elasticsearch Cluster Health","path":"logStore.elasticsearchStatus.clusterHealth"},{"description":"The status for each of the Fluentd pods for the Log Collection component","displayName":"Fluentd status","path":"collection.logs.fluentdStatus.pods","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The status for each of the Rsyslog pods for the Log Collection component","displayName":"Rsyslog status","path":"collection.logs.rsyslogStatus.pods","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]}],"version":"v1alpha1"},{"description":"An Elasticsearch cluster instance","displayName":"Elasticsearch","kind":"Elasticsearch","name":"elasticsearches.logging.openshift.io","resources":[{"kind":"Deployment","name":"","version":"v1"},{"kind":"StatefulSet","name":"","version":"v1"},{"kind":"ReplicaSet","name":"","version":"v1"},{"kind":"Pod","name":"","version":"v1"},{"kind":"ConfigMap","name":"","version":"v1"},{"kind":"Service","name":"","version":"v1"},{"kind":"Route","name":"","version":"v1"}],"specDescriptors":[{"description":"The name of the serviceaccount used by the Elasticsearch pods","displayName":"Service Account","path":"serviceAccountName","x-descriptors":["urn:alm:descriptor:io.kubernetes:ServiceAccount"]},{"description":"The name of the configmap used by the Elasticsearch pods","displayName":"Config Map","path":"configMapName","x-descriptors":["urn:alm:descriptor:io.kubernetes:ConfigMap"]},{"description":"The name of the secret used by the Elasticsearch pods","displayName":"Secret","path":"secretName","x-descriptors":["urn:alm:descriptor:io.kubernetes:Secret"]},{"description":"Limits describes the minimum/maximum amount of compute resources required/allowed","displayName":"Resource Requirements","path":"nodeSpec.resources","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:resourceRequirements"]}],"statusDescriptors":[{"description":"The current health of Elasticsearch Cluster","displayName":"Elasticsearch Cluster Health","path":"clusterHealth","x-descriptors":["urn:alm:descriptor:io.kubernetes.phase"]},{"description":"The status for each of the Elasticsearch pods with the Client role","displayName":"Elasticsearch Client Status","path":"pods.client","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The status for each of the Elasticsearch pods with the Data role","displayName":"Elasticsearch Data Status","path":"pods.data","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]},{"description":"The status for each of the Elasticsearch pods with the Master role","displayName":"Elasticsearch Master Status","path":"pods.master","x-descriptors":["urn:alm:descriptor:com.tectonic.ui:podStatuses"]}],"version":"v1alpha1"}]},"description":"The Cluster Logging Operator for OKD provides a means for configuring and managing your aggregated logging stack.\n\nOnce installed, the Cluster Logging Operator provides the following features:\n* **Create/Destroy**: Launch and create an aggregated logging stack in the `openshift-logging` namespace.\n* **Simplified Configuration**: Configure your aggregated logging cluster's structure like components and end points easily.\n","displayName":"Cluster Logging","install":{"spec":{"clusterPermissions":[{"rules":[{"apiGroups":["scheduling.k8s.io"],"resources":["priorityclasses"],"verbs":["*"]},{"apiGroups":["oauth.openshift.io"],"resources":["oauthclients"],"verbs":["*"]}],"serviceAccountName":"cluster-logging-operator"}],"deployments":[{"name":"cluster-logging-operator","spec":{"replicas":1,"selector":{"matchLabels":{"name":"cluster-logging-operator"}},"template":{"metadata":{"labels":{"name":"cluster-logging-operator"}},"spec":{"containers":[{"command":["cluster-logging-operator"],"env":[{"name":"WATCH_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.annotations['olm.targetNamespaces']"}}},{"name":"OPERATOR_NAME","value":"cluster-logging-operator"},{"name":"ELASTICSEARCH_IMAGE","value":"quay.io/openshift/origin-logging-elasticsearch5:latest"},{"name":"FLUENTD_IMAGE","value":"quay.io/openshift/origin-logging-fluentd:latest"},{"name":"KIBANA_IMAGE","value":"quay.io/openshift/origin-logging-kibana5:latest"},{"name":"CURATOR_IMAGE","value":"quay.io/openshift/origin-logging-curator5:latest"},{"name":"OAUTH_PROXY_IMAGE","value":"quay.io/openshift/origin-oauth-proxy:latest"},{"name":"RSYSLOG_IMAGE","value":"docker.io/viaq/rsyslog:latest"}],"image":"quay.io/openshift/origin-cluster-logging-operator:latest","imagePullPolicy":"IfNotPresent","name":"cluster-logging-operator"}],"serviceAccountName":"cluster-logging-operator"}}}},{"name":"elasticsearch-operator","spec":{"replicas":1,"selector":{"matchLabels":{"name":"elasticsearch-operator"}},"template":{"metadata":{"labels":{"name":"elasticsearch-operator"}},"spec":{"containers":[{"command":["elasticsearch-operator"],"env":[{"name":"WATCH_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.annotations['olm.targetNamespaces']"}}},{"name":"OPERATOR_NAME","value":"elasticsearch-operator"}],"image":"quay.io/openshift/origin-elasticsearch-operator:latest","imagePullPolicy":"IfNotPresent","name":"elasticsearch-operator","ports":[{"containerPort":60000,"name":"metrics"}]}],"serviceAccountName":"elasticsearch-operator"}}}}],"permissions":[{"rules":[{"apiGroups":["logging.openshift.io"],"resources":["*"],"verbs":["*"]},{"apiGroups":[""],"resources":["pods","services","endpoints","persistentvolumeclaims","events","configmaps","secrets","serviceaccounts"],"verbs":["*"]},{"apiGroups":["apps"],"resources":["deployments","daemonsets","replicasets","statefulsets"],"verbs":["*"]},{"apiGroups":["route.openshift.io"],"resources":["routes","routes/custom-host"],"verbs":["*"]},{"apiGroups":["batch"],"resources":["cronjobs"],"verbs":["*"]},{"apiGroups":["rbac.authorization.k8s.io"],"resources":["roles","rolebindings"],"verbs":["*"]}],"serviceAccountName":"cluster-logging-operator"},{"rules":[{"apiGroups":["logging.openshift.io"],"resources":["*"],"verbs":["*"]},{"apiGroups":[""],"resources":["pods","pods/exec","services","endpoints","persistentvolumeclaims","events","configmaps","secrets","serviceaccounts"],"verbs":["*"]},{"apiGroups":["apps"],"resources":["deployments","daemonsets","replicasets","statefulsets"],"verbs":["*"]},{"apiGroups":["monitoring.coreos.com"],"resources":["prometheusrules","servicemonitors"],"verbs":["*"]}],"serviceAccountName":"elasticsearch-operator"}]},"strategy":"deployment"},"installModes":[{"supported":true,"type":"OwnNamespace"},{"supported":true,"type":"SingleNamespace"},{"supported":false,"type":"MultiNamespace"},{"supported":true,"type":"AllNamespaces"}],"keywords":["elasticsearch","kibana","fluentd","logging","aggregated","efk"],"links":[{"name":"Elastic","url":"https://www.elastic.co/"},{"name":"Fluentd","url":"https://www.fluentd.org/"},{"name":"Documentation","url":"https://github.com/openshift/cluster-logging-operator/blob/master/README.md"},{"name":"Cluster Logging Operator","url":"https://github.com/openshift/cluster-logging-operator"},{"name":"Elasticsearch Operator","url":"https://github.com/openshift/elasticsearch-operator"}],"maintainers":[{"email":"aos-logging","name":"Red Hat"}],"provider":{"name":"Red Hat, Inc"},"version":"0.0.1"},"status":{"certsLastUpdated":null,"certsRotateAt":null,"conditions":[{"lastTransitionTime":"2019-01-30T15:00:30Z","lastUpdateTime":"2019-01-30T15:00:30Z","message":"requirements not yet checked","phase":"Pending","reason":"RequirementsUnknown"},{"lastTransitionTime":"2019-01-30T15:00:30Z","lastUpdateTime":"2019-01-30T15:00:31Z","message":"one or more requirements couldn't be found","phase":"Pending","reason":"RequirementsNotMet"},{"lastTransitionTime":"2019-01-30T15:00:49Z","lastUpdateTime":"2019-01-30T15:00:49Z","message":"all requirements found, attempting install","phase":"InstallReady","reason":"AllRequirementsMet"},{"lastTransitionTime":"2019-01-30T15:00:58Z","lastUpdateTime":"2019-01-30T15:00:58Z","message":"waiting for install components to report healthy","phase":"Installing","reason":"InstallSucceeded"},{"lastTransitionTime":"2019-01-30T15:00:58Z","lastUpdateTime":"2019-01-30T15:01:03Z","message":"installing: Waiting: waiting for deployment cluster-logging-operator to become ready: Waiting for rollout to finish: 0 of 1 updated replicas are available...\n","phase":"Installing","reason":"InstallWaiting"},{"lastTransitionTime":"2019-01-30T15:01:09Z","lastUpdateTime":"2019-01-30T15:01:09Z","message":"install strategy completed with no errors","phase":"Succeeded","reason":"InstallSucceeded"},{"lastTransitionTime":"2019-01-30T15:56:45Z","lastUpdateTime":"2019-01-30T15:56:45Z","message":"requirements no longer met","phase":"Failed","reason":"RequirementsNotMet"},{"lastTransitionTime":"2019-01-30T15:59:30Z","lastUpdateTime":"2019-01-30T15:59:30Z","message":"install strategy completed with no errors","phase":"Succeeded","reason":"InstallSucceeded"},{"lastTransitionTime":"2019-01-30T16:05:22Z","lastUpdateTime":"2019-01-30T16:05:22Z","message":"requirements no longer met","phase":"Failed","reason":"RequirementsNotMet"},{"lastTransitionTime":"2019-01-30T16:08:03Z","lastUpdateTime":"2019-01-30T16:08:03Z","message":"install strategy completed with no errors","phase":"Succeeded","reason":"InstallSucceeded"},{"lastTransitionTime":"2019-01-30T16:17:11Z","lastUpdateTime":"2019-01-30T16:17:11Z","message":"requirements no longer met","phase":"Failed","reason":"RequirementsNotMet"},{"lastTransitionTime":"2019-01-30T16:22:04Z","lastUpdateTime":"2019-01-30T16:22:04Z","message":"install strategy completed with no errors","phase":"Succeeded","reason":"InstallSucceeded"},{"lastTransitionTime":"2019-01-30T16:45:58Z","lastUpdateTime":"2019-01-30T16:45:58Z","message":"requirements no longer met","phase":"Failed","reason":"RequirementsNotMet"},{"lastTransitionTime":"2019-01-30T16:49:25Z","lastUpdateTime":"2019-01-30T16:49:25Z","message":"install strategy completed with no errors","phase":"Succeeded","reason":"InstallSucceeded"}],"lastTransitionTime":"2019-01-30T16:49:25Z","lastUpdateTime":"2019-01-30T16:49:25Z","message":"install strategy completed with no errors","phase":"Succeeded","reason":"InstallSucceeded","requirementStatus":[{"group":"operators.coreos.com","kind":"ClusterServiceVersion","message":"CSV missing minimum kube version specification","name":"clusterlogging.v0.0.1","status":"NotPresent","version":"v1alpha1"},{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","message":"CRD is present and Established condition is true","name":"clusterloggings.logging.openshift.io","status":"Present","uuid":"c8d711f3-249f-11e9-8ca7-0680ee20f4a8","version":"v1beta1"},{"group":"apiextensions.k8s.io","kind":"CustomResourceDefinition","message":"CRD is present and Established condition is true","name":"elasticsearches.logging.openshift.io","status":"Present","uuid":"c8d8f2ec-249f-11e9-8ca7-0680ee20f4a8","version":"v1beta1"},{"dependents":[{"group":"rbac.authorization.k8s.io","kind":"PolicyRule","message":"cluster rule:{\"verbs\":[\"*\"],\"apiGroups\":[\"scheduling.k8s.io\"],\"resources\":[\"priorityclasses\"]}","status":"Satisfied","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"PolicyRule","message":"cluster rule:{\"verbs\":[\"*\"],\"apiGroups\":[\"oauth.openshift.io\"],\"resources\":[\"oauthclients\"]}","status":"Satisfied","version":"v1beta1"}],"group":"","kind":"ServiceAccount","message":"Service account does not exist","name":"cluster-logging-operator","status":"NotPresent","version":"v1"},{"dependents":[{"group":"rbac.authorization.k8s.io","kind":"PolicyRule","message":"namespaced rule:{\"verbs\":[\"*\"],\"apiGroups\":[\"logging.openshift.io\"],\"resources\":[\"*\"]}","status":"Satisfied","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"PolicyRule","message":"namespaced rule:{\"verbs\":[\"*\"],\"apiGroups\":[\"\"],\"resources\":[\"pods\",\"pods/exec\",\"services\",\"endpoints\",\"persistentvolumeclaims\",\"events\",\"configmaps\",\"secrets\",\"serviceaccounts\"]}","status":"Satisfied","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"PolicyRule","message":"namespaced rule:{\"verbs\":[\"*\"],\"apiGroups\":[\"apps\"],\"resources\":[\"deployments\",\"daemonsets\",\"replicasets\",\"statefulsets\"]}","status":"Satisfied","version":"v1beta1"},{"group":"rbac.authorization.k8s.io","kind":"PolicyRule","message":"namespaced rule:{\"verbs\":[\"*\"],\"apiGroups\":[\"monitoring.coreos.com\"],\"resources\":[\"prometheusrules\",\"servicemonitors\"]}","status":"Satisfied","version":"v1beta1"}],"group":"","kind":"ServiceAccount","message":"","name":"elasticsearch-operator","status":"Present","version":"v1"}]}}

Comment 1 Mike Fiedler 2019-01-31 12:37:00 UTC
*** Bug 1671206 has been marked as a duplicate of this bug. ***

Comment 2 Samuel Padgett 2019-02-05 21:20:27 UTC
The underlying problem should be fixed by https://github.com/operator-framework/community-operators/pull/53 (the example JSON was invalid).

We should catch JSON errors in the console, however, so we don't white screen.

Comment 3 Alec Merdler 2019-02-05 21:28:21 UTC
https://github.com/openshift/console/pull/1171

Comment 4 Mike Fiedler 2019-02-11 16:18:07 UTC
Verified on 4.0.0-0.nightly-2019-02-11-045151