#! validate-crd: deploy/chart/templates/0000_30_02-clusterserviceversion.crd.yaml #! parse-kind: ClusterServiceVersion apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: name: clusterlogging.v4.1.0 namespace: placeholder annotations: capabilities: Seamless Upgrades categories: "OpenShift Optional, Logging & Tracing" capabilities: "Seamless Upgrades" certified: "false" description: |- The Cluster Logging Operator for OKD provides a means for configuring and managing your aggregated logging stack. containerImage: quay.io/openshift/origin-cluster-logging-operator:latest createdAt: 2018-08-01T08:00:00Z support: AOS Logging olm.skipRange: ">=4.1.0 <4.1.0" alm-examples: |- [ { "apiVersion": "logging.openshift.io/v1", "kind": "ClusterLogging", "metadata": { "name": "instance", "namespace": "openshift-logging" }, "spec": { "managementState": "Managed", "logStore": { "type": "elasticsearch", "elasticsearch": { "nodeCount": 3, "redundancyPolicy": "SingleRedundancy", "storage": { "storageClassName": "gp2", "size": "200G" } } }, "visualization": { "type": "kibana", "kibana": { "replicas": 1 } }, "curation": { "type": "curator", "curator": { "schedule": "30 3 * * *" } }, "collection": { "logs": { "type": "fluentd", "fluentd": {} } } } } ] spec: version: 4.1.0 displayName: Cluster Logging description: | # Cluster Logging The Cluster Logging Operator orchestrates and manages the aggregated logging stack as a cluster-wide service. ##Features * **Create/Destroy**: Launch and create an aggregated logging stack to support the entire OKD cluster. * **Simplified Configuration**: Configure your aggregated logging cluster's structure like components and end points easily. ## Prerequisites and Requirements ### Cluster Logging Namespace Cluster logging and the Cluster Logging Operator is only deployable to the **openshift-logging** namespace. This namespace must be explicitly created by a cluster administrator (e.g. `oc create ns openshift-logging`) ### Elasticsearch Operator The Elasticsearch Operator is responsible for orchestrating and managing cluster logging's Elasticsearch cluster. This operator must be deployed to the global operator group namespace ### Memory Considerations Elasticsearch is a memory intensive application. Cluster Logging will specify that each Elasticsearch node needs 16G of memory for both request and limit unless otherwise defined in the ClusterLogging custom resource. The initial set of OKD nodes may not be large enough to support the Elasticsearch cluster. Additional OKD nodes must be added to the OKD cluster if you desire to run with the recommended(or better) memory. Each ES node can operate with a lower memory setting though this is not recommended for production deployments. keywords: ['elasticsearch', 'kibana', 'fluentd', 'logging', 'aggregated', 'efk'] maintainers: - name: Red Hat email: aos-logging@redhat.com provider: name: Red Hat, Inc 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 installModes: - type: OwnNamespace supported: true - type: SingleNamespace supported: true - type: MultiNamespace supported: false - type: AllNamespaces supported: false install: strategy: deployment spec: permissions: - serviceAccountName: cluster-logging-operator 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: - "*" - apiGroups: - security.openshift.io resources: - securitycontextconstraints resourceNames: - privileged verbs: - use - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - "*" clusterPermissions: - serviceAccountName: cluster-logging-operator rules: - apiGroups: - scheduling.k8s.io resources: - priorityclasses verbs: - "*" - apiGroups: - oauth.openshift.io resources: - oauthclients verbs: - "*" - apiGroups: - rbac.authorization.k8s.io resources: - clusterroles - clusterrolebindings verbs: - "*" - apiGroups: - "" resources: - pods - namespaces verbs: - get - list - watch deployments: - name: cluster-logging-operator spec: replicas: 1 selector: matchLabels: name: cluster-logging-operator template: metadata: labels: name: cluster-logging-operator spec: serviceAccountName: cluster-logging-operator containers: - name: cluster-logging-operator image: quay.io/openshift/origin-cluster-logging-operator:latest imagePullPolicy: IfNotPresent 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: "quay.io/openshift/origin-logging-rsyslog:latest" customresourcedefinitions: owned: - name: clusterloggings.logging.openshift.io version: v1 kind: ClusterLogging displayName: Cluster Logging description: A Cluster Logging instance resources: - kind: Deployment version: v1 - kind: DaemonSet version: v1 - kind: CronJob version: v1beta1 - kind: ReplicaSet version: v1 - kind: Pod version: v1 - kind: ConfigMap version: v1 - kind: Secret version: v1 - kind: Service version: v1 - kind: Route version: v1 - kind: Elasticsearch 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'