I'm having troubles with exposing node.js app via Ambassador mapping. I created a deployment and service, tested them from a dummy nginx pod using curl:
curl example-svc:9000/ping
And i get a correct response. Next I created a TLSContext, Host and Mapping CRDs:
apiVersion: getambassador.io/v2
kind: TLSContext
metadata:
name: example-backend
spec:
alpn_protocols: h2, http/1.1
ambassador_id: example-ambassador
cipher_suites:
- ECDHE-ECDSA-AES128-GCM-SHA256
- ECDHE-RSA-AES128-GCM-SHA256
- ECDHE-ECDSA-AES256-GCM-SHA384
- ECDHE-RSA-AES256-GCM-SHA384
- ECDHE-ECDSA-CHACHA20-POLY1305
- ECDHE-RSA-CHACHA20-POLY1305
hosts:
- be.internal-cloud.io
min_tls_version: v1.2
secret: example-backend-cert
-------------------------------------------
apiVersion: getambassador.io/v2
kind: Host
metadata:
name: example-backend
spec:
acmeProvider:
authority: none
hostname: be.internal-cloud.io
requestPolicy:
insecure:
action: Reject
additionalPort: 8080
tlsContext:
name: example-backend
tlsSecret:
name: example-backend-cert
-------------------------------------------
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
name: example-backend
spec:
allow_upgrade:
- websocket
ambassador_id: example-ambassador
grpc: false
host: be.internal-cloud.io
prefix: /
rewrite: /
service: example-svc:9000
timeout_ms: 100
And now when i try to access this url in browser or via curl i get 404 response:
curl -I https://be.internal-cloud.io/
HTTP/2 404
date: Mon, 08 Aug 2022 10:02:14 GMT
server: envoy
{"error":{"code":404,"status":"Not Found","message":"The requested resource could not be found"}}
And a given log in Ambassador pod:
ACCESS [2022-08-08T10:02:32.987Z] "GET / HTTP/2" 404 - 0 98 2 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36" "d5b580ae-196a-4249-b5ba-3f36b162ca2f" "be.internal-cloud.io" "-"
How can I expose it correctly?
Have you also deployed a listener?