Skip to content

v0.0.13 gateway server ignores TLS config, starts plaintext HTTP/1.1 only — gRPC unusable #535

@stw-SP

Description

@stw-SP

Environment

  • OS: macOS 26.4.0 (Darwin, Apple Silicon)
  • Docker Desktop: 29.2.1
  • OpenShell CLI: v0.0.13
  • Gateway image: ghcr.io/nvidia/openshell/gateway:0.0.13

Problem

The v0.0.13 gateway server starts in plaintext HTTP/1.1 mode despite having TLS configured and valid certificates mounted. Since gRPC requires HTTP/2, the CLI cannot communicate with the gateway at all.

Symptoms

With TLS (default):

openshell status
Error: × client error (Connect)
  ╰─▶ received corrupt message of type InvalidContentType

With --plaintext:

openshell sandbox list
Error: × status: Unknown, message: "h2 protocol error: http2 error"
  ├─▶ transport error
  ├─▶ http2 error
  ╰─▶ connection error detected: frame with invalid size

Root Cause

The server binary does not enable TLS even though:

  • disableTls: false in helm chart values
  • OPENSHELL_TLS_CERT and OPENSHELL_TLS_KEY env vars are set
  • Valid certs are mounted at /etc/openshell-tls/server/
  • I tried manually regenerating PKI certs and restarting the pod — no effect

Server startup log shows no TLS initialization:

INFO openshell_server: Starting OpenShell server bind=0.0.0.0:8080
INFO openshell_server: Server listening address=0.0.0.0:8080

Verified with curl:

# Server only speaks HTTP/1.1
curl -v http://127.0.0.1:8080/
> GET / HTTP/1.1
< HTTP/1.1 404 Not Found

# TLS probe fails — server sends plaintext
echo | openssl s_client -connect 127.0.0.1:8080
SSL routines:tls_get_more_records:packet length too long

# grpcurl over h2c times out — no HTTP/2 support
grpcurl -plaintext 127.0.0.1:8080 list
Failed to dial target host: context deadline exceeded

The server also logs continuous sandbox watcher errors:

WARN openshell_server::sandbox: Sandbox watcher error error=watch stream failed: Error reading events stream: ServiceError: error reading a body from connection

This repeats every 30 seconds.

Steps to Reproduce

openshell --version  # 0.0.13
openshell gateway start --name test
# Wait for "Gateway ready"
openshell status     # InvalidContentType
openshell gateway destroy -g test
openshell gateway start --name test --plaintext
openshell sandbox list  # h2 protocol error

Expected Behavior

The server should either:

  1. Start with TLS enabled when disableTls: false and certs are mounted
  2. Support h2c (HTTP/2 cleartext) when running in --plaintext mode so gRPC works without TLS

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions