Skip to content

Commit 3d179db

Browse files
authored
[zh] Add demo/kubernetes-deployment.md (#7200)
Signed-off-by: windsonsea <[email protected]>
1 parent f2980b9 commit 3d179db

File tree

1 file changed

+198
-0
lines changed

1 file changed

+198
-0
lines changed
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
---
2+
title: Kubernetes 部署
3+
linkTitle: Kubernetes
4+
aliases: [kubernetes_deployment]
5+
default_lang_commit: ff6f300f46ac9bfab574f2a73a0555fccb64fda9
6+
cSpell:ignore: loadgen otlphttp spanmetrics
7+
---
8+
9+
我们提供了一个 [OpenTelemetry 演示所用的 Helm Chart](/docs/platforms/kubernetes/helm/demo/)
10+
以帮助你将演示程序部署到现有的 Kubernetes 集群中。
11+
12+
要使用该 Helm Chart,你需要先安装 [Helm](https://helm.sh)。请参考
13+
Helm 的[官方文档](https://helm.sh/docs/)开始使用。
14+
15+
## 前置条件 {#prerequisites}
16+
17+
- Kubernetes 1.24+
18+
- 6 GB 可用内存供应用使用
19+
- Helm 3.14+(仅适用于 Helm 安装方式)
20+
21+
## 使用 Helm 安装(推荐方式) {#install-using-helm-recommended}
22+
23+
添加 OpenTelemetry 的 Helm 仓库:
24+
25+
```shell
26+
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
27+
```
28+
29+
使用以下命令以 `my-otel-demo` 作为发布名称安装 Chart:
30+
31+
```shell
32+
helm install my-otel-demo open-telemetry/opentelemetry-demo
33+
```
34+
35+
{{% alert title="注意" %}}
36+
37+
OpenTelemetry 演示所用的 Helm Chart 不支持从一个版本升级到另一个版本。
38+
如果需要升级 Chart,必须先删除现有发布,然后安装新版本。
39+
40+
{{% /alert %}}
41+
42+
{{% alert title="注意" %}}
43+
44+
要使用下述所有方式,必须使用 OpenTelemetry 演示所用的 Helm Chart v0.11.0 或更高版本。
45+
46+
{{% /alert %}}
47+
48+
## 使用 kubectl 安装 {#install-using-kubectl}
49+
50+
以下命令会将演示应用安装到你的 Kubernetes 集群中:
51+
52+
```shell
53+
kubectl create --namespace otel-demo -f https://raw.githubusercontent.com/open-telemetry/opentelemetry-demo/main/kubernetes/opentelemetry-demo.yaml
54+
```
55+
56+
{{% alert title="注意" %}}
57+
58+
OpenTelemetry 演示所用的 Kubernetes 清单文件不支持从一个版本升级到另一个版本。
59+
如果需要升级演示应用,必须先删除已有资源再重新安装新版本。
60+
61+
{{% /alert %}}
62+
63+
{{% alert title="注意" %}}
64+
65+
这些清单文件是由 Helm Chart 生成的,提供仅为方便起见。推荐使用 Helm Chart 进行安装。
66+
67+
{{% /alert %}}
68+
69+
## 使用演示应用 {#use-the-demo}
70+
71+
要使用演示应用,你需要将服务暴露到 Kubernetes 集群外部。你可以使用
72+
`kubectl port-forward` 命令将服务转发到本地系统,或配置服务类型(如 LoadBalancer)并可选地部署 Ingress 资源。
73+
74+
### 使用 kubectl port-forward 暴露服务 {#expose-services-using-kubectl-port-forward}
75+
76+
要暴露 `frontend-proxy` 服务,请使用以下命令(将 `default` 替换为你的 Helm Chart 所在的命名空间):
77+
78+
```shell
79+
kubectl --namespace default port-forward svc/frontend-proxy 8080:8080
80+
```
81+
82+
{{% alert title="注意" %}}
83+
84+
`kubectl port-forward` 会持续代理端口直到该进程终止。你可能需要为每次端口转发单独打开终端,
85+
并在完成后使用 <kbd>Ctrl-C</kbd> 终止进程。
86+
87+
{{% /alert %}}
88+
89+
设置好 frontend-proxy 的端口转发后,你可以访问以下地址:
90+
91+
- Web 商店:[http://localhost:8080/](http://localhost:8080/)
92+
- Grafana:[http://localhost:8080/grafana/](http://localhost:8080/grafana/)
93+
- 负载生成器 UI:[http://localhost:8080/loadgen/](http://localhost:8080/loadgen/)
94+
- Jaeger UI:[http://localhost:8080/jaeger/ui/](http://localhost:8080/jaeger/ui/)
95+
- Flagd 配置器 UI:[http://localhost:8080/feature](http://localhost:8080/feature)
96+
97+
### 使用 Service 或 Ingress 配置暴露演示组件
98+
99+
{{% alert title="注意" %}}
100+
101+
推荐在安装 Helm Chart 时使用 values 文件以便进行额外配置。
102+
103+
{{% /alert %}}
104+
105+
#### 配置 Ingress 资源 {#configure-ingress-resources}
106+
107+
{{% alert title="注意" %}}
108+
109+
某些 Kubernetes 集群可能没有支持 LoadBalancer 类型服务或 Ingress
110+
资源的基础设施。使用这些配置前请确认集群是否具备支持。
111+
112+
{{% /alert %}}
113+
114+
每个演示组件(如 frontend-proxy)都可以配置其 Kubernetes 服务类型。
115+
默认情况下不会创建 Ingress,但你可以通过组件的 `ingress` 属性进行启用和配置。
116+
117+
以下示例配置将为 frontend-proxy 组件启用 Ingress 资源,可添加到你的 values 文件中:
118+
119+
```yaml
120+
components:
121+
frontend-proxy:
122+
ingress:
123+
enabled: true
124+
annotations: {}
125+
hosts:
126+
- host: otel-demo.my-domain.com
127+
paths:
128+
- path: /
129+
pathType: Prefix
130+
port: 8080
131+
```
132+
133+
部分 Ingress 控制器可能需要特殊注解或服务类型,请参考你的 Ingress 控制器文档获取详细信息。
134+
135+
#### 配置服务类型
136+
137+
每个演示组件(如 frontend-proxy)都可以配置其 Kubernetes 服务类型。
138+
默认是 `ClusterIP`,你可以通过每个组件的 `service.type` 属性进行更改。
139+
140+
以下示例配置将 frontend-proxy 组件的服务类型更改为 LoadBalancer,可添加到你的 values 文件中:
141+
142+
```yaml
143+
components:
144+
frontend-proxy:
145+
service:
146+
type: LoadBalancer
147+
```
148+
149+
#### 配置浏览器端遥测
150+
151+
为了正确收集来自浏览器的 span,你还需要指定 OpenTelemetry Collector 的访问地址。
152+
frontend-proxy 定义了一个前缀为 `/otlp-http` 的路由,你可以通过设置 frontend 组件的以下环境变量来配置 Collector 端点:
153+
154+
```yaml
155+
components:
156+
frontend:
157+
envOverrides:
158+
- name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
159+
value: http://otel-demo.my-domain.com/otlp-http/v1/traces
160+
```
161+
162+
## 使用你自己的后端服务 {#bring-your-own-backend}
163+
164+
你可能希望将 Web 商店作为演示应用,连接到你已有的可观测性后端
165+
(例如已有的 Jaeger、Zipkin 实例,或[你选择的其他厂商](/ecosystem/vendors/))。
166+
167+
OpenTelemetry Collector 的配置在 Helm Chart 中是可暴露的。
168+
你进行的任何添加都会被合并到默认配置中。这可以让你添加自定义导出器,并将其加入到需要的管道中:
169+
170+
```yaml
171+
opentelemetry-collector:
172+
config:
173+
exporters:
174+
otlphttp/example:
175+
endpoint: <your-endpoint-url>
176+
177+
service:
178+
pipelines:
179+
traces:
180+
exporters: [spanmetrics, otlphttp/example]
181+
```
182+
183+
{{% alert title="注意" %}}
184+
185+
在使用 Helm 合并 YAML 值时,对象会合并,但数组会被替换。如果你重写了
186+
`traces` 管道的 `exporters`,必须确保其中包含 `spanmetrics` 导出器,否则将会出错。
187+
188+
{{% /alert %}}
189+
190+
某些厂商的后端可能要求添加额外的认证参数,请参考相关文档。部分后端需要使用不同的导出器,你可以在
191+
[opentelemetry-collector-contrib/exporter](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter)
192+
中找到这些导出器及其文档。
193+
194+
使用自定义的 `my-values-file.yaml` values 文件安装 Helm Chart 的命令如下:
195+
196+
```shell
197+
helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml
198+
```

0 commit comments

Comments
 (0)