rancher-partner-charts/charts/f5/nginx-service-mesh/app-readme.md

2.1 KiB

NGINX Service Mesh

NGINX Service Mesh is a fully integrated lightweight service mesh that leverages a data plane powered by NGINX Plus to manage container traffic in Kubernetes environments.

NGINX Service Mesh is supported in Rancher 2.5+ when deploying from the Apps and Marketplace. NGINX Service Mesh is not currently supported on k3s.

Observability

NGINX Service Mesh can integrate with a number of tracing services using OpenTelemetry or OpenTracing.

Using OpenTelemetry

Telemetry can only be enabled by editing the configuration YAML directly in the Rancher UI. When installing NGINX Service Mesh, select the Edit YAML option. To enable telemetry, set the tracing object to {} and fill out the telemetry object. The telemetry object expects a samplerRatio, and the host and port of your OTLP gRPC collector. For example:

tracing: {}
telemetry:
  samplerRatio: 0.01
  exporters:
    otlp:
      host: "my-otlp-collector-host"
      port: 4317

Using OpenTracing

Note: OpenTracing is deprecated in favor of OpenTelemetry.

Tracing can only be enabled if telemetry is not enabled. In order to enable tracing, edit the configuration YAML directly in the Rancher UI. When installing NGINX Service Mesh, select the Edit YAML option, set the telemetry object to {}, and fill out the tracing object. The tracing object expects a sampleRate, an address and a backend. The three options for backend are "jaeger", "zipkin", and "datadog".

For example:

telemetry: {}
tracing:
  sampleRate: 1
  backend: "jaeger"
  address: "jaeger.my-namespace:6831"

Automatic Sidecar Injection

We recommend deploying the mesh with auto-injection disabled globally. You can then opt-in the namespaces where you would like auto-injection enabled. This ensures that Pods are not automatically injected without your consent, especially in system namespaces.

To opt-in a namespace you can label it with injector.nsm.nginx.com/auto-inject=enabled or provide a list of enabledNamespaces in YAML. For example:

enabledNamespaces:
- namespace1
- namespace2