A basic introduction to service meshes with Istio.

Image for post
Image for post

Introduction

What is a service mesh?

For all the hype, the service mesh is architecturally pretty straightforward. It’s nothing more than a bunch of userspace proxies, stuck “next” to your services (we’ll talk about what “next” means in a bit), plus a set of management processes. The proxies are referred to as the service mesh’s data plane, and the management processes as its control plane. …


Advanced deployment capabilities built using Kubernetes custom resources.

Image for post
Image for post

What is Argo Rollouts?

Argo Rollouts is a Kubernetes controller and set of CRDs which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation, and progressive delivery features to Kubernetes.

— Argo Rollouts — Argo Rollouts

As we will explore, Argo Rollouts introduces a Kubernetes API rollout resource that is a drop-in replacement for the built-in deployment resource; it is this rollout resource that enables much of the advanced deployment capabilities. By operating as a Kubernetes API resource, we get a number of things for free:

  • Familiar User Experience: Deploy…


A dive into the importance of properly constructing domain names in workloads running on Kubernetes.

Image for post
Image for post

TL;DR: It is most efficient to use absolute domain names (ends in a dot) when accessing resources from a container of a Kubernetes pod; this is particularly important for off-cluster resources. If this is not possible, we can use the pod specification field dnsConfig to modify the behavior of the container’s resolver to make using relative domain names (does not end in a dot) to off-cluster resources equally efficient.

If this is new to you, it was for me, then let us walk through why…


Through example, we demonstrate how to enhance a HPA with scheduling logic.

Image for post
Image for post

Prerequisites

If you wish to follow along, you will need:

Problem

Imagine that you have a workload that experiences predictable large spiky loads. Specifically, for most of the day, the traffic to your workload is fairly even with only gradual changes. …


Exploring Kubernetes monitoring on Google Cloud Platform (GCP) through a concrete example.

Image for post
Image for post

Please note: For exploring Kubernetes logging on GCP, there is another article: Google Kubernetes Engine Logging by Example.

When we create a Kubernetes cluster on Google Kubernetes Engine (GKE), Google Cloud Operations for GKE is enabled by default.

Google Kubernetes Engine (GKE) includes native integration with Cloud Monitoring and Cloud Logging. When you create a GKE cluster, Cloud Operations for GKE is enabled by default and provides a monitoring dashboard specifically tailored for Kubernetes.

— GCP — Overview of Google Cloud’s operations suite for GKE

Please note: As…


Exploring Grafana through a concrete example using a Prometheus data source.

Image for post
Image for post

What is Grafana?

Grafana is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations.

— Grafana Labs — Getting Started

In order to make sense of Grafana, we need to understand what a time-series is and have access to one; for this, we build off the learning environment in a separate article Prometheus by…


The article that I did not think I needed to write but did.

Image for post
Image for post

It turns out that understanding how to authenticate to Google Cloud on your workstation is more complicated than one would think.

Please note: This article is not about authenticating a user account to the Google Cloud Console. It is also not about authenticating a service account on a GCE instance.

First, we need to understand that there are two separate components that are authenticated separately: Google Cloud SDK Command Line Tools and Google Cloud Client Libraries.

First, we have Google Cloud SDK Command Line Tools:

The gcloud…


Exploring Prometheus through a familiar example.

Image for post
Image for post

First, what is Prometheus?

Prometheus is an open-source systems monitoring and alerting toolkit originally built at SoundCloud. Since its inception in 2012, many companies and organizations have adopted Prometheus, and the project has a very active developer and user community. It is now a standalone open source project and maintained independently of any company.

— Prometheus — Overview

One key feature of Prometheus is that it collects metrics from target systems, systems being monitored, by pulling over HTTP.

Why do you pull rather than push?
Pulling over HTTP offers a number of advantages:

You…


Exploring Google Kubernetes Engine (GKE) native integration with GCP Cloud Logging.

Image for post
Image for post

Google Kubernetes Engine (GKE) includes native integration with Cloud Monitoring and Cloud Logging. When you create a GKE cluster, Cloud Operations for GKE is enabled by default and provides a monitoring dashboard specifically tailored for Kubernetes.

— GCP — Overview of Google Cloud’s operations suite for GKE

Prerequisites

If you wish to follow along, you will need administrative access to a GCP project with a GKE cluster and Kubectl CLI configured for the cluster. One way to accomplish this is to have:


A simple example of using Kubernetes watches.

Image for post
Image for post

Recently I ran into a situation where I needed to maintain a list of endpoints — specifically the IP addresses of a Kubernetes service. Because the service was backed by a deployment with a horizontal pod autoscaler, the list of endpoints (pods) was updated regularly and unpredictably.

One approach to maintaining this list of endpoints is to regularly — say every minute — query the endpoints URL. To illustrate this, we start a kubectl proxy on our workstation with:

$ kubectl proxy --port 8080

And then we can use a browser on our…

John Tucker

Broad infrastructure, development, and soft-skill background

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store