{"id":13600735,"url":"https://github.com/jaegertracing/jaeger-operator","last_synced_at":"2025-05-12T13:09:26.188Z","repository":{"id":37269717,"uuid":"146413101","full_name":"jaegertracing/jaeger-operator","owner":"jaegertracing","description":"Jaeger Operator for Kubernetes simplifies deploying and running Jaeger on Kubernetes.","archived":false,"fork":false,"pushed_at":"2025-05-09T01:53:37.000Z","size":25265,"stargazers_count":1070,"open_issues_count":121,"forks_count":347,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-05-12T13:08:51.130Z","etag":null,"topics":["hacktoberfest","jaegertracing","kubernetes","operator"],"latest_commit_sha":null,"homepage":"https://www.jaegertracing.io/docs/latest/operator/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaegertracing.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-28T08:03:12.000Z","updated_at":"2025-05-12T03:05:54.000Z","dependencies_parsed_at":"2022-07-13T15:59:47.164Z","dependency_job_id":"6acc209a-5e89-481c-937b-219c1b44ad63","html_url":"https://github.com/jaegertracing/jaeger-operator","commit_stats":{"total_commits":1349,"total_committers":136,"mean_commits":9.919117647058824,"dds":0.8146775389177168,"last_synced_commit":"a52e826c14b629fc589b4529bab02b94f86001ab"},"previous_names":[],"tags_count":142,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaegertracing%2Fjaeger-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaegertracing%2Fjaeger-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaegertracing%2Fjaeger-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaegertracing%2Fjaeger-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaegertracing","download_url":"https://codeload.github.com/jaegertracing/jaeger-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745160,"owners_count":21957317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","jaegertracing","kubernetes","operator"],"created_at":"2024-08-01T18:00:47.496Z","updated_at":"2025-05-12T13:09:26.171Z","avatar_url":"https://github.com/jaegertracing.png","language":"Go","funding_links":[],"categories":["Go","Repository is obsolete","operator候选列表"],"sub_categories":["Awesome Operators in the Wild","部署类型"],"readme":"[![Build Status][ci-img]][ci] [![Go Report Card][goreport-img]][goreport] [![Code Coverage][cov-img]][cov] [![GoDoc][godoc-img]][godoc] [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/jaegertracing/jaeger-operator/badge)](https://securityscorecards.dev/viewer/?uri=github.com/jaegertracing/jaeger-operator)\n\n# Jaeger Operator for Kubernetes\n\nThe Jaeger Operator is an implementation of a [Kubernetes Operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/).\n\n## Getting started\n\nFirstly, ensure an [ingress-controller is deployed](https://kubernetes.github.io/ingress-nginx/deploy/). When using `minikube`, you can use the `ingress` add-on: `minikube start --addons=ingress`\n\nThen follow the Jaeger Operator [installation instructions](https://www.jaegertracing.io/docs/latest/operator/).\n\nOnce the `jaeger-operator` deployment in the namespace `observability` is ready, create a Jaeger instance, like:\n\n```\nkubectl apply -n observability -f - \u003c\u003cEOF\napiVersion: jaegertracing.io/v1\nkind: Jaeger\nmetadata:\n  name: simplest\nEOF\n```\n\nThis will create a Jaeger instance named `simplest`. The Jaeger UI is served via the `Ingress`, like:\n\n```console\n$ kubectl get -n observability ingress\nNAME             HOSTS     ADDRESS          PORTS     AGE\nsimplest-query   *         192.168.122.34   80        3m\n```\n\nIn this example, the Jaeger UI is available at http://192.168.122.34.\n\nThe official documentation for the Jaeger Operator, including all its customization options, are available under the main [Jaeger Documentation](https://www.jaegertracing.io/docs/latest/operator/).\n\nCRD-API documentation can be found [here](./docs/api.md).\n\n## Compatibility matrix\n\nSee the compatibility matrix [here](./COMPATIBILITY.md).\n\n\n### Jaeger Operator vs. Jaeger\n\nThe Jaeger Operator follows the same versioning as the operand (Jaeger) up to the minor part of the version. For example, the Jaeger Operator v1.22.2 tracks Jaeger 1.22.0. The patch part of the version indicates the patch level of the operator itself, not that of Jaeger. Whenever a new patch version is released for Jaeger, we'll release a new patch version of the operator.\n\n### Jaeger Operator vs. Kubernetes\n\nWe strive to be compatible with the widest range of Kubernetes versions as possible, but some changes to Kubernetes itself require us to break compatibility with older Kubernetes versions, be it because of code imcompatibilities, or in the name of maintainability.\n\nOur promise is that we'll follow what's common practice in the Kubernetes world and support N-2 versions, based on the release date of the Jaeger Operator.\n\nFor instance, when we released v1.22.0, the latest Kubernetes version was v1.20.5. As such, the minimum version of Kubernetes we support for Jaeger Operator v1.22.0 is v1.18 and we tested it with up to 1.20.\n\nThe Jaeger Operator *might* work on versions outside of the given range, but when opening new issues, please make sure to test your scenario on a supported version.\n\n\n### Jaeger Operator vs. Strimzi Operator\n\nWe maintain compatibility with a set of tested Strimzi operator versions, but some changes in Strimzi operator require us to break compatibility with older versions.\n\nThe jaeger Operator *might* work on other untested versions of Strimzi Operator, but when opening new issues, please make sure to test your scenario on a supported version.\n\n\n## (experimental) Generate Kubernetes manifest file\n\nSometimes it is preferable to generate plain manifests files instead of running an operator in a cluster. `jaeger-operator generate` generates kubernetes manifests from a given CR. In this example we apply the manifest generated by [examples/simplest.yaml](https://raw.githubusercontent.com/jaegertracing/jaeger-operator/main/examples/simplest.yaml) to the namespace `jaeger-test`:\n\n```bash\ncurl https://raw.githubusercontent.com/jaegertracing/jaeger-operator/main/examples/simplest.yaml | docker run -i --rm jaegertracing/jaeger-operator:main generate | kubectl apply -n jaeger-test -f -\n```\n\nIt is recommended to deploy the operator instead of generating a static manifest.\n\n## Jaeger V2 Operator\n\nAs the Jaeger V2 is released, it is decided that Jaeger V2 will deployed on Kubernetes using [OpenTelemetry Operator](https://github.com/open-telemetry/opentelemetry-operator). This will benefit both the users of Jaeger and OpenTelemetry. To use Jaeger V2 with OpenTelemetry Operator, the steps are as follows:\n\n* Install the cert-manager in the existing cluster with the command:\n```bash\nkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml\n```\n\nPlease verify all the resources (e.g., Pods and Deployments) are in a ready state in the `cert-manager` namespace.\n\n* Install the OpenTelemetry Operator by running:\n```bash\nkubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml\n```\n\nPlease verify all the resources (e.g., Pods and Deployments) are in a ready state in the `opentelemetry-operator-system` namespace.\n\n### Using Jaeger with in-memory storage\n\nOnce all the resources are ready, create a Jaeger instance as follows:\n```yaml\nkubectl apply -f - \u003c\u003cEOF\napiVersion: opentelemetry.io/v1beta1\nkind: OpenTelemetryCollector\nmetadata:\n  name: jaeger-inmemory-instance\nspec:\n  image: jaegertracing/jaeger:latest\n  ports:\n  - name: jaeger\n    port: 16686\n  config:\n    service:\n      extensions: [jaeger_storage, jaeger_query]\n      pipelines:\n        traces:\n          receivers: [otlp]    \n          exporters: [jaeger_storage_exporter]\n    extensions:\n      jaeger_query:\n        storage:\n          traces: memstore\n      jaeger_storage:\n        backends:\n          memstore:\n            memory:\n              max_traces: 100000\n    receivers:\n      otlp:\n        protocols:\n          grpc:\n            endpoint: 0.0.0.0:4317\n          http:\n            endpoint: 0.0.0.0:4318\n    exporters:\n      jaeger_storage_exporter:\n        trace_storage: memstore\nEOF\n```\n\nTo use the in-memory storage ui for Jaeger V2, expose the pod, deployment or the service as follows:\n```bash\nkubectl port-forward deployment/jaeger-inmemory-instance-collector 8080:16686\n```\n\nOr\n\n```bash\nkubectl port-forward service/jaeger-inmemory-instance-collector 8080:16686\n```\n\nOnce done, type `localhost:8080` in the browser to interact with the UI.\n\n[Note] There's an ongoing development in OpenTelemetry Operator where users will be able to interact directly with the UI.\n\n### Using Jaeger with database to store traces\nTo use Jaeger V2 with the supported database, it is mandatory to create database deployments and they should be in `ready` state [(ref)](https://www.jaegertracing.io/docs/2.0/storage/).\n\nCreate a Kubernetes Service that exposes the database pods enabling communication between the database and Jaeger pods.\n\nThis can be achieved by creating a service in two ways, first by creating it [manually](https://kubernetes.io/docs/concepts/services-networking/service/) or second by creating it using imperative command.\n\n```bash\nkubectl expose pods \u003cpod-name\u003e --port=\u003cport-number\u003e --name=\u003cname-of-the-service\u003e\n```\n\nOr\n\n```bash\nkubectl expose deployment \u003cdeployment-name\u003e --port=\u003cport-number\u003e --name=\u003cname-of-the-service\u003e\n```\n\nAfter the service is created, add the name of the service as an endpoint in their respective config as follows:\n\n* [Cassandra DB](https://github.com/jaegertracing/jaeger/blob/main/cmd/jaeger/config-cassandra.yaml):\n```yaml\njaeger_storage:\n  backends:\n    some_storage:\n      cassandra:\n        connection:\n          servers: [\u003cname-of-the-service\u003e]\n```\n\n* [ElasticSearch](https://github.com/jaegertracing/jaeger/blob/main/cmd/jaeger/config-elasticsearch.yaml):\n```yaml\njaeger_storage:\n  backends:\n    some_storage:\n      elasticseacrh:\n        servers: [\u003cname-of-the-service\u003e]\n```\n\nUse the modified config to create Jaeger instance with the help of OpenTelemetry Operator.\n\n```yaml\nkubectl apply -f - \u003c\u003cEOF\napiVersion: opentelemetry.io/v1beta1\nkind: OpenTelemetryCollector\nmetadata:\n  name: jaeger-storage-instance # name of your choice\nspec:\n  image: jaegertracing/jaeger:latest\n  ports:\n  - name: jaeger\n    port: 16686\n  config:\n    # modified config\nEOF\n```\n\n## Contributing and Developing\n\nPlease see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[Apache 2.0 License](./LICENSE).\n\n[ci-img]: https://github.com/jaegertracing/jaeger-operator/workflows/CI%20Workflow/badge.svg\n[ci]: https://github.com/jaegertracing/jaeger-operator/actions\n[cov-img]: https://codecov.io/gh/jaegertracing/jaeger-operator/branch/main/graph/badge.svg\n[cov]: https://codecov.io/github/jaegertracing/jaeger-operator/\n[goreport-img]: https://goreportcard.com/badge/github.com/jaegertracing/jaeger-operator\n[goreport]: https://goreportcard.com/report/github.com/jaegertracing/jaeger-operator\n[godoc-img]: https://godoc.org/github.com/jaegertracing/jaeger-operator?status.svg\n[godoc]: https://godoc.org/github.com/jaegertracing/jaeger-operator/apis/v1#JaegerSpec\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaegertracing%2Fjaeger-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaegertracing%2Fjaeger-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaegertracing%2Fjaeger-operator/lists"}