@@ -16,12 +16,152 @@ Please refer to Helm's [documentation](https://helm.sh/docs/) to get started.
1616
1717Add OpenTelemetry Helm repository:
1818
19- ``` console
19+ ``` shell
2020helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
2121```
2222
2323To install the chart with the release name my-otel-demo, run the following command:
2424
25- ``` console
25+ ``` shell
2626helm install my-otel-demo open-telemetry/opentelemetry-demo
2727```
28+
29+ > ** Note**
30+ > The OpenTelemetry Demo Helm chart version 0.11.0 or greater is required to
31+ > perform all usage methods mentioned below.
32+
33+ ## Use the Demo
34+
35+ The demo application will need the services exposed outside of the Kubernetes
36+ cluster in order to use them. You can expose the services to your local system
37+ using the ` kubectl port-forward ` command or by configuring service types
38+ (ie: LoadBalancer) with optionally deployed ingress resources.
39+
40+ ### Expose services using kubectl port-forward
41+
42+ To expose the frontendproxy service use the following command (replace
43+ ` my-otel-demo ` with your Helm chart release name accordingly):
44+
45+ ``` shell
46+ kubectl port-forward svc/my-otel-demo-frontendproxy 8080:8080
47+ ```
48+
49+ In order for spans from the browser to be properly collected, you will also
50+ need to expose the OpenTelemetry Collector's OTLP/HTTP port (replace
51+ ` my-otel-demo ` with your Helm chart release name accordingly):
52+
53+ ``` shell
54+ kubectl port-forward svc/my-otel-demo-otelcol 4318:4318
55+ ```
56+
57+ > ** Note**
58+ > ` kubectl port-forward ` will proxy the port until the process terminates. You
59+ > may need to create separate terminal sessions for each use of
60+ > ` kubectl port-forward ` , and use CTRL-C to terminate the process when done.
61+
62+ With the frontendproxy and Collector port-forward set up, you can access:
63+
64+ - Webstore: < http://localhost:8080/ >
65+ - Grafana: < http://localhost:8080/grafana/ >
66+ - Feature Flags UI: < http://localhost:8080/feature/ >
67+ - Load Generator UI: < http://localhost:8080/loadgen/ >
68+ - Jaeger UI: < http://localhost:8080/jaeger/ui/ >
69+
70+ ### Expose services using service type configurations
71+
72+ > ** Note**
73+ > Kubernetes clusters may not have the proper infrastructure components to
74+ > enable LoadBalancer service types or ingress resources. Verify your cluster
75+ > has the proper support before using these configuration options.
76+
77+ Each demo service (ie: frontendproxy) offers a way to have its Kubernetes
78+ service type configured. By default these will be ` ClusterIP ` but you can change
79+ each one using the ` serviceType ` property for each service.
80+
81+ To configure the frontendproxy service to use a LoadBalancer service type you
82+ would specify the following in your values file:
83+
84+ ``` yaml
85+ components :
86+ frontendProxy :
87+ serviceType : LoadBalancer
88+ ` ` `
89+
90+ > **Note**
91+ > It is recommended to use a values file when installing the Helm chart in order
92+ > to specify additional configuration options.
93+
94+ The Helm chart does not provide facilities to create ingress resources. If
95+ required these would need to be created manually after installing the Helm chart.
96+ Some Kubernetes providers require specific service types in order to be used by
97+ ingress resources (ie: EKS ALB ingress, requires a NodePort service type).
98+
99+ In order for spans from the browser to be properly collected, you will also
100+ need to expose the OpenTelemetry Collector's OTLP/HTTP port to be accessible to
101+ user web browsers. The location where the OpenTelemetry Collector is exposed
102+ must also be passed into the frontend service using the
103+ ` PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` environment variable. You can do
104+ this using the following in your values file :
105+
106+ ` ` ` yaml
107+ components:
108+ frontend:
109+ env:
110+ - name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
111+ value: "http://otel-demo-collector.mydomain.com:4318/v1/traces"
112+ ` ` `
113+
114+ To install the Helm chart with a custom `my-values-file.yaml` values file use :
115+
116+ ` ` ` shell
117+ helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml
118+ ` ` `
119+
120+ With the frontendproxy and Collector exposed, you can access the demo UI at the
121+ base path for the frontendproxy. Other demo components can be accessed at the
122+ following sub-paths :
123+
124+ - Webstore : ` /` (base)
125+ - Grafana : ` /grafana`
126+ - Feature Flags UI : ` /feature`
127+ - Load Generator UI : ` /loadgen/` (must include trailing slash)
128+ - Jaeger UI : ` /jaeger/ui`
129+
130+ # # Bring your own backend
131+
132+ Likely you want to use the Webstore as a demo application for an observability
133+ backend you already have (e.g. an existing instance of Jaeger, Zipkin, or one
134+ of the [vendor of your choice](https://opentelemetry.io/vendors/).
135+
136+ The OpenTelemetry Collector's configuration is exposed in the Helm chart. Any
137+ additions you do will be merged into the default configuration. You can use
138+ this to add your own exporters, and add them to the desired pipeline(s)
139+
140+ ` ` ` yaml
141+ opentelemetry-collector:
142+ config:
143+ exporters:
144+ otlphttp/example:
145+ endpoint: <your-endpoint-url>
146+
147+ service:
148+ pipelines:
149+ traces:
150+ receivers: [otlp]
151+ processors: [batch]
152+ exporters: [otlphttp/example]
153+ ` ` `
154+
155+ > **Note**
156+ > When merging YAML values with Helm, objects are merged and arrays are replaced.
157+
158+ Vendor backends might require you to add additional parameters for
159+ authentication, please check their documentation. Some backends require
160+ different exporters, you may find them and their documentation available at
161+ [opentelemetry-collector-contrib/exporter](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter).
162+
163+ To install the Helm chart with a custom `my-values-file.yaml` values file use :
164+
165+ ` ` ` shell
166+ helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml
167+ ` ` `
0 commit comments