|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
在集群外部暴露 SUSE Observability
概述
SUSE® Observability 可以通过 Kubernetes Ingress 资源进行暴露。本页面上的示例展示了如何使用 Helm 为在 Kubernetes 上运行的 SUSE Observability 配置 Traefik 或 Nginx Ingress 控制器。本页面还记录了在使用不同的配置入口流量的方法时,应该暴露哪些服务/端口组合。
在观察同时托管 SUSE® Observability 的集群时,可以通过在代理安装期间 更改代理配置 来将代理流量完全保留在集群内部。
通过 SUSE® Observability Helm 图表配置 Ingress
SUSE® Observability Helm 图表在其值中暴露了一个 ingress 部分。默认情况下,这处于禁用状态。下面的示例展示了如何使用 Helm 图表配置启用 TLS 加密的入口控制器。请注意,设置控制器本身和证书超出了本文件的范围。
要为 SUSE® Observability 配置 Ingress,请创建一个文件 ingress_values.yaml,内容如下。将 MY_DOMAIN 替换为您自己的域名(与您的 Ingress 控制器关联),并为 tls-secret 设置正确的名称。请查阅您的入口控制器的文档以获取正确的注释设置。下面的所有字段都是可选的,例如,如果不使用 TLS,请省略该部分,但请注意 SUSE® Observability 也不会加密流量。
|
请注意,设置 TLS 是使用 Rancher UI 扩展所必需的。 |
-
Traefik
-
Nginx Ingress
|
已知问题
确保使用 Traefik < 3.6.3 or >= 3.6.7(Helm 图表版本 >= 39.0.0),因为版本 3.6.3 到 3.6.6 存在一个问题,导致某些 API 端点出现错误。特别是,组件高亮页面由于 API 调用被 Traefik 阻止而无法加载,出现 |
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
hosts:
- host: suse-observability.MY_DOMAIN
tls:
- hosts:
- suse-observability.MY_DOMAIN
secretName: tls-secret
|
Ingress Nginx 项目正在 退役中。建议用户考虑使用 Traefik 等替代方案。 |
ingress:
enabled: true
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
hosts:
- host: suse-observability.MY_DOMAIN
tls:
- hosts:
- suse-observability.MY_DOMAIN
secretName: tls-secret
该文件中突出的部分是 Nginx 注释,用于将允许的 proxy-body-size 增加到 50m(大于任何预期请求)。默认情况下,Nginx 允许的最大请求体大小为 1m。SUSE® Observability 代理和其他数据提供者有时会发送更大的请求。因此,您应该确保允许的请求体大小足够大,无论您使用的是 Nginx 还是其他入口控制器。
请确保在初始安装期间生成的值文件中更新 baseUrl,它将被 SUSE® Observability 用于生成代理的便捷安装说明。
示例使用 ingressClassName 字段来指定 ingress,而不是已弃用的 kubernetes.io/ingress.class 注释。如果您的集群定义了默认的 Ingress 类,则可以省略 Ingress 类名称字段。
示例使用 ingressClassName 字段来指定 ingress,而不是已弃用的 kubernetes.io/ingress.class 注释。如果您的集群定义了默认的 Ingress 类,则可以省略 Ingress 类名称字段。
在运行 helm upgrade 命令以部署 SUSE® Observability 时,请包含 ingress_values.yaml 文件:
helm upgrade --install \
--namespace "suse-observability" \
--values "ingress_values.yaml" \
--values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
suse-observability \
suse-observability/suse-observability
|
此步骤假设 生成 |
为开放遥测配置入口规则
SUSE® Observability Helm 图表在其值中公开了一个 opentelemetry-collector 服务,可以创建一个专用的 ingress。默认情况下,这处于禁用状态。用于 opentelemetry-collector 目的的入口需要支持 GRPC 协议。请注意,设置控制器本身和证书超出了本文件的范围。
要为 SUSE® Observability 配置 opentelemetry-collector 入口,请创建一个文件 ingress_otel_values.yaml,内容如下。将 MY_DOMAIN 替换为您自己的域名(与您的入口控制器关联)并为 otlp-tls-secret 设置正确的名称。请查阅您的入口控制器的文档以获取正确的注释设置。以下所有字段都是可选的,例如,如果不使用 TLS,请省略该部分,但请注意 SUSE® Observability 也不会加密流量。
-
Traefik
-
Nginx Ingress
|
已知问题
确保使用 Traefik < 3.6.3 or >= 3.6.7(Helm 图表版本 >= 39.0.0),因为版本 3.6.3 到 3.6.6 存在一个问题,导致某些 API 端点出现错误。特别是,组件高亮页面由于 API 调用被 Traefik 阻止而无法加载,出现 |
|
通过 Traefik 暴露 OpenTelemetry Collector GRPC 端点从 SUSE® Observability Helm 图表版本 v2.8.0 开始得到支持。 请注意,GRPC 主机条目需要一个明确的 |
opentelemetry-collector:
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
hosts:
- host: otlp-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
serviceName: suse-observability-otel-collector-grpc
port: 4317
tls:
- hosts:
- otlp-suse-observability.MY_DOMAIN
secretName: otlp-tls-secret
additionalIngresses:
- name: otlp-http
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
hosts:
- host: otlp-http-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4318
tls:
- hosts:
- otlp-http-suse-observability.MY_DOMAIN
secretName: otlp-http-tls-secret
|
Ingress Nginx 项目正在 退役中。建议用户考虑使用 Traefik 等替代方案。 |
opentelemetry-collector:
ingress:
enabled: true
ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
nginx.ingress.kubernetes.io/backend-protocol: GRPC
hosts:
- host: otlp-suse-observability.MY_DOMAIN
- host: otlp-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4317
tls:
- hosts:
- otlp-suse-observability.MY_DOMAIN
- otlp-suse-observability.MY_DOMAIN
secretName: otlp-tls-secret
additionalIngresses:
- name: otlp-http
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m"
hosts:
- host: otlp-http-suse-observability.MY_DOMAIN
- host: otlp-http-suse-observability.MY_DOMAIN
paths:
- path: /
pathType: Prefix
port: 4318
tls:
- hosts:
- otlp-http-suse-observability.MY_DOMAIN
- otlp-http-suse-observability.MY_DOMAIN
secretName: otlp-http-tls-secret
该文件中突出的部分是 Nginx 注释,用于将允许的 proxy-body-size 增加到 50m(大于任何预期请求)。默认情况下,Nginx 允许的最大请求体大小为 1m。SUSE® Observability 代理和其他数据提供者有时会发送更大的请求。因此,您应该确保允许的请求体大小足够大,无论您使用的是 Nginx 还是其他入口控制器。
请确保在初始安装期间生成的值文件中更新 baseUrl,它将被 SUSE® Observability 用于生成代理的便捷安装说明。
示例使用 ingressClassName 字段来指定 ingress,而不是已弃用的 kubernetes.io/ingress.class 注释。如果您的集群定义了默认的 Ingress 类,则可以省略 Ingress 类名称字段。
示例使用 ingressClassName 字段来指定 ingress,而不是已弃用的 kubernetes.io/ingress.class 注释。如果您的集群定义了默认的 Ingress 类,则可以省略 Ingress 类名称字段。
在运行 helm upgrade 命令以部署 SUSE® Observability 时,请包含 ingress_otel_values.yaml 文件:
helm upgrade \
--install \
--namespace "suse-observability" \
--values "ingress_otel_values.yaml" \
--values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
suse-observability \
suse-observability/suse-observability
|
此步骤假设 生成 |
通过外部工具进行配置
要使 SUSE® Observability 在其安装的 Kubernetes 集群外部可访问,只需将流量路由到 <namespace>-stackstate-k8s-router 服务的 8080 端口。SUSE® Observability 的用户界面可以直接在该服务的根路径下访问(即 http://<namespace>-stackstate-k8s-router:8080),而代理将使用 /receiver 路径(http://<namespace>-stackstate-k8s-router:8080/receiver)。
请确保在初始安装期间生成的值文件中对 baseUrl 进行更新。它将被 SUSE® Observability 用于生成代理的便捷安装说明。
|
在手动配置 Nginx 或类似的 HTTP 服务器作为反向代理时,请确保它能够代理 websockets。对于 Nginx,可以通过在
|
|
SUSE® Observability 本身不使用 TLS 加密流量,TLS 加密预计由入口控制器或外部负载均衡器处理。 |
同一集群中的代理
与 SUSE® Observability 部署在同一集群中的代理当然可以使用 SUSE® Observability 暴露的外部 URL,但也可以配置代理仅通过 Kubernetes 内部网络直接连接到 SUSE® Observability 实例。为此,请将 代理 Kubernetes 安装 中 helm install 命令的 'stackstate.url' 值替换为路由服务的内部集群 URL(另见上文):http://<namespace>-suse-observability-router.<namespace>.svc.cluster.local:8080/receiver/stsAgent(<namespace> 部分需要替换为 SUSE® Observability 的命名空间)。
转发 SUSE® Observability 路由服务端口
默认情况下,SUSE® Observability Helm 图表会部署一个路由 Pod 和服务。该服务暴露端口 8080,这是需要通过 Ingress 暴露的唯一入口点。
您还可以通过端口转发访问 SUSE® Observability;在这样做时,您必须允许 localhost 作为请求来源。
|
要在不配置 Ingress 的情况下访问 UI,请转发路由服务端口:
kubectl port-forward service/<helm-release-name>-suse-observability-router 8080:8080 --namespace suse-observability
通过端口转发访问 SUSE® Observability 时,浏览器将 http://localhost:8080 作为请求来源。
要允许来自此来源的请求,请将其添加到 Helm 值中的 stackstate.allowedOrigins 列表中,或直接传递给 Helm 命令:
helm upgrade \
--install \
--namespace suse-observability \
--values $VALUES_DIR/suse-observability-values/templates/baseConfig_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/sizing_values.yaml \
--values $VALUES_DIR/suse-observability-values/templates/affinity_values.yaml \
--set stackstate.allowedOrigins={"http://localhost:8080"} \
suse-observability \
suse-observability/suse-observability