Overview of Halyard Conventions

Quick commands:

# Deploy full Spinnaker in rolling fashion starting with bootstrap Services
hal deploy apply

Service Names

Type list in https://github.com/spinnaker/halyard/blob/master/halyard-deploy/src/main/java/com/netflix/spinnaker/halyard/deploy/spinnaker/v1/service/SpinnakerService.java.

  • clouddriver-bootstrap
  • clouddriver
    • Interfaces with all Cloud Providers: AWS, Kubernetes, etc.
  • consul-client
  • consul-server
  • deck
    • Web UI served by Apache 2 by default
    • Talks directly to Gate for all information
  • echo
  • fiat
  • front50
  • gate
    • Main entry point for every API call
    • The web UI makes calls to this API directly, which is why it needs to be publicly accessible
    • Makes backend calls to all Spinnaker Services
  • igor
    • Interfaces with Continuous Integration (CI) Providers: Jenkins
    • Stores credentials for Git Repository Providers: GitHub
    • Scans for changes to trigger Pipelines
  • kayenta
    • Service introduced into mainline version 1.7.0
    • Provides Automated Canary Analysis (ACA)
  • monitoring-daemon
  • orca-bootstrap
  • orca
  • redis-bootstrap
  • redis
  • rosco
    • Controls the Bake Stage for creating machine images: AMIs
    • Uses Packer underneath to provision machines and run configuration management
  • vault-client
  • vault-server

Service Settings

Override Kubernetes Service Settings

To override Kubernetes Service settings in the generated file .hal/default/history/service-settings.yml, create a file .hal/default/service-settings/SERVICE.yml.

Example .hal/default/service-settings/echo.yml:

kubernetes:
  podAnnotations:
    sumologic.com/format: text
    sumologic.com/sourceCategory: spinnaker/echo
    sumologic.com/sourceName: echo
env:
  JAVA_OPTS: -Xms2g -Xmx2g

Override Spring Profile Settings

To override settings Spring Profile settings, create a file .hal/default/profiles/SERVICE-local.yml.

Example .hal/default/profiles/clouddriver-local.yml:

serviceLimits:
  cloudProviderOverrides:
    aws:
      rateLimit: 15

Swagger APIs

Most Spinnaker Services have a Swagger UI for exploration of the API hosted at http://localhost:${PORT}/swagger-ui.html. The only publicly facing Service with Swagger is Gate. Use Kubernetes to port forward for all other private Services.

kubectl --namespace spinnaker get pods      # Find the Pod for the Spinnaker Service
kubectl --namespace spinnaker get services  # Find the exposed port
kubectl --namespace spinnaker port-forward ${POD_NAME} ${PORT}
# Go to http://localhost:${PORT}/swagger-ui.html

Common Services with useful APIs:

  • Clouddriver
  • Gate