#21980·meshery

[Chore] Remove meshery-nginx-sm references from Server, UI, mesheryctl, Docs, and install artifacts

Author: hiyach28Created Sep 16, 2026Updated Sep 18, 2026

Summary

meshery-extensions/meshery-nginx-sm is being deprecated and archived: F5 NGINX Service Mesh reached end of life in March 2024, and the upstream repository nginxinc/nginx-service-mesh was archived on 2024-03-14. This issue covers removing the adapter's references from this repository.

Tracked in the adapter repository: meshery-extensions/meshery-nginx-sm#342

One issue per adapter repository, no global tracker:

  • #21980 — meshery-nginx-sm (this issue; repo issue: meshery-extensions/meshery-nginx-sm#342)
  • #21981 — meshery-app-mesh (repo issue: meshery-extensions/meshery-app-mesh#206)
  • #21982 — meshery-osm (archived since 2023)
  • #21983 — meshery-cpx (archived since 2023)
  • #21984 — meshery-octarine (archived)
  • #21985 — meshery-tanzu-sm (archived since 2023)

The four already-archived adapters have no issue in their own repositories because those are read-only. Site cleanups are tracked in meshery/meshery.io#2987 and layer5io/layer5#8075.

Pull requests: #22012 (Meshery Server) · #22013 (Meshery UI)

Meshery Server — #22012

  • server/models/adapter.go — the Nginx var (L18) and its entry in ListAvailableAdapters (L22)
  • server/models/meshery_controllers.go — two maps, L1361 and L1421
  • server/internal/graphql/model/helpers.gocontrolPlaneNamespace entry (L23), the "nginx-system" element of the MeshTypeAllMesh array (L27), which the comment above it requires be kept in step, and the override entry at L83

The MeshType GraphQL enum is deliberately out of scope: it still carries CITRIX_SERVICE_MESH, OCTARINE, OPEN_SERVICE_MESH and TANZU from earlier removals, and dropping enum values is a breaking API change requiring make graphql-build. Happy to do it as a separate issue if maintainers want it.

Meshery UI — #22013

  • ui/components/extensions/adapters/constants.ts — the NGINX_SERVICE_MESH entry (L80-88)
  • Delete the unused logos nginx.svg, nginx-light.svg, nginx_service_mesh.svg and nginx_service_mesh-light.svg from ui/public/static/img/adapters/. All four have zero references repository-wide, and nothing builds paths into that folder dynamically — the one dynamic icon path (MesheryAdapterPlayComponent.tsx L553) resolves against the root image directory. ui/public/static/img/component-svg/service-mesh/nginx.svg is left in place, since component icons can be named by server-supplied model data rather than by code here.
  • ui/tests/e2e/fixtures/relationships/meshery-design-fixture.jsondeferred, do not hand-edit (see below)

Why the e2e fixture is deferred

The two meshery-nginx-sm components are not standalone entries in that design:

  • the Deployment (54b280d4-6fd9-4cba-8181-5910792fb980) is another component's immediateParentId and resolvedParentId (L66, L69), and appears four more times inside the relationships array (L3634, L5050, L5096, L5772)
  • the Service (813da01d-17ab-4a3f-b37c-e1f500048039) appears three times in that array (L5072, L5118, L5740)

Deleting the two components by hand therefore means also removing a dependent component and repairing seven relationship entries, in a 6,194-line fixture whose only consumer is relationship_evaluation_properties.spec.js — the spec that evaluates exactly those relationships.

The fixture is a captured kompose conversion of install/docker/docker-compose.yaml. The safe order is to land the install change first and then re-capture the fixture from the updated compose file. The ADAPTER_URLS value at L320 of the fixture mirrors that compose file too, so it is covered by the same re-capture. Suggest treating this as a task under the install PR.

mesheryctl

  • mesheryctl/pkg/utils/helpers.goADAPTER_URLS (L323), the image-map entry (L370-373), and L1151
  • mesheryctl/pkg/utils/helpers_test.go — L466, L506, L521, L547, L600
  • mesheryctl/internal/cli/root/fixtures/testConfig.yaml — L15, L32
  • mesheryctl/internal/cli/root/system/testdata/reset/TestResetContexts.yaml — L14
  • mesheryctl/internal/cli/root/adapter/deploy_test.go — L83-L99, the "Test Deploy Nginx" case, which runs deploy nginx service mesh
  • mesheryctl/internal/cli/root/adapter/testdata/deploy.nginx.output.golden — that case's golden file

adapter.go L64-L66 derives the mesh name from the command arguments with a regex rather than a lookup table, so mesheryctl adapter deploy nginx service mesh will keep resolving to NGINX_SERVICE_MESH as long as the GraphQL enum value stays (which it does — see above). After the adapter is archived there is simply nothing listening, so that test case should be dropped rather than retargeted.

mesheryctl adapter validate defaults to meshery-nsm, which is unaffected — NSM is not being archived. #21702 is open against adapter/validate.go and its fixtures, so this work should avoid those files and rebase after it merges.

Install artifacts (requires human review)

  • Helm: Chart.yaml (L14, L60-62), Chart.lock (L20), values.yaml (L17, L165-167), chart README.md (L19, L52-54); delete charts/meshery-nginx-sm/ (11 files); bump the chart version
  • install/deployment_yamls/k8s/meshery-nginx-sm-deployment.yaml and -service.yaml; meshery-deployment.yaml L31
  • install/docker/docker-compose.yaml L8 and install/docker-extension/docker-compose.yaml L13 (commented references)
  • install/playground/docker/docker-compose.yaml (L6, L49-50) and install/playground/kubernetes/playground-deployment.yaml (L65)
  • Re-capture ui/tests/e2e/fixtures/relationships/meshery-design-fixture.json from the updated compose file

The adapter is enabled: false by default, so runtime impact is nil.

Meshery Docs

  • Delete docs/content/en/extensions/adapters/nginx-sm/ and its images
  • Delete docs/data/errorref/nginx_errors_export.json — published by a workflow in the adapter repo, which stops on archive, and rendered by docs/layouts/shortcodes/error-codes-index.html
  • Update the layouts that hard-code the adapter: docs/layouts/shortcodes/compatibility-matrix-kubernetes.html (L109-111, L175-178, L222) and docs/layouts/shortcodes/compatibility/compatibilityMatrix.md (L61)
  • Keep the 87 historical results pages under docs/content/en/project/compatibility/meshery-nginx-sm/ and compatibility-matrix/meshery-nginx-past-results.md — they are a record of past test runs

GitHub workflows

No workflow in this repository references this adapter (verified).

Sequencing

Archival of the adapter repository happens only after these merge. Split into separate PRs by area (Server, UI, mesheryctl, install, Docs) to stay under the 500-line guidance.