Skip to content

Instantly share code, notes, and snippets.

apiVersion: v1
kind: Service
metadata:
name: prometheus
spec:
type: NodePort
ports:
- name: web
port: 9090
protocol: TCP
apiVersion: v1
kind: Service
metadata:
name: httpbin
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: httpbin_mapping

Ambassador operates by reading its configuration resources and constructing an intermediate representation (IR), which is used to build the Envoy configuration. The IR dates pretty far back in Ambassador's life, and largely grew up under the demands of quickly supporting Ambassador's ability to group Mappings to handle the various types of deployments, so it’s emphatically not pretty, and we’re at the point now where it costs us development velocity. It needs a lot of improving.

We’re going to get together as a group and discuss what kind of improvements to make and how to go about them, and you’re invited to participate. We'll be dealing more in terms of concepts and structure than literal code, so we expect to be talking more about data structures and objects, less about syntax and formatting.

You’ll need to have a handle on how Ambassador works with the IR for this, so you’ll need to start by grabbing and building the Ambassador source code:

git clone [email protected]:datawire/ambassador.git
cd ambass

Keybase proof

I hereby claim:

  • I am richarddli on github.
  • I am rdli (https://keybase.io/rdli) on keybase.
  • I have a public key ASCD076t7iqb_iTFcNhFWeWN8l8Q5Pac6JNoNBQKehk60go

To claim this, I am signing this object:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ambassador
spec:
replicas: 1
template:
metadata:
annotations:
---
apiVersion: v1
kind: Service
metadata:
name: quote
spec:
ports:
- name: http
port: 80
targetPort: 8080