You don’t have to build your gitops homelab around github. There are plenty of people who use GitLab or other git-based providers. Flux lists their bootstrap providers on their documentation.

In my case, I am using Github.

Configuration

Action > Repository Secrets

These are required if you are using my workflow actions to automate some tasks in your cluster.

BOT_* secrets are required if you are using a custom github application with your actions. All of these values will be located at your application’s settings.

CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN optional as they allow the schemas.yaml action to publish schematics to some of the cluster resources. CLOUDFLARE_API_TOKEN has the permissions Account / Cloudflare Pages / Edit and User / User Details / Read.

NameDescription
BOT_APP_IDThe github application id.
BOT_APP_PRIVATE_KEYA base64 encoded private key from your application.
BOT_USERNAMEYour bot’s literal username.
CLOUDFLARE_ACCOUNT_IDFound on any domain’s overview page under Account ID.
CLOUDFLARE_API_TOKENCreate one at https://dash.cloudflare.com/profile/api-tokens
KUBECONFIGA base64 encoded kubeconfig generated from your cluster.

Self Hosted Runners

I self-host an actions-runner-controller in my cluster. This helps run some sensitive workflows inside my cluster and doesn’t require me to expose it to the outside world.

You’ll need to provide roughly the same information as listed above.

View more: home-cluster/kubernetes/main/apps/actions-runner-system

Webhook(s)

I utilize Flux’s Webhook Receivers. By design, flux is pull-based, meaning it runs on an interval unless told to pull otherwise.

You can utilize these receivers to make super responsive push-based pipelines.

View more: home-cluster/kubernetes/main/apps/addons

Some specific settings:

  • Content type: application/x-www-form-urlencoded
  • SSL Verification: Enabled
  • Which events?: Just push.

Deploy Keys

Flux uses Deploy Keys to allow bootstraping flux over SSH instead of HTTPS. I don’t really use it for this as I have a whole system already revolving around HTTP/S. I instead use it for ImagePolicy(s) as Flux is configured to check for specific application updates faster that Renovate is. This is mostly for me when I am developing an application and I don’t want to keep pushing the same commit to update the digest.