Skip to content

Commit 933bcaf

Browse files
[docs] kubernetes (#521)
* kubernetes docs * kubernetes docs * specify min helm chart version Co-authored-by: Austin Parker <[email protected]>
1 parent 1247587 commit 933bcaf

File tree

1 file changed

+142
-2
lines changed

1 file changed

+142
-2
lines changed

docs/kubernetes_deployment.md

+142-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,152 @@ Please refer to Helm's [documentation](https://helm.sh/docs/) to get started.
1616

1717
Add OpenTelemetry Helm repository:
1818

19-
```console
19+
```shell
2020
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
2121
```
2222

2323
To install the chart with the release name my-otel-demo, run the following command:
2424

25-
```console
25+
```shell
2626
helm 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

Comments
 (0)