After following this guide, the Honeydipper daemon should not pull from config repo as often as before, and it can reload when there is any change to the remote repo.
Create a yaml file in your config repo to store the settings for github integration, and make sure it is loaded through includes
in init.yaml
. See the github integration reference for detail on how to config.
For example:
# integrations.yaml
---
systems:
...
github:
token: ENC[gcloud-kms,xxxxxx..]
oauth_token: ENC[gcloud-kms,xxxxxx...]
By configuring the github integration, we enabled a webhook at certain url (by default, /github/push
, see your infrastructure configuration for the url host and port). As of now, the Honeydipper webhook driver doesn’t support authentication using signature header, so we use a token to authenticate requests coming from github.
Go to your config repo in github, click settings
=> webhooks
, then add a webhook
with the webhook url. For example,
https://mywebhook.example.com:8443/github/push?token=xxxxxxxx
Make sure you select “Pushes” to be sent to the configured webhook.
Create a yaml file in your config repo to store a rule, and make sure it is loaded through includes
in one of previously loaded yaml file. The rule should look like below
# reload_on_gitpush.yaml
---
rules:
- when:
source:
system: github
trigger: push
do:
if_match:
- git_repo: myorg/myconfig
git_ref: refs/heads/main
call_workflow: reload
Your repository name and branch name may differ.
After the rule is loaded into the Honeydipper daemon, you should be able to see from the logs, or the slack channel where the daemon is configured to set the status, that the daemon reloads configuration when there is new push to your repo. The if_match
in the do
section
takes a list, so if you want to watch for more than one repo, just add them into the list.
In the configuration for your daemon, set the configCheckInterval
to a longer duration. The duration is parsed using ParseDuration API, use ‘m’ suffix for minutes, ‘h’ for hours. See below for example:
# daemon.yaml
---
drivers:
daemon:
configCheckInterval: "60m"