Skip to main content

Introducing the Spinnaker Operator (Early Release)

Aug 22, 2019 by Nicolas Cohen

Our customers overwhelmingly install Spinnaker in Kubernetes to take advantage of out-of-the-box scaling and roll out of new settings or versions. But we also hear that Spinnaker can be hard to install and manage when administrators are used to deploy and configure other tools with kubectl or helm.

Today, we’re sharing a project we’ve been working on: a Kubernetes operator for Spinnaker. The Spinnaker operator lets you manage the entire lifecycle of Spinnaker with your favorite tools.

Operators can perform various functions from deployment to monitoring. Our first iteration lets you deploy Spinnaker without using Halyard and creates load balancers to expose Spinnaker. Let’s see how it works.

Installing the Spinnaker Operator

TLDR;

$ kubectl -n mynamespace apply -f kubernetes/basic/

Installing the operator consists of 5 Kubernetes manifests:

  • A Custom Resource Definition (CRD) which extends Kubernetes APIs
  • A service account, role, and role binding to grant the operator access to the Kubernetes objects it needs to watch or modify.
  • A Deployment object for the operator itself.

Installing Spinnaker

$ kubectl -n mynamespace apply -f example/spin-config.yml
$ kubectl -n mynamespace apply -f example/spinnaker-service.yml

The first manifest is a configMap  that contains all the necessary information to configure Spinnaker. It should not contain any secrets (read how to separate secrets from configuration) but you could still use a Secret otherwise.

The second manifest simply references the second one:

apiVersion: spinnaker.io/v1alpha1
kind: SpinnakerService
metadata:
  name: spinnaker
spec:
  spinnakerConfig:
    configMap:
       name: spinconfig-v001

That’s it! The operator will pick up the configuration and deploy Spinnaker.

Need to make a change? Update the SpinnakerService to point to a different configMap or just update the configMap itself. The entire Spinnaker configuration is represented in standard Kubernetes objects that you can store in git. You don’t need to invoke Halyard from your CI tool.

Got questions or suggestions? Want to give it a try? Get in touch to see how this would help you install and upgrade Spinnaker in your environment.

Update 8/27/19: The operator has been open-sourced at: https://github.com/armory/spinnaker-operator

Recently Published Posts

Welcoming 2022: Reflecting and looking forward

Dec 22, 2021
|
by Jim Douglas

Nearly all cultures globally have some form of celebration marking the Winter Solstice. Common threads found in most observances of the annual event are celebration of family and friends (living and past), reflection of the past year, and some form of giving thanks for continued health and sustenance. Exiting 2021, said celebrations would seem especially […]

Read more

Resiliency and Load distribution

Dec 16, 2021
|
by Daniel Gonzalez

Introduction When scaling a network service, there are always two concerns: resiliency and load distribution, to understand these concepts let us first understand the broader term “Redundancy”. Redundancy is the duplication of a component to increase reliability of the system, usually in the form of a backup, fail-safe, or to improve actual system performance. Resiliency […]

Read more

CVE-2021-44228 – log4j (Log4Shell) – an analysis

Dec 10, 2021
|
by Jason McIntosh

Today marked a 0-day disclosure of a rather nasty vulnerability in one of the most commonly used frameworks for logging – log4j.  This one is nasty on multiple levels.  Note that Armory Enterprise is NOT affected by this vulnerability.  The impact on this vulnerability is likely huge and is already being exploited.  Additionally it can […]

Read more