It took some time, but after some modification to the script and a lot of waiting for Dockerhub to finish the builds I can finally present a functioning deployment of BigIPReport running in Kubernetes.

The base configuration consists of the following things:

  • Data-collector – Fetches the device configuration for the report
  • Frontend – Serves the report to the end users
  • Configuration map – Contains the configuration used by the data collector
  • Persistent volume – To store the data generated by the data collector and read by frontend
  • Service – Tell kubernetes where to reach frontend
  • Secret – Containing the credentials to the devices and optionally the support entitlement checks
A BigIPReport deloyment in ArgoCD

What about ingress?

This heavily depends on which environment you run this in so this is a bit of a BYO kind of thing. Personally I’m using PorterLB and Istio in my lab but I’ve tried running the report in GCP behind their load balancer and Cloud Armor too. Either way, if you are here I assume you can figure this out yourself.

Worth noting…

In my environment I did not have support for ReadWriteMany so I had to use pod affinity to ensure that the data collector always ends up on the same node as the frontend. The upcoming example contains a sample configuration for that scenario but if you’re so luck as to have ReadWriteMany you can change the PVC to that and forego the affinity configuration.

Please do remember that the configuration can be tied to the running container. This means that you should not run latest because your deployment will break eventually if you do. Instead, pick a version tag and get the configuration file that matches that particular tag. The tags in Dockerhub should always match the tags in the BigIPReport Github repository. If they don’t, please join us at Discord and give me some well deserved public yelling for it. 😉 At the time of writing only versions of v5.5.3 and onward is supported.

Also, when populating the configuration file you should keep the username and password settings blank and mount them as environment variables instead. On top of that you should always set ReportRoot in the configuration file to /opt/underlay/.

Stop talking and give me some YAMLs

Ok, ok, here you go (updated 2024-10-16 with a helm template):
https://github.com/epacke/bigipreport-k8s-example

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *