Thought for the day

I notice that when our 20 month old son Russell plays with the little toy oven, he likes to take the animals from the Noah’s Arc toy and throw them in, like a good little omnivore. It makes my heart swell with pride to know that my son appreciates a good cut of meat cooked to perfection. Well, while I was cleaning out the toy oven today, I noticed that he tossed in Noah and his wife as well. Should I be worried?

Posted in Social | 1 Comment

Our 2025 Ireland Non-Experience

Chris has been interested in going to a global 5-year family reunion for her historic clan in Ireland for over a decade. This became a priority since the 2020 CoVID cancellation and finally is feasible. Sadly, the reunion was cancelled again because the coordinator lost control / visibility and did not leverage or understand the event planning tools in Facebook supporting the clan group.

Earlier this year around St Patrick’s Day, Flipboard posted a few timely articles that were helpful for planning – we did pass over the surfing articles – neither of is interested in surfing beyond watching Point Break together.

So it looks like we’ll be revisiting these articles in another 5 years or possibly earlier given we’ll want to guaranty our mobility will allow us to enjoy the trip ( heavy sigh ). Until then, this article will be updated as additional ideas are surfaced to assist with our planning.

Posted in Uncategorized | Leave a comment

Kubernetes Essentials for Fedora

After decades of running Linux applications as native packaged installations ( first on bare metal and then in virtual machines ) I’ve taken on the task of migrating the majority of my networked application deployments to containers running in a kubernetes cluster of VMs host on my Fedora Linux workstation.

Why the change ? Frankly, this is a bit overdue. But here are the benefits I hope to realize:

  • Simpler re-deployment process across a cluster of devices
  • Improved / consolidated monitoring
  • Dynamic automated recovery of failed services
  • Expanded device management options

While podman, rancher, containerd and docker would have simplified setup on a single workstation significantly, my ultimate goal is to have any compute device in the house seamlessly transition to hosting services without my intervention. Settling on a Fedora CoreOS base node VM under Kubernetes with the CRI-O container runtime seemed appropriate given the broad usage and routine updates supporting the OS and the K8s platform.

Given the kubernetes nodes were initially planned to run on a single high capacity server, I implemented a PXE netboot configuration on a virtual bridge through libvirtd to create a kubernetes control plane and worker node among other targets based on the MAC address pattern binding the ignition configuration through PXE.

This is a learning experience – so I limited the installation to getting a Kubernetes environment running and ready for application installations. The Fedora Project did not quite support seamless installation on CoreOS of Kubernetes. There were a couple issues related to the read only nature of some runtime directories referenced by the kubernetes applications that required finesse to address.

Here are a few tips that might be of assistance:

  • This effort is a project – the scripts and butane configurations are maintained as a company ‘admtools’ project in our internal git repository.
    • YAML configurations are maintained under a ‘deployment’ folder
  • Achieve repeatability –
    • Created an environment install bash script invoking virt-install to create and add the nodes to the cluster
    • Leverage butane configurations to take advantage of Ignition support in Fedora CoreOS installations.
  • The cluster can be initialized running kubeadm init through Ignition startup
    • Package installations in Fedora CoreOS are OS extensions installed through rpm-ostree to create an overlay for the read only directories.
    • The command line options for kubeadm init are insufficient to address the read only directory issues – a kubeadm configuration file must be used to address altering references to those directories.
  • I opted to use Calico as the CNI for performance and security flexibility.
    • A simple configuration takes three commands to complete after the control plane is running.
  • A bare kubernetes installation can be managed and monitored easily by a knowledgeable admin – I need a few tools:
    • Install Dashboard for a web interface presenting cluster status
    • Install Prometheus to collect and present performance metrics
    • Install helm to support deployment processes with a single YAML config for each application.
  • Install nginx as a reverse proxy for web applications to support network isolation of the pods.
  • If splitting a host creates nodes that support less than a minimal number of applications, install kubernetes directly to the host and skip splitting the host into multiple VM nodes.
    • Minimal control plane system pods require about 850MB RAM. The control plane should have 2GB RAM and my minimal worker node requires about 16GB RAM.
    • I limit creation of VMs for kubernetes worker nodes to hosts with 32GB RAM or higher – 2 X 16GB.

Posted in Uncategorized | Leave a comment

Simplify VMs with netboot

In order to minimize overhead on enabling R&D while maintaining control of company IP, I wanted to ensure any team member would be able to spin up a R&D environment with zero or marginal delay. We could just spend the money on AWS instances, however I wanted the benefits of maintaining a small on premise cluster of servers to host those environments, such as:

  • Lower long term costs with sufficient utilization – start with one server and scale up if necessary
  • Low cost archive / restore of past projects
  • No-cost access to on-premise servers / services for integration

We wanted to balance cost with simplicity and mostly adhere to common practices for portability. As such, we focused on creating a simple netboot configuration on our internal dhcp server to support network installation on a bare-metal VM referencing a minimal Ubuntu ISO with a cloud-config ISO volume attached to trigger custom VM setup.

Initial Configuration

Some articles discuss classifying network devices and implementing more advanced differentiating configurations on the corporate network dhcp and tftp servers. These features sound great, but we wanted the initial rollout to mostly enable scenarios with zero-configuration effort.

We went opted to start very simply and – given the internal support for dhcp and tftp on network configurations in libvirt – implemented netboot on the libvirt R&D network configuration. We made a minimal edit adding the following two XML config nodes:

  • child node under the ip node: <tftp root=’/var/lib/tftp’ />
  • child node under the dhcp definition: <bootp file=’pxelinux.0‘ />

To complete configuration – we need to create the tftp root directory, download pxelinux.0 there, and follow the guide provided by Ubuntu to extract the necessary files from the ubuntu live ISO to the tftp directory. The Ubuntu guide is derivative of the pxelinux documentation and can be adjusted with some knowledge of pselinux.Note: Fedora Core provides a convenient package, syslinux-tftpboot, that installs the necessary files in a tftpboot directory on the root filesystem that I found to be a bit more convenient for accessing those files.

We chose to maintain boot configurations for Ubuntu, Fedora, and Fedora CoreOS. We achieved this by maintaining a configuration for each OS in the /var/lib/tftp/pxelinux.cfg directory and linking the configuration to a MAC pattern per the pxelinux documentation. Each configuration passes a cloud-init or ignition configuration to provision admin account access and any other universally available features.

We maintain all referenced images locally on the libvirt host to enable offline support and enhance install performance.

First Boot Experience

The experience on first boot is highly dependent on the new VM configuration, which we have settled on as follows:

  • Pass the R&D network as a network (isolated to the VM host)
  • (optional) Pass a bridged network as an additional network ( we prefer an externally defined VLAN enabled bridge limited to R&D usage )

This configuration allows immediate access to the VM on our pre-configured R&D network and optional isolated access by VLAN.

Posted in Uncategorized | Leave a comment

Android’s Achilles Heel

I’ve been a big fan of open source and the Linux platform since 1992 and was thrilled when Android initially launched leveraging the legacy of this platform. My family has Android phones and I acquired several Android tablets over the past few years, along with 3 iterations of the iPhone.

While we can get all our apps on both iOS and Android, I’m now convinced that my next tablet purchase should be an iPad. Initially, the variety of devices supporting Android was a huge plus for selection of an Android tablet. Now, however, this only serves to fragment the platform and highlight the contention between driving device sales and supporting end users for those vendors shipping Android tablets.

Because of the customizations against Android required to support customized hardware changes for each cellular provider – cell enabled products have a useful life of perhaps 18 months before the carriers stop issuing updates to focus on new products. This is the nature of the Android ecosystem where the carriers are responsible for software updates across a wide selection of hardware with varying design specifications. As a consequence, I have a Samsung Galaxy Tab 2 that is now stuck at Android 4.1 absent updates from T-Mobile which would likely have included performance and security fixes in later Android versions that would extend the useful life of the device by a year or two.

In contrast, Apple has pretty much nailed it. They do not allow the carriers to update iOS. This guarantees that Apple’s mobile platform will remain fresh, up-to-date, and secure as patches to the operating system and version updates are available and supported on older devices. The device support is much simpler and more reliable without involving the carriers. I have not had issues with updates on any of my iPhones having used an iPhone 4 for several years before rolling into an iPhone 5s and then upgrading to 6 just to get the NFC hardware support.

Considering the vastly improved design and hardware in tablets today, the expected lifetime for these devices should really be several years. It appears to me that Apple is the only real choice for enterprises providing tablets to their employees if the expected device lifespan is more than 2 years in light of the history around Android updates and the absence of any driving changes in the ecosystem around the Android OS updates with the cellular carriers.

Posted in Mobile Technology | Leave a comment

Doubling DVR Media Storage Efficiency

I’ve been wanting to kill our cable contract with Verizon for a while – now we’re getting a step closer.

I record TV shows from HD broadcast onto my computer so we can stream them out to apple and android devices as well as the TV in the living room via the attached media center. Our 3 terabyte disk is almost full – I don’t want to spend $200 to get another 2 3-TB disks (need to double up for RAID / backup) or reconfigure the media drives for more volume.

The DVR cards record in MPEG 2 video format with MP2 audio producing some pretty large files. I’ve cobbled together a little utility on Linux using ffmpeg to re-encode to h264 with aac audio – more compatible with apple devices and also 40-60% smaller files by using some logic I cooked in to figure the right bit rate based on the frame size and original quality level. It also removes the letterbox from the DVR produced files, further reducing the file sizes.

It’s going to take 3-4 days to go through the low resolution half of our 600 recordings, but after that, those files will play nicely on Chris’ iPad, my iPhone, and the other devices in the house. Of course, I don’t have to run each file – the utility finds all the video and re-encodes it without any help from me

Posted in AV Media Management | 1 Comment