Skip to content

Instantly share code, notes, and snippets.

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

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:

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 git@github.com:datawire/ambassador.git
cd ambass
apiVersion: v1
kind: Service
metadata:
name: httpbin
annotations:
getambassador.io/config: |
---
apiVersion: ambassador/v0
kind: Mapping
name: httpbin_mapping
apiVersion: v1
kind: Service
metadata:
name: prometheus
spec:
type: NodePort
ports:
- name: web
port: 9090
protocol: TCP
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
spec:
serviceAccountName: prometheus
serviceMonitorSelector:
matchLabels:
ambassador: monitoring
resources:
---
apiVersion: v1
kind: Service
metadata:
name: ambassador-monitor
labels:
service: ambassador-monitor
spec:
selector:
service: ambassador
---
apiVersion: v1
kind: Service
metadata:
labels:
service: ambassador
name: ambassador
spec:
type: LoadBalancer
ports:
---
apiVersion: v1
kind: Service
metadata:
labels:
service: ambassador-admin
name: ambassador-admin
spec:
type: NodePort
ports: