question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Users want a way to configure Mappings generated from K8s Ingress resources

See original GitHub issue

Describe the bug When using Ingress + Mapping annotation together to

  • get ExternalDNS to create the required DNS records
  • set grpc: True to support HTTP/2-only upstreams

Ambassador sets up two Envoy clusters for the given DNS record, effectively creating a 50/50 traffic split. This breaks in our use-case as the Ingress-driven route isn’t configured for HTTP/2-only upstream, causing 50% of the connections to fail. Based on my reading of the relevant docs it sounds like this scenario should be supported.

To Reproduce Steps to reproduce the behavior:

  1. Apply the following Ingress with Mapping annotation:
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
  name: test-browser
  namespace: test
  annotations:
    kubernetes.io/ingress.class: ambassador
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: test-browser
      service: http://test-browser.test:8000
      host: test-browser.foo.com
      grpc: True
      prefix: /
      rewrite: /
spec:
  rules:
    - host: test-browser.foo.com
      http:
        paths:
          - backend:
              serviceName: test-browser
              servicePort: 8000
  1. Check that Ambassador sets up a 50/50 traffic split instead of merging Ingress and Mapping
  2. Send traffic through, observe ~50% of traffic failing.

Expected behavior Ambassador merges Ingress and Mapping definition into a single Envoy cluster.

Versions (please complete the following information):

  • Ambassador: 1.5.5
  • Kubernetes environment: EKS
  • Version: 1.16.8

Additional context We’re currently using a work-around and annotating the Ambassador K8S service with the external-dns.alpha.kubernetes.io/hostname: key listing all the DNS names we want pointed to Ambassador, but this effectively means all the DNS configuration needs to be done at the Ambassador service level, which isn’t sustainable long term.

Issue Analytics

  • State:open
  • Created 3 years ago
  • Reactions:2
  • Comments:8 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
brondumcommented, Nov 18, 2020

I dont think it is stale. Like if you want to bypass_auth or any other setting on ingress how would you do that?

0reactions
stale[bot]commented, Feb 2, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Ingress - Kubernetes
The Ingress concept lets you map traffic to different backends based on rules you define via the Kubernetes API.
Read more >
All About the Ingress Resource - Learn Cloud Native
Kubernetes service that exposes the ingress controller pods; Other supporting resources for the ingress controller (configuration maps, secrets, ...
Read more >
Ultimate Guide to Kubernetes Ingress Controllers - Platform9
Learn what is Kubernetes ingress controller, how to install leading open source ingress controllers, and using an ingress controller.
Read more >
Ingress Resources - Kubernetes
An Ingress is a collection of rules that allow inbound connections to reach the cluster services. ... It can be configured to give...
Read more >
Understanding Kubernetes services & ingress networking
An Ingress is used when we have multiple services on our cluster and we want the user request routed to the service based...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found