Ambassador provides a set of products and open source components including a cloud native API gateway. This article is a starting point for running Ambassador products on Kublr managed Kubernetes clusters.
Kublr provisions and manages Kubernetes clusters that are fully compatible and conformant with upstream open source Kubernetes. Therefore any instructions Ambassador provides in the documentations for generic Kubernetes will also work for Kublr.
At the same time Kublr provides additional options that allow automating components deployment as a part of cluster provisioning and operations processes. It enable easier implementation of “infrastructure-as-code” approach.
This article will focus on Kublr-specific Ambassador deployment options.
Ambassador Edge Stack can be deployed using standard Ambassador getting started and deployment guides. The methods include using Helm package.
Kublr allows including any additional helm packages in the cluster spec to be deployed and updated together with the Kublr cluster.
The simplest way to include Ambassador into your “infrastructure-as-code” script is to include the following fragment into a Kublr cluster specification:
spec:
...
packages:
ambassador:
chart:
url: 'https://getambassador.io/helm/ambassador-6.5.18.tgz'
releaseName: ambassador
namespace: ambassador
helmVersion: 'v3.4.0'
#values:
# key: value
As you can see, you can adjust the the Helm release name, the namespace into which edge stack is deployed, or the version and/or location of the ambassador helm package. In addition, if the package values customization is necessary, it can be done as well.
When the cluster is deployed you can verify that Ambassador helm packaged is a part of the cluster in the cluster’s “Applications” tab:
You can also verify the package deployment in the cluster terminal:
via Kublr helm package CRD objects:
$ kubectl get -n ambassador helmcharts
NAME STATUS CREATED
ambassador deployed 151m
via Helm:
$ helm -n ambassador list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ambassador ambassador 1 2021-02-05 16:54:12 deployed ambassador-6.5.18 1.11.1
via Kubectl:
$ kubectl get -n ambassador pods
NAME READY STATUS RESTARTS AGE
ambassador-6b585c74ff-hdp8w 1/1 Running 0 137m
ambassador-6b585c74ff-tt7z8 1/1 Running 0 137m
ambassador-6b585c74ff-vv9jk 1/1 Running 0 137m
ambassador-redis-64b7c668b9-rhnws 1/1 Running 0 137m
Note that Kublr CLI terminal does not provide a persistent workspace and any changes you make in one sessions will not be available in follow-up sessions. It is recommended therefore to install kubectl and Ambassador edgectl tools locally to persist configuration.
It is still possible to download and use edgectl in Kublr terminal for the duration of the session; so you can follow Ambassador instructions with minor adjustments to install edgectl and login into the Edge Stack dashboard:
# download edgectl
$ curl -fL https://metriton.datawire.io/downloads/linux/edgectl -o edgectl && chmod a+x edgectl
# get Ambassador endpoint
$ AMB_HOST="$(kubectl -n ambassador get svc ambassador -o jsonpath='{.status.loadBalancer.ingress[0].ip}')" ; echo $AMB_HOST
52.226.45.155
# login into Ambassador dashboard
$ ./edgectl login --url $AMB_HOST
Connecting to the Ambassador Edge Policy Console in this cluster...
Visit the following URL to access the Ambassador Edge Policy Console:
https://52.226.45.155/edge_stack/admin/#token
Open the provided URL in the browser to login: