Having portainer set up without HTTPS greatly improves performance and simplicity for HTTPS ingress connections.
Specifying value tls.force=false should allow outside connections to port 9000 with HTTP protocol. The service exposes port 9000 correctly, ingress terminates at port 9000 correctly.
The problem is nothing inside the pod is listening on port 9000.
To fix this problem portainer server should be started with --http-enabled argument, which is missing from the helm chart. File template/deployment.yaml should be updated to have the following:
args:
{{- if .Values.tls.force }}
- --http-disabled
{{- else }} # the fix
- --http-enabled # the fix
{{- end }}