Ambassador Labs has launched the Developer Control Platform (DCP). The DCP brings together a variety of tools to support comprehensive development and operations based on Kubernetes services. This includes popular Cloud Native Computing Foundation (CNCF) tools such as Argo, Telepresence and Envoy Proxy.
The DCP aims to simplify the workflow of running code by providing a single interface to manage the necessary tools. Integrated within the control plane are some CNCF projects with other common tools such as GitHub, GitLab, DataDog, Docker and Jenkins.
The Ambassador Developer Control plane shows the integration of current and future initiatives (source:Ambassador Labs)
DCP integration with Telepresence simplifies the local development workflow. Telepresence allows native code testing of remote services and data stores from developers’ machines. It does this by creating a bidirectional network proxy for the POD running in the Kubernetes cluster. This POD transfers data from the Kubernetes environment agent to the local running process. This eliminates the need to run all the necessary services locally to validate and test the new changes.
Once the changes are ready for deployment, the DCP is integrated with Argo and Edge Stack to simplify Canary publishing. Argo is a collection of tools that support GitOPs-style continuous deployment, as well as Canary and blue-green deployment strategies. Edge Stack is the API gateway for Kubernetes, supporting traffic shaping methods such as disconnect, progressive delivery, and rate limiting.
With these tools, you can define a custom resource (CRD) to define an incremental rollout. This CRD example shows the first declaration to send 20% of the traffic to the launch of a 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}
Copy the code
Once a service is deployed, you can use the service catalog to discover which services are active. Integration with Emissary-Ingress and Edge Stack allows service discovery as well as L7 traffic management. Annotations are used to add metadata to a service. The following command will add the owner annotation to the service: kubectl annotate service MYSERVICE a8r.io/owner=”sallydev”.
The service specific view provides an integration interface for these components. The Preview URLs option allows local testing via Telepresence. Deployment through Argo can be done with the Rollouts option. Comments appear on the page, allowing you to specify Slack channels, API documents, and logs.
The annotated view of the service catalog shows a single service (source: Ambassador Labs)
The Ambassador Labs control plane is available for free. The service catalog requires Edge Stack version 1.12 or higher and API Gateway version 1.13 or higher installed in the cluster. Support through Slack and weekly office hours.