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
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.
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: