Skip to main content

Quiet the Echo Service

Introduction

When planning and upgrade or maintenance in Spinnaker, Echo by default will keep on triggering notification which may cause unwanted errors or issues with stuck pipelines. Quieting Echo during the maintenance time will prevent unwanted echo triggers during that time. With triggers suppressed this effectively stops pipelines from being run if they are flagged to respect the quiet period.  There are two options to quieting the Echo service. The first option is to disable communication to Orca. This will prevent ANY trigger from firing and cannot be scheduled. The second option is enable quietPeriod in Echo. This allows a quiet period to be scheduled and allows the operator to configure which triggers should be suppressed.

Prerequisites

Suppressing all triggers by disabling communication to Orca In the Echo profile file echo-local.yml add the following configuration orca.enabled: false and redeploy Echo. This will suppress all triggers until this setting is changed back to true and the Echo service is redeployed.

Instructions

Enable quietPeriod NOTE: Pipelines MUST be configured to respect the quiet period for this to work!!! The following sample config will suppress the list of triggers in suppressedTriggerTypes from startIso to endIso if quietPeriod.enabled: true. The triggers will automatically start working again after the endIso time. It can also be manually disabled by changing quietPeriod.enabled back to false. In Echo’s profile In the Echo profile file echo-local.yml in Halyard's hal config profiles directory e.g. (~/.hal/default/profiles/) or in Operator under the spec.spinnakerConfig.profiles.echo, add the following configuration and replace everything in between <> in the startISO and endISO parameters and change the list of suppressedTriggerTypes as needed.

quietPeriod: enabled: true startIso: endIso:

see https://github.com/spinnaker/echo/blob/64cb72de7648a82d392db459e98026d1a9c16959/echo-model/src/main/java/com/netflix/spinnaker/echo/model/Trigger.java#L77 for list of triggers

The following will suppress all triggers including a Manual trigger

suppressedTriggerTypes:

  • cron
  • webhook
  • git
  • concourse
  • jenkins
  • docker
  • pubsub
  • dryrun
  • pipeline
  • plugin
  • helm
  • manual

In Deck’s settings-local.js In Deck’s settings-local.js file in Halyard's hal config profiles directory e.g. (~/.hal/default/profiles/) add the following:  window.spinnakerSettings.feature.quietPeriod = true;   In Operator under the spec.spinnakerConfig.profiles.deck.settings-local.js: spec: spinnakerConfig: profiles: deck: settings-local.js: window.spinnakerSettings.feature.quietPeriod = true;

Update Pipeline configs to respect quietPeriod
For a pipeline to respect Echo’s ```quietPeriod``` setting it must have the following set in its pipeline definition at the same indent level as ```stages``` and ```triggers```:
```"respectQuietPeriod": true```
If this is not set it is assumed that the pipeline does NOT respect Echo’s quietPeriod setting.
**Example pipeline config snippet**

{
"appConfig": {},
"expectedArtifacts": [],
"keepWaitingPipelines": false,
"lastModifiedBy": "admin",
"limitConcurrent": true,
"respectQuietPeriod": true,
"spelEvaluator": "v4",
"stages": [],
"triggers": [],
"updateTs": "1625697650000"
}


**Update config via the Deck UI**
****