Skip to content

shelmangroup/flux-events-pubsub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI

Flux-events-pubsub

Let your FluxCD daemon connect to flux-events-pubsub as upstream controlplane. Flux-events-pubsub will subscribe to a Google pubsub topic and notify the FluxCD daemons upon changes which will trigger a fluxCD Sync.

FluxCD events (Commit, Sync and Release events) will also be published to pubsub topic for later consumtion of different services.

FluxCD events for Google container registry updates. (no updates are sent to other topics for this changes)

Example use cases that consume pubsub events.

  • Github WebHooks
  • Chat bots
  • Trigger test suites
  • etc.

Example PubSub conf for gcr events

gcloud pubsub topics create gcr

Example deployment

Kubernetes manifest example

---
apiVersion: v1
kind: Service
metadata:
  name: flux-events
  namespace: flux
  labels:
    app: flux-events
spec:
  type: ClusterIP
  selector:
    app: flux-events
  ports:
  - name: http
    port: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: flux-events
  namespace: flux
  labels:
    app: flux-events
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flux-events
  template:
    metadata:
      labels:
        app: flux-events
    spec:
      containers:
      - image: quay.io/shelman/flux-events-pubsub:latest
        name: flux-events
        args:
          - --log-level=debug
          - --log-json
          # Optionally add labels that will be append to the FluxCD json payload event.
          - -lmy-custom-label1=foo
          - -lmy-custom-label2=bar
        env:
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PROJECT_GCR
            value: "my gcr project"
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PUBSUB_SUBSCRIPTION_GCR
            value: "gcr-events-<cluster name>"
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PUBSUB_TOPIC_GCR
            value: "gcr-events"
          - name: GOOGLE_APPLICATION_CREDENTIALS
            value: "/secrets/pubsub-credentials"
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PROJECT
            value: "my-google-project"
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PUBSUB_TOPIC
            value: "flux-events"
            # Flux-events-pubsub will subscribe to this topic to trigger FluxCD Sync Actions.
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PUBSUB_TOPIC_ACTIONS
            value: "flux-actions"
          - name: FLUX_EVENTS_PUBSUB_GOOGLE_PUBSUB_SUBSCRIPTION
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
        resources:
          requests:
            cpu: 50m
            memory: 64Mi
          limits:
            cpu: 200m
            memory: 128Mi
        volumeMounts:
          - mountPath: /secrets
            name: gcp-credentials
      volumes:
        - name: gcp-credentials
          secret:
            secretName: gcp-credentials
            defaultMode: 0600

Connect FluxCD with an upstream

Add --connect=ws://flux-events:8080 argument to fluxcd deployment manifest.

About

Publish FluxCD events to Google PubSub. Trigger flux syncs from github webhooks.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published