- Installing Armory Spinnaker for Small Teams and POCs
- Installing Armory Spinnaker for Medium to Large Enterprise Deployments
Installing Armory Spinnaker for Small Teams and POCs
Introducing Armory Minnaker
Armory Minnaker is an easy to use installation script that leverages the power of Kubernetes with the simplicity of a Virtual Machine. The Kubernetes environmnent that will get installed on your behalf is based on Rancher’s K3s. You do not need to know how to setup Kubernetes as we have done all of the hard parts for you allowing you to get up and running with Spinnaker in under 10 minutes. Check out our video on running Spinnaker across all of the public clouds including VMWare Fusion locally. This deployment makes it easy to get up and running today and let’s you scale your deployment into a medium to large deployment down the road.
Prerequisites
Your VM should have 4 vCPUs, 16G of memory and 30G of HDD space.
Getting Started
Check out the GitHub project for more information. After you install Minnaker, use the AWS Quick Start to learn how to configure Spinnaker to deploy to AWS.
Installing Armory Spinnaker for Medium to Large Enterprise Deployments
Prerequisites
Make sure you have a kubernetes cluster with a minimum of 15 GB of memory and 8 CPU’s total available to be used by Spinnaker. At least a single node should have 4 GB and 1 CPU available.
Install Armory Halyard
Install Armory’s version of Halyard in a Docker container or Kubernetes cluster in order to run Halyard and its command line interface.
See also Armory Halyard configuration.
Run Armory Halyard in Docker
Before You Start
The Docker image will contain most of the files you will need. However,
you may need to update your .kube/config
file to use
heptio-authenticator-aws
instead of aws-iam-authenticator
; although
both are compatible, the Docker container expects to use the former.
If the .hal
directory you map in the docker command below
already exist, make sure you have write permission to that directory
(and read permissions to the others). If the directory doesn’t exist,
it will be created by the docker container.
Our installer currently expects to find your kubeconfig named config
in
the .kube
directory you map below. If you’ve named your config something
else, you’ll need to rename or symlink the file accordingly.
Running Armory Halyard in Docker
You can start Armory Halyard in a Docker container with the following command:
docker run --name armory-halyard --rm \
-v ~/.hal:/home/spinnaker/.hal \
-v ~/.kube:/home/spinnaker/.kube \
-v ~/.aws:/home/spinnaker/.aws \
-it docker.io/armory/halyard-armory:1.9.3
Note: If you’re installing to Google Cloud, you’ll want to change the “.aws” mapping above to your Google credentials json file, and then you’ll need to set the environment variable GOOGLE_APPLICATION_CREDENTIALS within the shell so the installer can find it.
Once Armory Halyard is running, you can interact with it by opening a separate Terminal and running:
docker exec -it armory-halyard bash
From there, you can issue all your halyard commands.
Run Armory Halyard in Kubernetes
You can start Armory Halyard in a pod with the following manifest:
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: halconfig-pvc
labels:
app: halyard
namespace: halyard
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: halyard
namespace: halyard
spec:
replicas: 1
selector:
matchLabels:
app: halyard
serviceName: halyard
template:
metadata:
labels:
app: halyard
spec:
containers:
- name: halyard
image: index.docker.io/armory/halyard-armory:1.9.3
volumeMounts:
- name: halconfig
mountPath: /home/spinnaker/
securityContext:
fsGroup: 65533
volumes:
- name: halconfig
persistentVolumeClaim:
claimName: halconfig-pvc
Copy and paste the manifest into a file named halyard.yml, then deploy the above manifest (halyard.yml) into Kubernetes with the following command:
kubectl apply -f halyard.yml
Note: This installs Halyard into the namespace ‘halyard’
Once the pod is deployed - you can interact with it by running:
kubectl -n halyard exec -ti halyard-xxxxx bash # make sure you get the exact pod name
Installing Armory Spinnaker
With Armory’s version of Halyard installed, you can interact with Armory Spinnaker with the exact same commands used to interact with Open Source Halyard. The key differences between Armory and OSS are as follows:
- Armory Halyard installs Armory Spinnaker instead of Open Source Spinnaker
- Armory Spinnaker version numbers are one major version ahead of Open Source Spinnaker. For example, Armory Spinnaker 2.18 maps toOpen Source Spinnaker version 1.18.
- Armory Halyard has several additional capabilities, primarily centered on Armory-specific features, including Terraform integration, Pipelines as Code, and Vault integration.
To install Armory Spinnaker, you use the same hal
commands as Open Source Spinnaker. Here are some guides on how to install Spinnaker based on your environment:
Notes on Docker
You will not be able to access the proxy in the Docker container from your machine directly, so you’ll need to install kubectl natively on your system and then run the following two commands:
SPINNAKER_NAMESPACE=YOUR_NAMESPACE_HERE
kubectl -n ${SPINNAKER_NAMESPACE} port-forward services/spin-deck 9000:9000 &
kubectl -n ${SPINNAKER_NAMESPACE} port-forward services/spin-gate 8084:8084 &
You should then be able to connect to http://localhost:9000/ with your browser and use your newly installed Spinnaker.