11 software delivery problems solved by intelligence software delivery platform  Download
Select Page

Deploying Spinnaker to Kubernetes using Helm chart

Nirmalya Sen January 21, 2021
Share

Introduction

As Spinnaker has a microservice-oriented architecture, the recommended way to deploy Spinnaker is to deploy in a Kubernetes environment (an open-source system for automating deployment, scaling, and management of containerized applications i.e. microservices). In this tutorial, we will show you how easy it is to set up a Spinnaker instance in Kubernetes using Helm Charts.

What are Helm Charts?

Helm is the package manager that uses charts or collections of files that describe a related set of Kubernetes resources. Deployment with HELM brings a lot of conveniences, as anyone can easily deploy HELM map into Kubernetes clusters 

You can have a Spinnaker up and running in less than 20 minutes. To be successful, the Kubernetes cluster needs to support:

  • 18G of memory and 6 CPU cores
  • Persistent Storage Volumes (PV)
  • Loadbalancers

Pre-requisites of deploying Spinnaker on Kubernetes

  • You have Kubernetes cluster ready and kubectl can connect to that cluster
  • You have helm v3 installed

Steps to deploy Spinnaker on Kubernetes

Note:

  • If you are using Openshift, you can replace kubectl with oc commands.

  • In Openshift, you may need to grant additional permission to the service account. For example, if you are installing the helm chart below using the name mychart, you should grant the following to the service account mychart-spinnaker-halyard 
    oc
    adm policy add-scc-to-user anyuid -z mychart-spinnaker-halyard
  1. We will install Spinnaker using the published stable Helm chart. If you want to customize the installation, get the values.yaml file, and customize it.
    wget https://raw.githubusercontent.com/helm/charts/master/stable/spinnaker/values.yaml

  2. Run helm commands to setup Spinnaker (the -f values. yaml is required if you are customizing your installation)
    helm repo add stable https://kubernetes-charts.storage.googleapis.com/ helm install spinnaker stable/spinnaker [-f values.yaml]
    .
  3. Give it some time. Once all the pods are running, your Spinnaker is deployed and ready to use.
    $ kubectl get pods
    NAME                                READY   STATUS      RESTARTS   AGE
    spin-clouddriver-749d9c9589-wg49j   1/1     Running     0          11m
    spin-deck-775cdfccff-shzcb          1/1     Running     0          11m
    spin-echo-5fd76b8f79-fkdm9          1/1     Running     0          11m
    spin-front50-597b4ff46d-72kxr       1/1     Running     0          11m
    spin-gate-7dc88df658-xl8nm          1/1     Running     0          11m
    spin-igor-67b9b4c66-zs28q           1/1     Running     0          11m
    spin-orca-7d5958f8d6-c6w7x          1/1     Running     0          11m
    spin-rosco-67847b657b-gx5vc         1/1     Running     0          11m
    spinnaker-install-using-hal-mdt4q   0/1     Completed   0          14m
    spinnaker-minio-5c994565d6-fjdkm    1/1     Running     0          14m
    spinnaker-redis-master-0            1/1     Running     0          14m
    spinnaker-spinnaker-halyard-0       1/1     Running     0          14m

    Your Spinnaker is now deployed but how do you access it? You could always create port-forwards as mentioned in the output of the helm install used to deploy Spinnaker. But that works when you are using your local laptop. If your Kubernetes cluster supports loadbalancer services, it is easier to create a loadbalancer and access Spinnaker. This best option to make it available to everyone.

  4. Create a file spinsvcs.yml to create the loadbalancer service to Spinnaker.

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: spin
         stack: deck
       name: spin-deck-ui
    spec:
      type: LoadBalancer
    ports:
      - name: http
        port: 9000
        protocol: TCP
    selector:
        cluster: "spin-deck"

  5. Run the commands to create the service
    kubectl apply -f spinsvcs.yml

  6. .To get the hostname to connect to Spinnaker run,
$ kubectl get service spin-deck-ui
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
spin-deck-ui   LoadBalancer   172.30.16.45   52.147.219.48   9000:31544/TCP   12m

Once you have the EXTERNAL-IP address, you can connect to Spinnaker using the value of the EXTERNAL-IP. For example, using the above we get the output as:

http://52.147.219.48:9000

Already using Spinnaker? Yes, then you might be interested in how to deploy HELM charts to Kubernetes using Spinnaker CD pipeline.


If you want to know more about the Spinnaker or request a demonstration, please book a meeting with us.

OpsMx is a leading provider of Continuous Delivery solutions that help enterprises safely deliver software at scale and without any human intervention. We help engineering teams take the risk and manual effort out of releasing innovations at the speed of modern business. For additional information, contact us

You May Like

What is Canary Analysis ?

February 8, 2021
Share