Ambassador is available in MicroK8s versions 1.19, 1.20, 1.21, 1.22 and 1.23. It has been removed in MicroK8s versions 1.24 and newer.
Ambassador API Gateway enables you to easily expose, secure, and manage traffic to your Kubernetes microservices of any type. Enable this add on with:
microk8s enable ambassador
You can now expose a Service
by creating an Ingress
. Note that Ambassador will only serve Ingress
resources that include the annotation kubernetes.io/ingress.class: ambassador
(otherwise they are just ignored).
For example:
cat<<EOF | microk8s.kubectl apply -f -
---
kind: Pod
apiVersion: v1
metadata:
name: foo-app
labels:
app: foo
spec:
containers:
- name: foo-app
image: hashicorp/http-echo:0.2.3
args:
- "-text=foo"
---
kind: Service
apiVersion: v1
metadata:
name: foo-service
spec:
selector:
app: foo
ports:
# Default port used by the image
- port: 5678
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: ambassador
spec:
rules:
- http:
paths:
- path: /foo
backend:
serviceName: foo-service
servicePort: 5678
EOF
Now verify that the ingress works:
# should output "foo"
curl localhost/foo