From fcce8c8e9602f082898e4b1a1723628063bcc3a0 Mon Sep 17 00:00:00 2001 From: awgreene Date: Fri, 18 Jan 2019 15:34:14 -0500 Subject: [PATCH] Add Jaeger CSV and Package for OLM integration and deployment of the operator through OperatorHub - This pull requests introduces a CSV and Package which can be bundled together and used by the [Operator Lifecycle Manager](https://github.com/operator-framework/operator-lifecycle-manager) to install, manage, and upgrade the Jaeger Operator in a cluster. - The Jaeger operator versions available to all Kubernetes clusters using OLM can be updated by submitting a pull request to the [Community Operators GitHub repo](https://github.com/operator-framework/community-operators) that includes the latest CSVs, CRDs, and Packages. - The CSV was created based of the [documentation provided by OLM](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/Documentation/design/building-your-csv.md) and the [documentation](https://github.com/operator-framework/community-operators/blob/master/docs/marketplace-required-csv-annotations.md) provided by [OperatorHub](https://github.com/operator-framework/operator-marketplace). - The operator and the CSV were tested using the [scorecard functionality recently introduced](https://github.com/operator-framework/operator-sdk/pull/758) to the [Operator-sdk](https://github.com/operator-framework/operator-sdk). Currently, the Jaeger operator scores a 4/18 on the scorecard tests. OLM integration could be improved by future code changes to the Operator: - Addressing the operator-sdk scorecard tests that failed. - Adding additional information to the Jaeger CSV based on the [CSV documentation provided by OLM](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/Documentation/design/building-your-csv.md) - Adding additional information to the Jaeger CSV based on the [CSV documentation provided by OperatorHub](https://github.com/operator-framework/community-operators/blob/master/docs/marketplace-required-csv-annotations.md) Signed-off-by: awgreene --- deploy/bundle/jaeger.package.yaml | 4 + .../jaeger.v1.8.2.clusterserviceversion.yaml | 134 ++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 deploy/bundle/jaeger.package.yaml create mode 100644 deploy/bundle/jaeger.v1.8.2.clusterserviceversion.yaml diff --git a/deploy/bundle/jaeger.package.yaml b/deploy/bundle/jaeger.package.yaml new file mode 100644 index 000000000..63e031679 --- /dev/null +++ b/deploy/bundle/jaeger.package.yaml @@ -0,0 +1,4 @@ +packageName: jaeger +channels: +- name: alpha + currentCSV: jaeger-operator.v1.8.2 diff --git a/deploy/bundle/jaeger.v1.8.2.clusterserviceversion.yaml b/deploy/bundle/jaeger.v1.8.2.clusterserviceversion.yaml new file mode 100644 index 000000000..431b17394 --- /dev/null +++ b/deploy/bundle/jaeger.v1.8.2.clusterserviceversion.yaml @@ -0,0 +1,134 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + name: jaeger-operator.v1.8.2 + namespace: placeholder + annotations: + categories: "tracing, monitoring, troubleshooting, distributed" + certified: "false" + containerImage: docker.io/jaegertracing/jaeger-operator:1.8.2 + createdAt: 2019-01-09T12:00:00Z + support: Jaeger + alm-examples: >- + [ { "apiVersion": "io.jaegertracing/v1alpha1", "kind": "Jaeger", "metadata": { "name": "agent-as-daemonset" }, "spec":{ "agent": { "strategy": "DaemonSet", "options":{ "log-level": "debug" } } } }, { "apiVersion": "io.jaegertracing/v1alpha1", "kind": "Jaeger", "metadata":{ "name": "simplest" } } ] +spec: + displayName: jaeger-operator + description: |- + Provides monitoring and troubleshooting microservices-based distributed systems + keywords: ['tracing', 'monitoring', 'troubleshooting', 'distributed'] + version: 1.8.2 + maintainers: + - name: Jaeger Google Group + email: jaeger-tracing@googlegroups.com + provider: + name: Jaeger + labels: + name: jaeger-operator + selector: + matchLabels: + name: jaeger-operator + links: + - name: Jaeger Operator Source Code + url: https://github.com/jaegertracing/jaeger-operator + installModes: + - type: OwnNamespace + supported: true + - type: SingleNamespace + supported: true + - type: MultiNamespace + supported: false + - type: AllNamespaces + supported: true + install: + strategy: deployment + spec: + permissions: + - serviceAccountName: jaeger-operator + rules: + - apiGroups: + - "" + resources: + - pods + - services + - endpoints + - persistentvolumeclaims + - events + - configmaps + - secrets + - serviceaccounts + verbs: + - '*' + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - get + - create + - apiGroups: + - io.jaegertracing + resources: + - '*' + verbs: + - '*' + - apiGroups: + - extensions + resources: + - ingresses + verbs: + - "*" + - apiGroups: + - batch + resources: + - jobs + - cronjobs + verbs: + - "*" + deployments: + - name: jaeger-operator + spec: + replicas: 1 + selector: + matchLabels: + name: jaeger-operator + template: + metadata: + labels: + name: jaeger-operator + spec: + serviceAccountName: jaeger-operator + containers: + - name: jaeger-operator + image: jaegertracing/jaeger-operator:1.8.2 + ports: + - containerPort: 60000 + name: metrics + args: ["start"] + imagePullPolicy: Always + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: "jaeger-operator" + customresourcedefinitions: + owned: + - name: jaegers.io.jaegertracing + version: v1alpha1 + kind: Jaeger + displayName: Jaeger + description: A configuration file for a Jaeger custom resource.