Creating a Google Compute Engine machine image with pre-existing SSH host keys won’t work like you might expect—here’s why:

The Objective

A several-year-old SFTP server resides in AWS. It’s connected to regularly by its hostname. The hostname is an A record for an elastic IP address and it’s attached to the network interface of an EC2 instance running sshd. I’d like to replace this server with an instance running in Google Cloud Platform.

The Challenge

When connecting to an SFTP server, SFTP clients typically save a host key fingerprint alongside the host name and IP address used to connect to the host. The host…


A post-mortem describing how I learned to pay closer attention to Pod secondary IP ranges and SNAT in GKE private clusters and external resources in a VPN-connected cloud.

A network diagram of Google Cloud and Amazon Web Service Private Clouds networked via VPN
A network diagram of Google Cloud and Amazon Web Service Private Clouds networked via VPN

The following post is a redacted incident report I wrote recently for a temporary connectivity outage between our GCP Composer workloads in a GKE cluster and our AWS VPC private resources. This may be helpful to you if your GCP VPC is VPN-connected without BGP dynamic routing.

What happened?

Around 9PM EDT on 4/16/2020, GCP Composer Airflow workers lost connectivity to AWS VPC private resources like Redshift and other databases. This caused the majority of Airflow tasks to continuously fail until the issue was resolved at 12:24 PM EDT on 4/17/2020.

The errors looked similar to this:

Can't connect to MySQL server…


How we upgraded from Rails 4 to 5 zero commits ahead of master.

For all intents and purposes, Rails 4.x has reached its end-of-life. The Rails maintenance guide explains the release series support while the Security Policy explains which versions will receive security patches and new versions.

For major security issues, all releases in the current major series, and the last release in the additional major series will receive patches and new versions. This is currently 6.0.x and 5.2.x.

If you’re running a Rails 4 application, now’s the time to seriously consider upgrading.

This is a guide outlining how a…


last updated Jan 14, 2019

in this guide we’ll use gsutil to sync your git contents to your airflow google storage bucket

Google Cloud Platform recently released a general-audience hosted Apache Airflow service called Composer. Airflow reads a configured directory recursively for all python files that define a DAG. When using GCP Composer, the DAGs folder is setup within a google cloud storage bucket for your Composer environment. In this post I’ll describe how we started syncing a git repo of our DAGs to this bucket so our Airflow environment always has the latest source. …


How to deploy and orchestrate a Rails 5 application with Kubernetes in Google Container Engine (GKE)

Kubernetes hellonode tutorial is great, but it didn’t answer many questions that I had when building and deploying an actual app such as “how does my database get setup?”, “when do app packages get installed?”, “how does the developer environment setup work?” and “how do my containers talk to each other?”. In Part I of this walkthrough, we created a docker-compose developer environment and a fresh new Rails 5 app. …


How to set up and develop a Rails 6 application locally with docker-compose

Updated: 7/21/2020

In this walkthrough, we’ll create a dockerized development environment for a new Rails 6 application. At the end, you should have a Rails application with distributed services running on your local machine in docker with little effort and provisioning. In Part II of this guide, I’ll explain how to continuously deploy that application on Kubernetes—offering high availability, self-healing attributes, redundancy, and autoscaling. Kubernetes is batteries included, so load balancing, service discovery, rolling update deploys, health checks, and container scheduling is built-in. We’ll use Google Kubernetes Engine (GKE) for this guide.

This guide assumes some general Docker/container knowledge, so…


“Introduction to React”

This is not a writeup about how I smashed React and Backbone together. In fact, it’s almost the opposite of that.

Alright, Meetup; you got me. I’ve been putting off diving into React long enough. How can I keep ignoring it? Why wasn’t I hooked the first time I read the marketing pages? I should want this toolset — hell, I probably need it. Does anyone else feel this way? Am I finally overwhelmed by the inertia and pace of the javascript community? Doesn’t matter; this is perfect. …

Josh Bielick

loves systems, bikes, sociology, coffee, and the sound of music. VP of Infrastructure @Adwerx

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