vLLM production-stack deployment on Kubernetes

A vLLM production-stack deployment on Kubernetes puts a router in front of model replicas, with metrics and dashboards on your own cluster. This page covers the setup sequence, security gaps to close, and when plain manifests are the better fit.

On this page

What a vLLM production-stack deployment on Kubernetes includes

A platform team that must serve open-weight models to internal applications inside its own cluster needs an inference layer it can install, upgrade and monitor like the rest of its Kubernetes estate. The vLLM production-stack is one of the Kubernetes deployment options listed in the vLLM documentation, and it is installed with a Helm chart. This section describes what that chart is meant to put in place, so the team can decide which parts it will run, which it will replace and which it will leave out. Because the stack is built around vLLM's OpenAI-compatible server, applications that already call the OpenAI API can be pointed at endpoints inside the cluster.

The stack has four main parts. A router sits in front of the model replicas and distributes incoming requests across them. Model replicas are vLLM server pods, each serving a model on accelerators the cluster provides. Grafana provides the observability layer, drawing on vLLM's Prometheus-format metrics, which cover request counts, token throughput, latency and KV cache use. LMCache provides KV cache offloading, which extends where cached attention state can be kept beyond accelerator memory. Each part is a separate decision. Confirm in the chart documentation which parts are enabled by default, which need their own resources and how the router finds the replicas it routes to.

vLLM is licensed under Apache-2.0 and has no paid edition, so the engine itself adds no license line to the budget. The cost comes from four places: accelerator capacity, the infrastructure around it (nodes, storage, networking and metrics retention), implementation by your team or a partner, and the people who operate upgrades, capacity changes and incidents. Grafana is a separate component with its own licensing. Grafana core is licensed under AGPLv3 and Grafana Enterprise is a commercial option, so confirm which edition your standards allow. Ask for each cost line to be quoted separately, and mark which lines are one-time and which recur.

Before committing, confirm the chart's value names, their defaults and the supported replica and router settings in the chart documentation, and check the vLLM Kubernetes deployment page for the supported arrangement of components. Confirm that the LMCache release you plan to use is compatible with your vLLM version. vLLM ships new minor releases about every two weeks, so a pinned chart should be matched to a tested engine version, and that pairing needs a named owner for each upgrade.

The router is the only component that users should reach directly. The vLLM --api-key option does not cover /metrics or /health, and the security documentation advises against relying on it alone, so plan a reverse proxy that allowlists only the endpoints meant for users. Secrets that hold keys should be encrypted at rest in Kubernetes, because they are stored unencrypted in etcd by default. Multi-node traffic between vLLM nodes is also insecure by default, so those nodes need an isolated network.

Prerequisites for a vLLM production-stack deployment on Kubernetes

Confirm these six items before you run the Helm install. Together they determine whether the router, model replicas and observability stack can start, stay current and reach the models they serve. Most delays come from gaps in Kubernetes versions, accelerator support or network placement, and each is inexpensive to check early.

Supported Kubernetes version

Run the production stack on a Kubernetes minor version the project still maintains. As of September 2026, the supported minors were 1.35, 1.36 and 1.37, with 1.35 reaching end of life on February 28, 2027 and 1.37 on October 28, 2027. Check the Kubernetes releases page on the day you install, because the list changes with each release cycle. Confirm that your managed or distribution provider offers the same minor version and that you have a plan for the upgrade path that follows.

Accelerator nodes vLLM supports

Provision nodes with a GPU or other accelerator that vLLM supports: NVIDIA CUDA, AMD ROCm or Intel XPU, or a third-party hardware plugin maintained outside the main repository. Check the vLLM installation documentation for the driver, runtime and model combinations you plan to run. Test one model replica on the target node type before you size the cluster, and confirm who owns driver upgrades, since the node driver stack and the vLLM image must match the hardware.

Helm client and chart pin

Install a Helm client on the workstation or pipeline that runs the deployment, and store the chart version as a pinned value in version control. vLLM ships minor releases about every two weeks, with v0.31.0 dated October 5, 2026, so a floating image tag or chart version can change behavior between installs. Confirm which vLLM version each chart release targets, set the image tag and chart version together, and record both in your change log before each upgrade.

Model artifact source

Decide where model weights and tokenizer files come from, and confirm the cluster can reach that source when pods start. A registry or object store inside your network keeps startup predictable and avoids pulling large files from outside your boundary on every replica restart. For air-gapped clusters, stage a verified copy of the model files and consider the --enable-offline-docs option so the server can run without external assets. Confirm the license terms for each model you copy.

Chat templates for chat models

Each chat model must provide a chat template, or you must supply one with the --chat-template option, before the chat completions API will serve it. Review the template shipped with each model revision, because a template mismatch can produce malformed prompts that look like model quality problems. Keep each template under version control beside the model reference, and test the chat completions endpoint with your own message format before routing user traffic to it.

Isolated network for multi-node traffic

If a model spans nodes through pipeline parallelism, place those nodes on a dedicated network segment. The vLLM security documentation states that communication between nodes is insecure by default, with no authorization or encryption, so the segment must be isolated from user traffic and other tenants. Plan firewall rules for the Ray or multiprocessing ports you use, and confirm that only the router and approved clients can reach the public API.

How the router, model replicas and Grafana fit together

Clients send every request to the router, which is the single entry point the rest of the design depends on. The router forwards each request to one of the vLLM model replicas. Each replica serves OpenAI-compatible paths such as /v1/chat/completions and /v1/completions, and the vLLM server also exposes /v1/responses and /v1/embeddings. Applications written for the OpenAI API can keep their client code and change the base URL. Before you set client timeouts, confirm in the production-stack documentation how the router selects replicas, how it handles unhealthy pods and how it treats streaming responses. Also write down which paths external users may reach, because the vLLM --api-key option does not cover every endpoint.

vLLM exposes Prometheus-format metrics at /metrics on its API server. The endpoint covers request counts, token throughput, latency histograms and KV cache use, and the histogram buckets can be configured. Grafana does not read the replicas directly in the way a dashboard reads a database. It reads the data through a metrics store, typically a Prometheus-compatible database that scrapes the endpoint, so retention and sizing of that store belong in your plan. Confirm which metrics component the chart deploys. Treat /metrics as an internal path, because the vLLM security documentation says --api-key does not protect it, so block it at the proxy for outside traffic. Grafana's configuration database is a separate decision. Grafana stores settings in SQLite by default, and its installation docs say SQLite does not scale for production, so plan MySQL 8.0 or later or PostgreSQL 12 or later for production and high availability.

LMCache sits beside the replicas as a KV cache offloading layer, which moves attention cache data out of GPU memory so that repeated context can be reused. Its behavior, supported backends and configuration must be confirmed against the production-stack documentation before you size storage or write the values file. Ask which backends the chart supports, where cached data is stored, what happens to cached entries when a replica restarts and how the cache interacts with the router's routing decisions. Grafana authentication is also a separate decision from the database choice. All Grafana editions support LDAP, generic OAuth, Entra ID, Okta, GitHub, GitLab, Google OAuth, auth proxy and JWT, while SAML, team sync, active sync and SCIM provisioning are available only in Grafana Enterprise and Grafana Cloud. Choose the identity method early so that dashboard access is decided with the same identity source as the rest of the platform.

The parallelism rule determines how each replica is built, and that determines what the router can treat as one unit. vLLM uses tensor parallelism within a node and pipeline parallelism across nodes. A replica that fits on one node needs only tensor parallelism, and a replica that spans nodes needs a multi-node backend, either Ray or vLLM's own multiprocessing backend. The vLLM security documentation states that communication between nodes in a multi-node deployment is insecure by default, with no authorization or encryption, and that nodes must be protected by placing them on an isolated network. Plan node labels, scheduling and network policy for each multi-node replica before you register it behind the router, and confirm the chart's supported combinations with the production-stack documentation.

How to install the production stack in the right order

This sequence takes the production-stack chart from a pinned, reviewed install to a stack that serves users, with the control plane, secrets, routing, observability and load behavior each verified before the next layer depends on it. Each step ends with a check you can repeat, so the order also works as an acceptance checklist. Confirm exact chart and image versions against the vendor documentation for your environment.

  1. Confirm the chart source and pin versions

    The platform team confirms which production-stack Helm chart repository and release it will use, then records the chart version and the vLLM image tag in version control. Check both against the vLLM Kubernetes deployment documentation and the chart's release notes. vLLM ships new minor releases about every two weeks, so an unpinned image could change between environments without a review. Done when a manifest rendered from the pinned chart shows the same image tag your change record lists.

  2. Build a highly available control plane first

    The cluster team builds the control plane before any accelerator workload is scheduled. Use at least three control plane nodes behind a TCP load balancer on port 6443, with either a stacked etcd topology or an external etcd cluster. Kubernetes guidance calls for an odd number of etcd members, and recommends five in production, so confirm your topology with your own capacity review. Take an etcd snapshot with etcdctl snapshot save, store it off the cluster, and test a restore with etcdutl. Done when the load balancer health checks pass on every control plane node and a restore from snapshot has succeeded in a non-production cluster.

  3. Enable Secret encryption at rest

    Before the first model access token or registry credential is stored, the cluster team configures encryption at rest for Secrets in etcd. Kubernetes stores Secrets unencrypted by default, so this step cannot be left for later. Restrict list and watch access to Secrets with least-privilege RBAC, and decide whether an external store through the Secrets Store CSI Driver fits your key management model. Done when a test Secret is no longer readable in plain text in etcd and the RBAC review shows no broad list or watch grants on Secrets.

  4. Install the chart and verify internally

    The deployment engineer installs the pinned chart with one replica per model, setting accelerator resource requests and limits so each vLLM pod lands on a node with free capacity. Run the install in a namespace governed by your Pod Security Standards settings. Then open a debug pod inside the cluster and call the models list and the completions endpoint through the router service. Done when the completions request returns a completion from the expected model and every model pod reports ready.

  5. Restrict the proxy to user endpoints

    The platform team configures the router or ingress so that only the endpoints meant for users, such as completions and chat completions, are reachable from outside the cluster. The vLLM --api-key option does not protect /metrics, /health, /pause, /resume, /abort_requests or /invocations, and the vLLM security documentation recommends a reverse proxy that allowlists user endpoints, so do not rely on the key alone. Done when a request to /metrics from outside the allowlist is refused, and the same request from the monitoring namespace still succeeds.

  6. Install Grafana on MySQL or PostgreSQL

    The observability engineer installs Grafana with MySQL 8.0 or later, or PostgreSQL 12 or later, as its configuration database. The Grafana installation documentation says SQLite does not scale for production, so it is ruled out for this stack. Define the Prometheus data source and the vLLM dashboards as YAML or JSON provisioning files loaded at startup, and keep them in version control. Done when a panel shows request counts and token throughput scraped from /metrics after a test request, and a redeployed Grafana recreates its data source and dashboards from the files alone.

  7. Enable LMCache after a baseline load test

    Run a load test against the stack with LMCache disabled and record latency, throughput and KV cache use from /metrics as the reference point. Then enable LMCache KV cache offloading in a staging release, rerun the same test profile, and compare the two results. Keep LMCache only if the comparison supports it and the team that will operate the stack understands the cache behavior. Done when both result sets are stored together in version control and the production values file reflects the chosen setting.

  8. Run functional and load tests before users

    The test lead runs a functional suite covering completions, chat completions, embeddings and the model behavior your applications depend on. Confirm each chat model has a chat template, either built in or supplied with the chat template option, because chat completions require one. Then run a load test at the concurrency your capacity review expects, and check that the Grafana alerts you defined fire on the failure conditions you chose. Done when the functional suite passes on the pinned versions, the load test meets the targets in your written scope, and the sign-off is recorded before any user traffic reaches the proxy.

How the Helm chart compares with plain manifests

The production-stack Helm chart bundles parts of a vLLM deployment that a team would otherwise design and maintain by hand: a router in front of model replicas, observability wiring and LMCache options for KV cache offloading. With native manifests, each of these becomes a separate design task. Confirm the chart version you plan to use, because the bundled components and their defaults can change between releases.

  • Router: the chart places a routing layer in front of model replicas so clients call one endpoint. Confirm how it detects unhealthy replicas and which authentication options it supports.
  • Observability wiring: vLLM exposes Prometheus-format metrics at /metrics. Confirm which scrape configuration, dashboards and alert rules the chart includes.
  • LMCache options: the chart exposes KV cache offloading settings. Confirm which options your accelerators and storage tiers support.
  • Default values: the values file sets model, resource and replica defaults. Review each default before the first deployment.

Ask the chart maintainers for a written list of every packaged component, its version and its default settings before you estimate the effort of building the same pieces yourself.

Identity, endpoints and data mapped between the stack components

This table maps each identity, credential, endpoint and data item in the production stack to the component that owns it and the setting that controls it. Read each row as a question to answer in your own cluster: who authenticates, which paths are reachable and where the data lives. The main takeaway is that the vLLM --api-key option does not cover /metrics or /invocations, so a proxy allowlist and network policy must close those gaps.

ItemOwning componentControlling setting or checkTeam to confirm
End-user application credentialsvLLM server (--api-key) and the reverse proxy in front of it--api-key protects /v1, /v2, /inference and /cohere only. Allowlist user-facing paths at the proxy.Which paths the proxy exposes, and that /invocations, /metrics, /health and pause or abort paths are unreachable from user networks.
Cluster administrator identityKubernetes API serverX.509 client certificates, OIDC or JWT bearer tokens, webhook token authentication or an authenticating proxy.Which method your distribution enables, and who holds cluster-admin bindings in the vLLM namespaces.
Model and serving secretsKubernetes Secrets in etcdSecrets are stored unencrypted in etcd by default. Enable encryption at rest, restrict list and watch with RBAC, or mount from an external store through the Secrets Store CSI Driver.That encryption at rest is enabled, and which service accounts can read Secrets in the router and model namespaces.
Grafana user identityGrafana authentication settingsLDAP, generic OAuth, Entra ID, Okta, GitHub, GitLab, Google OAuth, auth proxy and JWT work in all editions. SAML and SCIM need Grafana Enterprise or Grafana Cloud.That your edition supports the identity provider you use, and whether team sync is needed and available.
vLLM metricsvLLM /metrics endpoint, Prometheus scraper and GrafanaPrometheus-format endpoint on the API server that the --api-key option does not protect. Restrict it with network policy so only the scraper can reach it.The scraper's identity, and that users cannot reach /metrics through the ingress or the proxy.
Dashboards and data sourcesGrafana provisioning files kept in version controlData sources and dashboards are defined in YAML or JSON and loaded at startup. Terraform and Git Sync are further as-code options.The Grafana database backend, which must be MySQL or PostgreSQL for production and high availability, and who can edit provisioned resources.

How to harden the stack before users reach it

These controls sit between users and the router, the model replicas, the cluster API and the dashboards. Each one closes a path that default vLLM and Kubernetes settings leave open, so review them together before any user traffic reaches the stack. Treat each card as a check to run against your own manifests, proxy configuration and network design.

Allowlist user endpoints at the proxy

The --api-key option protects /v1, /v2, /inference and /cohere, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. The vLLM security docs warn against relying on the key alone and recommend a reverse proxy that allowlists only the endpoints meant for users. Place the proxy in front of the router, allow the /v1 routes your applications call, and test every other path from outside the cluster to confirm it returns an error.

Keep operational endpoints off user paths

The /metrics, /health, /pause, /resume and /abort_requests endpoints expose telemetry and change serving state for every caller. Serve them on an internal service or port that only monitoring, health probes and operators can reach, and block them at the proxy and at any ingress. Confirm that Prometheus scrapes /metrics over the internal network and that health probes do not depend on any public route.

Isolate multi-node vLLM traffic

The vLLM security docs state that communication between nodes in a multi-node deployment is insecure by default, with no authorization or encryption. Place the nodes that exchange pipeline parallel traffic on a dedicated network segment, and use Kubernetes network policies or separate subnets so only those nodes reach each other's worker ports. Confirm that the router and clients cannot reach these internal ports, and document which ports your chosen backend opens.

Encrypt Secrets and limit list and watch

Kubernetes stores Secrets unencrypted in etcd by default, so configure encryption at rest for the API server before storing API keys or registry tokens. Grant list and watch on Secrets only to the service accounts and operators that need them, because these verbs can return secret values in bulk. Also decide whether an external store, reached through the Secrets Store CSI Driver, fits your key management policy.

Namespace policy and the CIS benchmark

Pod Security Standards define baseline and restricted policy levels that Kubernetes enforces through namespace labels. Enforce the most restrictive level your GPU workloads allow on the namespace holding the router, replicas and Grafana, and test warnings in a non-production namespace first. Use the CIS Kubernetes Benchmark as the reference to measure the cluster against, and record each deviation and its reason. Passing a benchmark check does not certify the platform.

Harden Grafana before exposing dashboards

The Grafana security hardening docs recommend secure and SameSite cookies, a Content Security Policy, Trusted Types, hiding the version from unauthenticated users, requiring authentication for the metrics endpoint and domain verification against DNS rebinding. Set each option in the Grafana configuration or provisioning files, then check response headers and login behavior from a browser. Keep dashboards off the public user path, since they display the same request data the operational endpoints expose.

Why the vLLM API key alone does not protect this stack

The vLLM --api-key option protects the /v1, /v2, /inference and /cohere endpoints. It does not protect /invocations, /pause, /resume, /abort_requests, /metrics or /health. The vLLM security documentation warns against relying on the key alone and recommends a reverse proxy that allowlists only the endpoints meant for users. In a production-stack deployment, the key is one control among several, not the boundary. A team that sets a key on the model replicas and assumes the stack is protected leaves pause and resume controls, request abort, and metrics reachable by anyone who can open a connection to the service.

The first decision is where the allowlist is enforced. Applications call the production-stack router, so the allowlist can sit in the router configuration, in an ingress or gateway in front of it, or in both. The vLLM documentation describes the allowlist pattern as the recommendation, but it does not state how the production-stack router treats these paths. Confirm in the chart documentation and chart values which paths the router forwards to model replicas, whether it forwards /pause, /resume or /metrics, and whether it adds any authentication of its own. Record the answer before deployment, because it determines whether the allowlist is a chart setting or a separate component your team operates.

Test the result from a machine on the user network, not from inside the cluster. Send a request to each non-allowlisted path (/invocations, /pause, /resume, /abort_requests, /metrics and /health) through the same host and port that application traffic uses. Use the HTTP method each endpoint expects, and repeat each call with and without a valid API key. Every call should be refused. Record the status code and response body for each path. Any response that returns model output, metrics data or a success code is a finding. Include a positive control, a valid request to /v1/chat/completions with the key, so a pass is not caused by the service being unreachable. Repeat the test after every chart upgrade and every ingress change.

The allowlist must not break in-cluster traffic. Kubelet health checks and Prometheus scraping originate inside the cluster, and they may call /health or /metrics. Confirm which paths the chart's liveness, readiness and scrape settings use, and whether those calls pass through the same proxy. If they do, limit them by source network, namespace or service account so the user network stays blocked. Keep the test results with the release record. An auditor or security reviewer who asks how the allowlist was verified should receive dated results from the user network, not a statement that the setting exists.

Common failures in production-stack deployments and their fixes

This table lists the failures teams most often hit when running the vLLM production stack on Kubernetes, with the cause and the documented fix for each. Read each row as a checklist item to verify in your cluster before go-live. The main takeaway is that most failures trace to a missing setting, an open endpoint or a single-node default that the documentation expects you to change.

FailureCauseFix
Chat completions fail for a modelThe model does not provide a chat template, so the chat completions API cannot format messages.Supply a template with the --chat-template option on vllm serve, then test /v1/chat/completions with a sample request.
User traffic reaches /metrics or /healthThe reverse proxy in front of vLLM forwards all paths. The --api-key option does not cover /metrics, /health, /pause or /abort_requests.Configure the proxy to allowlist only the /v1 paths meant for users, and scrape metrics from inside the cluster network.
Grafana dashboards are emptyThe Prometheus scrape target points to the wrong port or path, or the Grafana data source does not match the Prometheus service.Check that the vLLM /metrics target shows as up in Prometheus, then confirm the Grafana data source URL and provisioned dashboard references.
Grafana runs on SQLite in productionSQLite is the default database. Grafana's installation docs say it does not scale for production.Point Grafana at MySQL 8.0 or later, or PostgreSQL 12 or later, before the stack takes real users.
Grafana HA sends duplicate alerts, loses Grafana Live features or fails logins across nodesTwo or more Grafana servers run without a shared database, so sessions are node-local, alerting is not set up for HA and Grafana Live has HA limits.Run active-active servers behind a load balancer on a shared MySQL or PostgreSQL database with database-backed auth tokens, then follow the documented HA alerting guidance and check Grafana Live behavior.
Multi-node vLLM traffic is exposedThe vLLM security docs state that communication between nodes is insecure by default, with no authorization or encryption.Place vLLM nodes on an isolated network, and restrict pod-to-pod traffic to the nodes that need it, confirming the policy with your network team.
Secrets are readable by broad RBAC or unencrypted in etcdKubernetes stores Secrets unencrypted in etcd by default, and broad list or watch permissions expose them to users and service accounts.Enable encryption at rest for Secrets, restrict list and watch access with least-privilege RBAC, or use an external store through the Secrets Store CSI Driver.
Upgrades blocked by version skewKubelets are older than the allowed range relative to kube-apiserver, or components were upgraded out of order.Upgrade kube-apiserver one minor version at a time first, then kube-controller-manager, kube-scheduler and kubelets, keeping kubelets within three minor versions of kube-apiserver.
etcd loses quorumThe etcd cluster has an even number of members, so a single member failure can prevent a majority from forming.Run an odd number of members, use five members for production as the Kubernetes documentation recommends, and schedule etcdctl snapshot save backups with a tested restore using etcdutl.

What a vLLM production-stack deployment on Kubernetes costs and needs from your team

What does a vLLM production-stack deployment on Kubernetes cost?

vLLM has no license fee and no paid edition, so the cost comes from what it runs on and the people who run it. The main cost components are:

  • Accelerator capacity, such as NVIDIA CUDA, AMD ROCm or Intel XPU GPUs, or another supported accelerator
  • The Kubernetes cluster, storage, networking and the infrastructure it runs on
  • Grafana for observability, which is licensed under AGPLv3 in its open-source form, with Grafana Enterprise and Grafana Cloud as separate commercial options
  • Implementation work and ongoing operations

Implementation is usually a one-time cost, while accelerators, infrastructure, upgrades and support recur. Costs rise with the number of models and replicas, larger models that need multi-GPU parallelism, and stricter identity or compliance requirements. DeployOpen does not publish a price list. A quote follows from a written scope that names your models, accelerators, cluster and identity needs.

How long does a vLLM production-stack deployment take to build?

No duration figure is available for this topic, so ask for a scoped timeline in writing before work starts. The main drivers are the number of models and replicas, whether accelerator nodes are installed and reachable from the cluster, and how long identity integration takes. Testing also adds time: checks on the router, failover between replicas, and verification of the OpenAI-compatible endpoints your applications will call. Ask the partner to split the work into phases with a clear handoff for each, and to state which steps depend on your team's availability. Timelines usually move when hardware arrives late or when network changes are waiting for approval, so ask how the plan handles those risks.

What does our team need to provide for a vLLM engagement?

Plan for five things from your side: cluster access, accelerator nodes, identity owners, a test plan and an upgrade owner. Cluster access should allow installing the Helm chart and managing the namespaces it uses. Accelerator nodes need drivers ready for the hardware you chose. Identity owners must be named for the sign-in systems that front the API and Grafana. The test plan owner sets acceptance criteria for response quality, latency and failover. The upgrade owner tracks releases, schedules staging tests and approves production changes. vLLM ships new minor releases about every two weeks, and Kubernetes ships about three minor releases a year. Confirm who owns each item before the scope is signed, because unassigned items stall work.

Can our own team deploy vLLM on Kubernetes without a partner?

Yes, if your team already runs Kubernetes in production and has GPU operations skills. Those skills include managing drivers and device plugins, scheduling accelerators, watching GPU memory and recovering from node failures. You also need time for testing, covering model compatibility, router behavior, failover and identity integration, and the discipline to repeat those tests after each upgrade. Check whether your team can keep that pace alongside vLLM's release cycle. A practical way to decide is to write down the skills, name the people who hold them and estimate the testing hours. Then compare that plan with a written scope from a partner. Many teams split the work, using a partner for the first build and keeping day-to-day operations in-house.

When are plain Kubernetes manifests enough for vLLM?

Plain manifests are enough when you serve one model with a fixed replica count, do not need a router across replicas, and are willing to build metrics dashboards and cache handling yourselves. The vLLM docs list native manifests and Helm among the Kubernetes options, alongside the production-stack, AIBrix, KServe, KubeRay, LeaderWorkerSet, llm-d and NVIDIA Dynamo. The production-stack chart adds a router in front of model replicas, Grafana observability and LMCache KV cache offloading, packaged and tested together. Choose it when you need those parts as one unit. Choose manifests when your platform team already has standards for them and wants fewer moving parts. Either way, someone must maintain the /metrics endpoint, the router and the dashboards.

How are vLLM upgrades and ongoing support handled after go-live?

Ongoing upgrades and support can run under a retainer, and the work covered is the work named in the agreement. Plan for several release streams. vLLM ships minor releases about every two weeks. Kubernetes ships about three minor releases a year, and its version skew policy requires kube-apiserver to be upgraded one minor version at a time, before kube-controller-manager, kube-scheduler and kubelets. Kubelets may run up to three minor versions behind kube-apiserver. Grafana minor releases arrive about every other month, patch releases at least monthly, and each minor release is supported for 9 months. Ask for the release intake process, the staging test procedure, the rollback steps and how security patches are handled outside the normal cycle.

Does DeployOpen certify our vLLM platform for compliance?

No. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications. Independent auditors and certification bodies do that work. For vLLM, the security docs say node-to-node traffic in multi-node deployments is insecure by default and must be placed on an isolated network. They also warn that the --api-key option should not be relied on alone, and recommend a reverse proxy that allowlists only the endpoints meant for users. Ask the partner which controls it will build, which evidence it will produce, and which items your auditor will need to review.

What should a vLLM deployment quote include?

A quote should follow a written scope that names the models, replica counts, accelerator types and counts, the Kubernetes distribution and version, the identity provider, the observability components, the test plan, the upgrade responsibilities and any retainer. Ask which costs are one-time and which recur, such as accelerator capacity, cloud or data center charges, Grafana licensing if you choose a commercial tier, and upgrade cycles. Ask how scope changes are priced, who owns the cluster and accelerators, and what the handover includes: runbooks, dashboards, configuration kept in version control and test results. DeployOpen does not publish a price list, so compare quotes only when they cover the same scope.

How DeployOpen scopes, delivers and supports this stack

DeployOpen treats a vLLM production-stack deployment on Kubernetes as a planned platform build inside your own clusters and network. The work starts with a written scope covering model replicas, the router, observability and cache offloading, then moves through build, documentation and handover to your team.

How we scope

  • The written scope names the models, replicas, accelerator types and the Kubernetes distribution the stack will run on.
  • Scope defines how the router, Grafana dashboards and LMCache offloading are configured, and which of them are in or out.
  • Engagements are fixed-scope, so deliverables and timelines are agreed in writing before the build begins.

How we build

  • Helm values are set per environment, with image sources, storage classes and accelerator scheduling defined before deployment.
  • Access to vLLM endpoints is tested against the security docs, which say --api-key alone is not enough and a reverse proxy should allowlist user endpoints.
  • Metrics from /metrics are checked in Grafana, and Grafana's own high availability and secrets settings are verified before handover.

How we hand over

  • Handover includes architecture notes, Helm values, runbooks for scaling replicas and rotating keys, and the recorded test results.
  • Your team receives documented steps for upgrading the chart, vLLM and Grafana, since vLLM ships minor releases about every two weeks.
  • Knowledge transfer sessions walk operators through alerts, dashboards and the etcd and cluster backup procedures the platform depends on.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after the initial build is complete.
  • Retainers can cover planned moves to newer vLLM releases, Kubernetes minor versions and Grafana patch releases.
  • Ask any partner to confirm response scope, environment access and which support hours are included in writing.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.