05 Sep 2020, 13:15

For the Love of Go: Fundamentals

Learning Go isn’t easy. There, we’ve said it. Some time and effort will be required, but that’s true of anything worth learning, and it doesn’t mean we can’t also have fun while we’re doing it. ‘For the Love of Go: Fundamentals’ is a simple, practical, friendly, and entertaining book for complete beginners, with no programming experience necessary.

With the assistance of expert Go mentor and teacher John Arundel, you’ll build a complete project in Go, step by step, using the popular test-driven development (TDD) process. Along the way, you’ll learn a lot about the basics of programming, and even more about testing!

The best part of all is the price: just $4.99. You can read a full description of the book, along with some rave reviews, and buy it online here:

For the Love of Go: Fundamentals

03 Jul 2020, 12:00

What is GitOps?

Once you’ve wrapped your head around the basic concepts of Kubernetes, the next question that often comes to mind is “So how can I deploy my services onto this thing?” That means we need to talk about Continuous Integration/Continuous Deployment/Delivery (CI/CD) pipelines.

Kubernetes itself is a great platform for running reliable services, but it also comes with a growing ecosystem of tools for managing deployments that can help improve the workflows of both software developers and cluster operators.

Software engineers have certainly been running and deploying software long before Kubernetes, Docker, and cloud platforms ever existed. So what’s different about the cloud native world?

20 Jun 2020, 16:17

Kubernetes at Work with Torie Joy-Warren

In the Cloud Native DevOps with Kubernetes book, we aimed to go beyond the basics to provide you with real-world, battle-tested solutions to the kind of real-world problems you’re likely to come across as an operations developer or infrastructure engineer. We’ve all heard the sales pitches for Kubernetes, but we know that things can get complicated when the rubber meets the road.

In that spirit, then, this is the first of a series of interviews with working engineers about their experiences with Kubernetes and cloud, what makes their jobs easier, what frustrates them, and what advice they’d give to people just getting into the cloud native world.

This week, we talk to software engineer Torie Joy-Warren. Torie lives in Toronto with her 6-toed cat, Olive. Apart from coding, she loves to read, play soccer and squash, and bike as much as possible.

25 Apr 2020, 17:14

What is Kubernetes?

You’ll find lots of blog posts and tutorials anxious to explain what Kubernetes is, in terms of APIs, clustering, reconciliation loops, and goodness knows what else. What they don’t tell you is why. Why do we need Kubernetes? Actually, let’s ask an even more fundamental question: Do we need Kubernetes? What’s the point of it in the first place? How do I know whether I have a problem that Kubernetes solves or not?

To answer that, we’re going to need to take a short detour involving eggs, jars, and omnibuses, via some big metal boxes, and ending up with an orchestra, a blue-green canary, and, perhaps inevitably, the Borg. Hold tight.

02 Apr 2020, 12:00

Surveying the cloudscape: what’s new, Kubernetes?

It’s hard to believe, but ‘Cloud Native DevOps with Kubernetes’ has been out for nearly a year! While much has changed in the Kubernetes landscape, a lot is also the same. In this post we’ll cover some of the things that have changed (and what hasn’t).

29 Feb 2020, 10:29

Build a Golang Docker image

This is a guest excerpt from Golang trainer John Arundel’s blog. John is one of the authors of ‘Cloud Native DevOps with Kubernetes’, a full-time Go coder and mentor, and a somewhat less than full-time blogger.

Let’s build a Docker container with Golang! It sounds complicated, but it really isn’t. All you need are a few tools, a couple of simple commands, and ideally some cake. (The cake isn’t strictly necessary, but coding is hungry work. It’s a good idea to have some tasty snacks on hand, to keep your strength up.)

25 Jan 2020, 16:29

The Dawn of DevOps

What does ‘DevOps’ mean? Where did it come from? What came before it? How do you do it? And what happens next?

When we decided to write Cloud Native DevOps with Kubernetes, we knew we wanted to explain what DevOps practices look like in the ‘new stack’ environment: cloud, containers, and Kubernetes. But we didn’t want to assume any prior knowledge of these things; that’s why we explain in simple terms, with a step-by-step tutorial, what containers are and how to make one, how to get started with Kubernetes, and so on.

But while most people have probably heard of DevOps, not all of them are confident they actually understand what it means. So before explaining what DevOps means in the cloud, let’s take a moment to clarify exactly what we mean by ‘DevOps’ in the first place.

30 Mar 2019, 12:00

Deciding which Docker tag to use

In this post we’re going to talk about how versioning works in Docker container images. We’ll also explore some different strategies you will want to consider when using image version tags in your own Dockerfiles.

Docker container names are split into 2 parts: the name of the container image, and the version tag of the container image. For example, the container python:3 is a container hosted on Docker Hub at https://hub.docker.com/_/python. The name of the container is python, and 3 is the version tag. There are several other version tags of python also available, such as:

  • python:3.7
  • python:3.7.3
  • python:3-alpine
  • python:3.7-alpine
  • python:3.7.3-alpine
  • python:slim

Most of the popular languages use a similar tagging pattern in their official images on Docker Hub. Each of these tags represents different variations of an install of Python. Some use a different base operating system images (Alpine VS Debian VS “slimmed-down” Debian), and they also indicate the specific versions of whatever language is installed in the image.

Today the python:3 container image specifically uses Python version 3.8. Whenever 3.9 is released, that tag will get updated and the python:3 image will then contain version 3.9 instead. In a similar way, the python:3.7 image would be the latest available security patch of Python 3.7. Currently that happens to be 3.7.3, but tomorrow that could be 3.7.4 if a new version is released.

When writing your own applications, you will need to decide which version of the base image(s) you will use in the FROM statement(s) of your Dockerfile(s). The options include:

  • None (just use :latest, for example, just FROM python)
  • Specify a tagged version number (for example, python:3, or python:3.7, or python:3.7.3)
  • The exact sha256 digest of an image (for example, python@sha256:7e6c00cc553fdce06c1bcfcbf34c73a0f3623a8fc9ce88c8fb91671f2cbc0dab)

Let’s look a bit at each option, and discuss why you may want to use one tagging strategy over another.

19 Mar 2019, 10:17

Podcast: A big ol' cloud of compute

John and Justin made a guest appearance recently on the ‘Deloitte: On Cloud’ podcast with David Linthicum, talking about cloud native, DevOps, and Kubernetes from the business perspective.

What I want is just a big ol’ cloud of compute and I can just stuff my container in it and have it work. And we kind of have that now with Kubernetes. It’s not that there’s anything so magical about Kubernetes itself so much as the fact that it’s just universally adopted now.

It was great for us to have a chance to talk about the organizational and business side of things—as David points out in the show, DevOps is always about the people. The ‘Cloud Native DevOps’ book is as much for IT directors, CTOs, and tech leaders as it is for engineers. If you’re not necessarily sold on the whole cloud and container thing, we explore the arguments for and against, and look at why, apart from sheer hype, Kubernetes is rapidly becoming the standard platform for modern apps. The book also explains how and why you need to transform your engineering organization along DevOps lines, and what that looks like in cloud native land.

Kubernetes is a no-brainer when you’re at the hyper-growth stage, and if your business is stable, it’s just the amount of time that you save by using a standard platform. There’s a migration cost, but I think there’s huge cost savings in the long run. It’s absolutely right to ask the questions, what is the ROI, when do we expect to see this thing pay off, and how do we know if we’re on the right track.

Check out the podcast here:

Deloitte On Cloud Podcast: Cloud migration with containers and Kubernetes

If you don’t have time to listen, and we’re all busy people, you can also read the transcript of the show. Enjoy!

11 Mar 2019, 10:36

'Cloud Native DevOps with Kubernetes' is published!

The big day is here. It’s been a long time coming, but ‘Cloud Native DevOps with Kubernetes’ is finally published! Your pre-ordered copies should be with you very soon, if they’re not thumping on the doorstep already. If you didn’t pre-order, what were you thinking? Go ahead and buy the book right now:

Buy ‘Cloud Native DevOps with Kubernetes’ on Amazon.com

Buy ‘Cloud Native DevOps with Kubernetes’ on Amazon.co.uk

Cloud Native DevOps with Kubernetes: Building, Deploying, and Scaling Modern Applications in the Cloud

Some reader reviews:

The most encompassing, definitive, and practical text about the care and feeding of Kubernetes infrastructure. An absolute must-have.
—Jeremy Yates, SRE Team, The Home Depot

This book got me really excited. It’s a goldmine of information for anyone looking to use Kubernetes, and I feel like I’ve levelled up!
—Adam McPartlan (@mcparty), Senior Systems Engineer, NYnet

Cloud Native DevOps is an essential guide to operating today’s distributed systems. A super clear and informative read, covering all the details without compromising readability.
—Will Thames, Platform Engineer, Skedulo

Basically, this is the book we wish we’d had when we started trying to do stuff with Kubernetes. It explains the whole background to containers and Kubernetes, tells you what your options are for getting Kubernetes, what to do with it once you’ve got it, how to run it, how to deploy and scale your apps, how to secure your containers, how to monitor and gather metrics on your services, and much, much more! (See the table of contents)

Vital statistics:

  • Pages: 346
  • Chapters: 16
  • Words: 97,115
  • Writing time: 433hrs, 35m