be Groovie

About

Ben Bangert is a San Francisco Bay Area programmer, best known for his open-source work creating and contributing to Python libraries such as Pylons, Beaker, and Routes.
He currently works at Mozilla.

Categories

Lan Containers in Kubernetes with Rancher

Note

Part [1 2 3] of a series of more. I don’t know how much more yet as this is primarily written to document my setup so I can refer to it later when I wonder why/how I did something.

When running containers that I want available on my LAN, it’s handy to expose them under their own LAN IP. To do this I set my DHCP server to stop allocating addresses past .189, and will reserve the remaining IP addresses for container use.

To allocate LAN IP addresses for containers in Kubernetes I use MetalLB. I installed it using kubectl (Rancher makes it easy to download the kube config file).

Then I setup a ConfigMap YAML:

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
      - name: default
        protocol: layer2
        addresses:
        - 192.168.2.190-192.168.2.254

And applied with:

$ kubectl apply -f metallb_config.yaml

Unifi Controller

I’m changing the IP of where the existing Unifi controller runs, which comes with an interesting drawback. All the existing Unifi devices need to start reporting to the new controller.

First, login to existing controller, and download a full backup. Then setup the new controller, my unifi-controller.yaml looks like this:

I created a namespace for unifi in the Rancher UI, where I’ll run my Unifi containers.

To spin up the container on its new IP:

$ kubectl -n unifi apply -f unifi-controller.yaml

This can take a few minutes to come-up, it has to play with ARP responses and such. Once the new Unifi controller was up, I restored the backup and logged in. None of the devices will show up.... yet!

On the old Unifi controller, I went to Settings -> Site and clicked the Export Site button. You can download a backup file here, but the more important step is to migrate the devices to the new controller by providing the new IP for them to inform. Once this step is done, the devices should show up in the new controller shortly.

The old controller can then be shutdown.

Unifi Video Controller

I used this kubernetes file to setup my unifi video controller:

I’m using the /mnt/data directory that is the second SATA SSD drive for these containers to store their data on.

After restoring this from the backup I made of my old unifi video controller, I logged in, selected the camera, and under Manage I changed its reporting IP to the new container IP.