8 Observability

This chapter covers:

  • Relating GitOps to observability
  • Providing observability of Kubernetes to a cluster operator
  • Enabling GitOps through Kubernetes observability
  • Improving the observability of the system with GitOps
  • Using tools and techniques to ensure your cloud-native applications are also observable

Observability is vital to manage a system properly, determine if it is working correctly, and decide what changes are needed to fix, change, or improve its behavior (i.e., how to control the system). Observability has been an area of interest in the cloud-native community for some time, with many projects and products being developed to allow observability of systems and applications. The Cloud Native Computing Foundation recently formed a Special Interest Group (SIG) dedicated to Observability.[53]

In this chapter, we will discuss observability in the context of GitOps and Kubernetes. As was mentioned earlier, GitOps is implemented by a GitOps Operator (or controller) or Service that must manage and control the Kubernetes cluster. The key functionality of GitOps is comparing the desired state of the system (which is stored in Git) to the current actual state of the system and performing the required operations to converge the two. This means GitOps relies on the observability of Kubernetes and the application to do its job. But GitOps is also a system that must provide observability. We will explore both aspects of GitOps observability.

8.1       What is Observability?

8.1.1   Event Logging

8.1.2   Metrics

8.1.3   Tracing

8.1.4   Visualization

8.1.5   Importance of Observability in GitOps

8.2       Application Health

8.2.1   Resource Status

8.2.2   Readiness and Liveness

8.2.3   Application Monitoring and Alerting

8.3       GitOps Observability

8.3.1   GitOps Metrics

8.3.2   Application Sync Status

8.3.3   Configuration Drift

8.3.4   GitOps Change Log

8.4       Summary