Spinnaker Meets Minikube: Part 3

In the previous posting, we build a Spinnaker pipeline to pull images from Dockerhub to deploy to a Minikube cluster. In this article, we will build a pipeline that deploys to a second staging environment after waiting for the go-ahead from an approval step. Kustomize will, furthermore, be used to illustrate how Spinnaker utilizes its built-in kubectl command to manage configurations from one environment to the next. 

Requirements

The hard yards have been done and it is time for play. Only Kustomize will be added to the soup. Do not despair should you not be familiar with it. This write-up serves as an excellent introduction to Kustomize.

Spinnaker Meets Minikube: Part 2

Introduction

In the previous article, we installed Spinnaker on a Minikube cluster running on Windows 10. In this article, we will add GitHub as a data provider for a Spinnaker pipeline to continuously deploy a dockerized Spring Boot microservice onto the Minikube cluster. The pipeline will be triggered using a Cron job and can be templated so that all one's micro-services are automatically deployed to have a fully up-to-date local development environment at all times. 

Requirements

An understanding of Spring Boot, Github, and Docker Hub is presumed. However, fall-back instructions will be given for those that want to follow a lighter track that pulls the Docker image from the author's registry. However, certain things like proper artifact binding might not work as expected should the full guide not be followed.

Spinnaker Meets Minikube: Part 1

Spinnaker is a continuous integration/continuous delivery tool that was started by Netflix in its quest for more agility. This posting will show how to get hands-on experience running Spinnaker on Windows 10.

Minikube provides the ability to run a Kubernetes cluster on local Linux, Mac, or Windows. It can therefore serve as a sandbox environment for Spinnaker training, experimentation or even to keep ones local development environment up to date with all the latest commits. 

Make Spinnaker Even Better Using Armory

Introduction

Successful teams innovate often and deliver frequently. But because they move so fast, one of their challenges is ensuring that the rapid pace of releases doesn’t break their product. As more and more features are added, the risk of broken releases increases. 

As a solution, DevOps teams often look to Spinnaker—an open source deployment tool that helps teams to deploy quickly and consistently. But there’s an even more powerful solution available. Armory—which is built on top of Spinnaker—gives teams all the benefits of Spinnaker, but adds mission-critical feature extensions and enterprise-grade stability.

Software Engineers Need to Know DevOps Too, and That Starts with CI/CD

DevOps is hot right now. It seems like every software engineering job posting requires DevOps experience and expertise regardless of the actual job title.

When a tech company breaks up its monolith into microservices, each of its engineering teams now owns their portion of the application from start to finish. Software engineers no longer just build the application; they also own repo maintenance, set up continuous integration, configure build pipelines, and deploy their application.

I Never Thought a Simplified Spinnaker Was Possible

I think it is a fair statement to convey that software engineers in 2021 are not only working hard but working smart. Building upon lessons learned over the last five years, applications and services are now created as dynamic as possible and are designed to meet laser-focused business needs.

This same approach has found its way into the DevOps spectrum, where what I often refer to as “* as code” allows components to be created declaratively. The approach leverages the same git version control system that feature developers have been using for over 15 years for their source code. DevOps engineers have also made tremendous strides at delivering continuous integration (CI) pipelines that provide packaged software that is ready for delivery.

Three Strategic Considerations for Choosing a CD Platform

Introduction

Every company is trying to deliver software faster. The most important decision for setting up the organization for success is the CD platform. Sometimes the shiny object is not the right solution.

Responding quickly to customer needs is the new key to long-term success for many companies. Since software applications are now central to so many customer interactions, speed in delivering software is a key IT competency. That is why continuous delivery is gaining such a broad following now. 

Overcome Challenges of Continuous Delivery for Kubernetes With Spinnaker

Kubernetes is the leading container orchestration system, and it has a vast ecosystem of open-source and commercial components built around it. Today, in the wake of the pandemic, even more enterprises are considering Kubernetes a central part of their IT transformation journey. Kubernetes is a great container management tool because it offers:

  • Automated bin packing 
  • Scaling and self-healing containers 
  • Service discovery
  • Load balancing  

However, using Kubernetes alone may not solve the purpose of becoming agile because it was never meant to be a deployment system. This blog will highlight some of the challenges of using Kubernetes and, based on our work with hundreds of organizations, how to avoid the challenges to unlock the full potential of cloud-native. 

What Is a CI/CD Pipeline?

A series of steps that include all the stages from the outset of the CI/CD process and is responsible for creating automated and seamless software delivery is called a CI/CD pipeline workflow. With a CI/CD pipeline, a software release artifact can move and progress through the pipeline right from the code check-in stage through the test, build, deploy, and production stages. This concept is powerful because once a pipeline has been specified, parts or all of it can be automated, speeding the process and reducing errors. In other words, a CI/CD pipeline makes it easier for enterprises to deliver software multiple times a day automatically.

DevOps engineers often get confused with the CI/CD pipeline by automation of individual stages in CI/CD. Though different tools may automate each complicated stage in CI/CD, the whole software supply chain of CI/CD may still be broken because of manual intervention in between. But let us first understand various stages in a CI/CD process and why a CI/CD pipeline is essential for your organization to deliver code at speed and scale.

Continuous Delivery Pipeline for Kubernetes Using Spinnaker

Kubernetes is now the de-facto standard for container orchestration. With more and more organizations adopting Kubernetes, it is essential that we get our fundamental ops-infra in place before any migration. This post will focus on pushing out new releases of the application to our Kubernetes cluster i.e. Continuous Delivery.

Pre-Requisites

  1. Running Kubernetes Cluster (GKE is used for the purpose of this blog).
  2. A Spinnaker set-up with Jenkins CI enabled.
  3. Github webhook enabled for Jenkins jobs.

Strategy Overview

  1. Github + Jenkins : CI System to build the docker image and push to registry.
  2. Docker hub: Registry to store docker images.
  3. Spinnaker : CD System to enable automatic deployments to Staging environment and supervised deployment to Production.
Continuous Delivery Pipeline for Kubernetes

Continuous Integration System

Although this post is about the CD system using Spinnaker. I want to briefly go over the CI pipeline so that the bigger picture is clear.

Should We Start Baking Immutable Infrastructure Instead of Frying On-Demand?

It is an age-old dilemma that awaits me every time I walk into the chip shop. Should I go for the fried-to-order fish? Or the baked and ready-to-eat meat pie? A similar question can arise in the context of how to build infrastructure.

Photo by Laurenz Kleinheider on Unsplash

The Fried-To-Order Approach

"Frying" infrastructure on-demand is the default approach to building infrastructure. Pick up an IaC tool or two and program it to carry out the same steps as you would follow while doing a manual installation.

CI/CD for Kubernetes With Jenkins and Spinnaker (Part 2)

In our last post, we installed Spinnaker using Halyard. Now we will create applications and pipelines that will be continuously deployed in our Kubernetes Cluster.

Before creating an application we will add docker registry to cache images which will be used to deploy clusters in application deployments.