keyser_soze

Building Kubernetes Cluster On Dell Wyse 5070


I bought a used Dell Wyse 5070. I read online that the Dell Wyse 5070 is uses about 2.7 to 6 watts of power when it’s not being used, but it uses more when the CPU is busy.

Previously from my article, I’m using a used Raspberry Pi 4 with 2GB of RAM. I think 2GB of RAM is pretty limited, and I’d love to add more. I’m thinking of adding some applications like monitoring, storage, CICD, or something like that. I decided to get this little beast.

Dell Wyse 5070 with 32GB RAM (30GB)


The manufacturer stated that the Dell Wyse 5700 model has a maximum memory capacity of 16 GB. However, based on multiple sources, it appears that this model can be extended to support up to 32 GB.

test@test:~# free -h
              total         used        free       shared    buff/cache   available
Mem:            29Gi        11Gi        10Gi        72Mi       8.1Gi        17Gi
Swap:          976Mi          0B       976Mi

It looks like the RAM size is showing as 30 GB instead of 32 GB.

BTW, There are 2 brands of RAM that i tried and it works.

SK Hynix HMA82GS6AFR8N-UH 16gb 2400hz
Micron MTA16ATF2G64HZ-2G6E1 16gb 2666hz

Architecture


The next step is to set up a Proxmox server to create some Kubernetes clusters. Here’s the architecture.

There are four clusters. The first one is Debian for the NFS Server and the next three are Talos Linux.

Network File System (NFS)


NFS (Network File System) server is a system that shares directories and files with other computers over a network, allowing users and programs to access remote files as if they were local.

The database and CDN server are connected to the NFS server thanks to nfs-subdir-external-provisioner.

I also tried to use Longhorn, but it used a lot of CPU. So, i chose the easiest method. Might uses Longhorn in the future.

Talos Linux


Talos Linux is a modern, open-source Linux distribution specifically designed for Kubernetes, emphasizing security, immutability, and minimalism.

They are basically operating systems for Kubernetes. Talos Linux can only communicate through an API, which makes it secure.

Application


I deployed my own blog on this cluster, written in Go, which is lightweight, and easy to deploy.

I’m using Cloudflare Tunnel to expose my website. So, here’s what the config would look like.

    tunnel: proxmox
    credentials-file: /path/to/your/credentials.json
    metrics: 0.0.0.0:2000
    no-autoupdate: true
    ingress:
    - hostname: "*.stefandy.blog"
      service: http://proxy.nginx.svc.cluster.local
    - service: http_status:404

The Cloudflare tunnel will make the NGINX service available to the public. After that, your website can be accessed by the public.

One of the key advantages of Cloudflare is that it eliminates the need to reveal your public IP address or open ports, as Cloudflare handles these aspects automatically. Also, Cloudflare’s got analytics and a Web Application Firewall (WAF).

Cloudflare Analytics


I think the Cloudflare analytics dashboard is pretty good. You can monitor IP user, their device, countries and many more. DDOS attacks are pretty common, so it’s important to set up WAF to keep your cluster secure.

Web Application Firewall (WAF)


The free version can only have up to five rules. If you’re just hosting a simple website, five rules should be enough.

My firewall rules are mostly to make sure that people who access this website are using the correct endpoint. This ensures that the requests are already rejected without reaching my server.

Monitoring


K9s is an open-source, terminal-based user interface designed to simplify the management of Kubernetes clusters.

I usually use this tool to take a quick peek from my local. Simple and just works.