apache / apache/shenyu

[BUG] K8s ingress hardcodes protocol("http://") + TODO for all backends (TLS silently downgraded)

Open
#6,598 1 comment 0 reactions 0 assignees View on GitHub
priority: high type: bug
Dominant language
Java
Stars
8.8k
Forks
3.1k
Avg merge
7d 1h
Merged PRs (30d)
85

Description

## Description
All k8s ingress parsers build `DivideUpstream` with `upstream.setProtocol("http://")` hardcoded, with `// TODO support config protocol in annotation`. Until implemented, TLS/HTTPS ingress backends are mis-proxied as plain HTTP.

## Location
```
shenyu-kubernetes-controller/.../parser/DivideIngressParser.java:177-178,324-325
.../reconciler/EndpointsReconciler.java:159-160
.../reconciler/IngressReconciler.java:629,643-644
```

## Impact
Functional correctness + security (TLS downgrade) in the k8s controller.

## Suggested fix
Wire a `nginx.ingress.kubernetes.io/backend-protocol` (or ShenYu-specific) annotation to select `https://`/`grpcs://`; default safe.

## Related existing issue(s)
None

_Identified during the 2026-08-02 audit; full list in [`docs/issue-candidates-2026-08-02.md`](docs/issue-candidates-2026-08-02.md)._

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the hardcoded setProtocol("http://") calls in DivideIngressParser.java, EndpointsReconciler.java, and IngressReconciler.java. Trace how ingress annotations are available in these entry points and determine the supported backend-protocol values and safe default. Done means HTTPS or gRPC backends are not downgraded and plain HTTP remains the default when no protocol annotation is present.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, kubernetes
Domain
backend, infrastructure, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.