Ambassador Labs announced the release of their Developer Control Plane (DCP). The DCP brings together tooling to support the full development and operations of Kubernetes based services. This includes popular Cloud Native Computing Foundation (CNCF) tools such as Argo, Telepresence, and Envoy Proxy.
The DCP aims to simplify the code-ship-run workflow by providing a single interface to manage the necessary tools. Integrated within the control plane are a number of CNCF projects with other common tooling such as GitHub, GitLab, DataDog, Docker, and Jenkins.
DCP's integration with Telepresence simplifies the local development workflow. Telepresence allows for testing of local code from the developer machine against remote services and datastores. It does this by creating a two-way network proxy for the pod running in the Kubernetes cluster. This pod proxies data from the Kubernetes environment to the local running process. This removes the need for running all necessary services locally to validate and test new changes.
Once the changes are ready to deploy, DCP integrates with Argo and Edge Stack to streamline canary releases. Argo is a collection of tooling that supports a GitOps style continuous deployment as well as canary and Blue Green deployment strategies. Edge Stack is an API gateway for Kubernetes which supports traffic shaping methods such as circuit breaking, progressive delivery, and rate limiting.
With these tools, it is possible to define a Custom Resource (CRD) to define an incremental rollout. This CRD example shows the declaration of a rollout that first sends 20% of traffic to the new version.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: rollout-canary
spec:
replicas: 5
revisionHistoryLimit: 2
selector:
matchLabels:
app: rollout-canary
template:
metadata:
labels:
app: rollout-canary
spec:
containers:
- name: rollouts-demo
image: argoproj/rollouts-demo:blue
imagePullPolicy: Always
ports:
- containerPort: 8080
strategy:
canary:
steps:
- setWeight: 20
# The following pause step will pause the rollout indefinitely until manually resumed.
# Rollouts can be manually resumed by running `kubectl argo rollouts promote ROLLOUT`
- pause: {}
- setWeight: 40
- pause: {duration: 40s}
- setWeight: 60
- pause: {duration: 20s}
- setWeight: 80
- pause: {duration: 20s}
Once the services are deployed, the Service Catalog can be used to discover which services are active. The integration with Emissary-Ingress and Edge Stack allows for service discovery as well as L7 traffic management. Annotations can be used to add metadata to the services. The following command would add the owner annotation to the service: kubectl annotate service MYSERVICE a8r.io/owner="sallydev".
The service specific view provides an integrated interface for these components. The Preview URLs option allows for local testing via Telepresence. Deployments via Argo can be done through the Rollouts option. Annotations appear on the page allowing for specifying Slack channels, API documentation, and logs.
The Ambassador Developer Control Plane can be leveraged for free. The Service Catalog requires Edge Stack version 1.12 or greater and API Gateway 1.13 or greater to be installed within the cluster. Support is available via Slack and weekly office hours.