At the launch of Amazon Elastic Container Service for Kubernetes (Amazon EKS), Weaveworks was invited to take part with nine other Technical Partners who all demonstrated customer solutions around EKS at an event called EKosystem Day

Broadcasted live on Twitch, Weaveworks’ Customer Success Engineer, Craig Wright (@c_r_w) presented our integration of Weave Cloud’s Prometheus as a Service with AWS’ EKS and demonstrated GitOps workflows and full-stack observability with Weave Cloud.

Three key features of Weave Cloud for managing applications on EKS were discussed:

  1. Delivering Git-based deployments into the cluster with integrated out-of-the box observability for your workloads in addition to rollbacks and a complete audit trail.
  2. Observability of your applications as they run in EKS using Prometheus metrics stored and collected by Weave Cloud.
  3. Correlation and observability across all AWS services such as RDS and ELB.

Craig Wright speaking at AWS’ EKoSystem Day

Why do you need real-time Prometheus monitoring?

Craig started off with an overview of how Weave Cloud can be used with applications running in EKS and discussed why Prometheus is the de facto standard for monitoring applications running in a dynamic environment like Kubernetes.

“You need Prometheus if your containers are running in a distributed system like EKS where it’s critical to be able to see your whole system from end-to-end, in order to get to the root cause quickly,” said Craig. Weave Cloud’s deploy and explore features are tightly integrated with its hosted Prometheus as a Service which means that your whole application can be managed, monitored and observed in EKS much more efficiently.

Visualizing a cluster in Weave Cloud

The first thing Craig showed us was how you can use the explore feature of Weave Cloud to see your application as it runs in EKS. With the Sock Shop already deployed and running, he demonstrated how you can easily see all of the services running in Kubernetes and also by looking at the lines between them how services are inter-communicating. You can furthermore drill down on a particular service and see how it is connected to a RDS database as well as the direction of the data flow.

While drilled down into a service, view its container logs or pull up a terminal for quick and easy troubleshooting on the command line right in your browser.


Git-based deployments to EKS

Now that we’ve had a look at what the services look like when they’re running in EKS, how do we actually deploy them onto the cluster?

In our product Weave Cloud, the GitOps core machinery is in its CI/CD tooling with the significant piece being continuous deployment (CD) that supports Git-cluster synchronization.

Weave Cloud is designed specifically for version controlled systems and declarative applications. Every developer on your team can make pull requests and can use Git to accelerate and simplify application deployments to Kubernetes.

By connecting our Git repo with the Kubernetes manifests, all of your workloads, their tags and also whether an image is behind or ahead of the image that’s running in the cluster is displayed together in the Deployments screen.

Deployments in Weave Cloud

If you click on the frontend service from the Deployments screen, you can view a detailed overview of all of the frontend deployments that ever happened and also lock, or automate deployments for this image.

Current deployments and deployment history

Craig then demonstrated how an image is released. When manually releasing an image, you are first taken to a Release Plan screen. Because Prometheus monitoring is integrated with all of the Weave Cloud features, you can see right away if releasing this image is going to cause a complete meltdown or not:

Release plan with integrated real-time monitoring

When the release button is pressed the following happens:

  1. The Weave Cloud agent updates the deployment config YAML in your git configuration repository.
  2. The agent sees that git has changed, and then updates the cluster to use the new image.

This is powerful because it means that you have version control backing up your entire cluster each time. You can now apply the same processes you use for source control to control the state of your cluster. In fact, you do not even need to use our interface to do a deploy, and can deploy everything through pull requests.

Application Monitoring and Observability

Once the new image is deployed, view how it’s running in the monitoring area of Weave Cloud where we have Prometheus as a service. Without instrumenting your workloads, you have a number of out-of-the-box metrics, segmented by namespace that can be viewed right away:

  • CPU usage
  • Memory usage
  • Bytes in and out
  • Disk usage

Cluster resources shown on out-of-the-box dashboards

If you instrument your app, Weave Cloud Prometheus as a Service will collect metrics from all of the Prometheus endpoints that you exposed in your app. Those metrics are stored and can be accessed by you for up to 13 months for free.

Workloads Dashboard

Select Workload from the main menu and then click a service (or a workload) to see its corresponding dashboard.

Weave Cloud detects that a workload has been instrumented and automatically graphs the metrics onto a set of workload-specific dashboards. The instrumentation can originate from either a Prometheus client library or it can use a built-in Prometheus exporter.

A Workload dashboard displays metrics about its current running state, and also includes a summary of its past deployments. The dashboards are service-specific and can display run-time metrics for HTTP (go-Kit, Node.js express), as well as language-specific run-time metrics for Go, JVM, and OpenFaas apps.

Weave Cloud Workload dashboards

Weave Cloud Workload dashboards displaying Go run-time metrics

Monitor RDS and ELB services in Weave Cloud

You can import CloudWatch metrics to Weave Cloud and view metrics collected from any RDS database or from the ELB (Elastic Load Balancer). This ensures that you have a complete view of your AWS services and your applications as they run in EKS.

Cloudwatch RDS metrics integrated with Weave Cloud’s Prometheus as a Service

Cloudwatch ELB metrics integrated with Weave Cloud’s Prometheus as a Service

Final Thoughts

Craig Wright demonstrated GitOps workflows and Weave Cloud at the EKoSystem Day event held at the AWS Loft in downtown San Francisco on June 11th of this year. Weaveworks was one of ten technical partners invited to speak at this special event. It was also broadcasted live on Twitch and can be viewed in its entirety here: