Jaeger Service Integration
In order to support our tracing MVC (https://gitlab.com/gitlab-org/gitlab-ee/issues/4753), we need a way to define what Jaeger server we should connect to.
We we have looked at deploying Jaeger to the cluster, however because of the push rather than pull model, it becomes more important to support existing Jaeger installations. (Applications would have to be reconfigured, can only push to one Jaeger at a time, etc.) We should support this first, then add deployment support in a later release.
The reason for a service integration is as follows:
- The k8s cluster page is not suitable because there are N clusters per project/group, and we should also support Jaeger outside of k8s in the future.
- It's the current established workflow for configuring integration with other apps.
- In the future we can easily promote the integration to its own top level Settings item under a new Operations or Monitoring section.
- Empty states and other flows can push people here in a clean way, since the main workflow will be discoverable.
The workflow itself should be simple and straight forward with support for existing Jaeger deployments in Kubernetes:
- Checkbox for whether to enable or not.
- A dropdown to select an existing cluster. (Alternative is to always use the cluster for the
production
environment, but they may not have one) - Two text boxes for namespace and service name. (We can make these dropdowns in the future, based on data pulled from the cluster.)
This information is enough for us to build the k8s proxy URL, and display it to users.
Future direction
In the future this information could be used as the "default" configuration for all environments. Essentially we would utilize this namespace/service in the corresponding environment's cluster.
Users could also specify a raw URL without the k8s proxy integration, in the event it is outside of k8s or publicly reachable without authentication.