3. Choose your Environment

In this step, you tell Halyard in what type of environment to install Spinnaker.

The recommended path is a distributed installation onto a Kubernetes cluster, but all of these methods are supported:

  • Distributed installation on Kubernetes

    Halyard deploys each of Spinnaker’s microservices separately. This is highly recommended for use in production.

  • Local installations of Debian packages

    Spinnaker is deployed on a single machine. This is ok for smaller Spinnaker deployments, but Spinnaker will be unavailable when it’s being updated.

  • Local git installations from github

    This is for developers contributing to the Spinnaker project. If you’re a contributor, you’ll probably have two separate installations—a distributed one for using Spinnaker in production, and this local Git one for developing Spinnaker contributions.

Distributed installation

Distributed installations are for development orgs with large resource footprints, and for those who can’t afford downtime during Spinnaker updates.

Spinnaker is deployed to a remote cloud, with each microservice deployed independently. Halyard creates a smaller, headless Spinnaker to update your Spinnaker and its microservices, ensuring zero-downtime updates.

  1. Run the following command, using the $ACCOUNT name you created when you configured the provider:

    hal config deploy edit --type distributed --account-name $ACCOUNT
  2. If you haven’t already done so, configure a provider for the environment in which you will install Spinnaker.

    This must be on a Kubernetes cluster. It does not have to be the same provider as the one you’re using to deploy your applications.

    We recommend at least 4 cores and 8GB of RAM available in the cluster where you will deploy Spinnaker.

  3. Make sure kubectl is installed on the machine running Halyard.

    After you install it, you might need to update the $PATH to ensure Halyard can find it, and if Halyard was already running you might need to restart it to pick up the new $PATH:

    hal shutdown

    Then invoke any hal command to restart the Halyard daemon.

  4. Optionally, configure Kubernetes liveness probes for your Spinnaker services, setting the initialDelaySeconds to the upper bound of your longest service startup time:

    hal config deploy edit --liveness-probe-enabled true --liveness-probe-initial-delay-seconds $LONGEST_SERVICE_STARTUP_TIME

Local Debian

The Local Debian installation means Spinnaker will be downloaded and run on the single machine Halyard is currently installed on.

Note: Local Debian installation requires Ubuntu 14.04 or 16.04.

Intended use case

The Local Debian installation is intended for smaller deployments of Spinnaker, and for clouds where the Distributed installation is not yet supported; however, since all services are on a single machine, there will be downtime when Halyard updates Spinnaker.

Note that a Halyard Docker installation cannot be used as a Local Debian base image because it does not contain the necessary packages to run Spinnaker.

Required Halyard invocations

Currently, Halyard defaults to a Local Debian install when first run, and no changes are required on your behalf. However, if you’ve edited Halyard’s deployment type and want to revert to a local install, you can run the following command.

hal config deploy edit --type localdebian

Local Git

The Local Git installation means Spinnaker will be cloned, built, and run on the single machine Halyard is run on.

Intended use case

The Local Git installation is intended for developers who want to contribute to Spinnaker. It is not intended to be used to manage any production environment.

For a short guide to getting up and running with developing Spinnaker, see the developer setup guide.


Install local dependencies

Ensure that the following are installed on your system:

  • git: sudo apt-get install git
  • curl: sudo apt-get install curl
  • netcat: sudo apt-get install netcat
  • redis-server: sudo apt-get install redis-server
  • OpenJDK 8 - JDK (we’re building from source, so a JRE is not sufficient)
      sudo add-apt-repository ppa:openjdk-r/ppa
      sudo apt-get update
      sudo apt-get install openjdk-8-jdk
  • node (version >=10.15.1, can be installed via nvm, summarized below)
      curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
      # Follow instructions at end of script to add nvm to ~/.bash_rc
      nvm install v10.15.3
  • yarn: npm install -g yarn or guide

Fork all Spinnaker repos

Fork all of the microservices listed here: Spinnaker Microservices on github (guide).

Setup SSH keys

Follow these guides to setup ssh access to your github.com account from your local machine:

Required Halyard invocations

Halyard defaults to a Local Debian install when first run. If you will be contributing code to the Spinnaker project, you can change your deployment type to Local Git type and set up your development environment with the latest code.

hal config deploy edit --type localgit --git-origin-user=<YOUR_GITHUB_USERNAME>

hal config version edit --version branch:upstream/master

NOTE: Be sure to use the same username here that you forked the Spinnaker repositories to

Further reading

Next steps

Now that your deployment environment is set up, you need to provide Spinnaker with a Persistent Storage source.