9 ms·
My IRC client runs on Kubernetes
- Lord_Zero 2y agoJust use irccloud... It's worth the $5/mo
- RockRobotRock 2y agoI love irccloud! Only way I could use IRC and not go insane
- deleted 2y ago[deleted]
- Archbtw97543 2y agoWhere's the fun in that though?
- AdamJacobMuller 2y agoKubevirt is great, but, I'm not sure why you wouldn't just run weechat inside a container. There's nothing so special about weechat that it wouldn't work and you can just exec into the container and attach to tmux. Running tmux/screen inside a container is definitely cursed, but, it works surprisingly well.
- xena 2y agoAuthor of the article here. One of the main reasons is that I want to update weechat without rebuilding the container, taking advantage of weechat's soft upgrade method: https://weechat.org/files/doc/weechat/stable/weechat_user.en.html#command_weechat_upgrade https://weechat.org/files/doc/weechat/stable/weechat_user.en... And at that point, it may as well just be a normal Ubuntu server.
- AdamJacobMuller 2y agoAh I didn't know wechat could do that, but, I remember that from my irssi days. I would personally consider that a bit of an anti-pattern (I would always want to have software upgrades tied to the container) but that makes sense!
- xena 2y agoAs a long-time Docker-slonker I agree, however then that requires me to remember to upgrade the container images which means that it's harder to ensure that it's up to date. If you set up a cronjob to update the VMs packages and then a script that runs `/upgrade` on the weechat server every time the weechat package version changes, then you don't need to think.
- fuero 2y agoConsider having Renovate handle this for you - using a git repo to apply your manifests will make it pull updated container images
- AdamJacobMuller 2y agoI have this very easily setup to a set of simple commands which I can run to deploy new versions of packages. Basically 3 paths for: - things with well-maintained upstream helm charts (checks the latest version of the helm chart and updates helmfile) - things where I wrote a helm chart (checks for the latest container image and updates the values.yaml) - things where there is no (reasonable) public docker image, or my own software, where I have full CI/CD to build and deploy a new container image. Probably takes me 15 minutes a week to keep my two personal clusters fully up-to-date.
- tw04 2y agoSo why not just make it a VM and skip k8s altogether?
- xena 2y agoBecause I already have a kubernetes cluster with distributed storage. This way makes it somewhat standard with the rest of my setup. In SRE things the real enemy is when parts are unique in ways that conflict with the normal way of doing things. Look up at the "unique/standard" comment above and then take a moment to think about it. It sounds absurd from the first read; but when you realize that it allows me to reuse the hardware I have and take advantage of the second order properties I've done, then it makes more sense.
- bbkane 2y agoThis is also why I design all my config files to use YAML. I've already got powerful tools to deal with its quirks (JSONSchema, yq, yamllint)
- imtringued 2y agoMostly because VM tooling is stuck in the past.
- okasaki 2y agoYou can do that in a container, no need for a VM. docker run -itd ubuntu:24.04 ... docker exec -it df36 /bin/bash ... root@df365a3d2257:/# apt update ... root@df365a3d2257:/# apt upgrade ...
- kristianpaul 2y agoWhy not use Persistent Volumes and Nix container?
- superkuh 2y ago[flagged]
- AdamJacobMuller 2y agoI wouldn't say it's cargo-culting, but, it's definitely silly (and intended to be). Not having to manage systems anymore, and fully relying on kubernetes to configure and manage everything is great, especially leveraging the redundancy and reliability of it.
- Alupis 2y agoPeople so very often are quick to look down upon anything using k8s these days, often citing complexity and some hand-wavy statement about "you're not web scale" or similar. These statements are usually accompanied by complex suggestions as "more simple" alternatives. On one hand you can manually provision a VM, configure the VM's firewall, update the OS, install several packages, write a bash script which can be used with cron, configure cron, setup backups, and more, followed by routine maintenance that is required to keep this system running and secure. This dance has to be done every time you deploy the app... oh, and don't forget that hack you did one late night to get your failing app back online but forgot to document! Or, on the other hand, you can write 1-3 relatively simple yaml files, just once, that explicitly describe what your app should look like within the cluster, and then it just does it's thing forever. k8s is very flexible and very useful, even for simple things. Why would you not use it, should be the default question.
- drdaeman 2y agoSetting up and maintaining along the happy path is not an issue, it’s well-documented and has existing automations if desirable so you can set up a cluster in just a few minutes (if you have the experience already). And YAML files are nearly trivial in most cases. Boilerplate is not pretty but it’s easy. The only Problem (with a capital P) with K8s is when it suddenly and unexpectedly breaks down - something fails and you need to figure out what is going on. That’s where its complexity bites you, hard - because it’s a whole new OS on top of another OS - so, a whole new giant behemoth to learn and debug. If you’re lucky it’s already documented by someone so you can just follow the recipe, but if luck runs out (it always eventually does) it’s not a common case you’re going to have some very unpleasant time. I’m a lazy ass, I hate having to debug extremely complex systems when I don’t really need to. All those DIY alternatives are there not because people are struggling with NIH syndrome but because it is orders of magnitude simpler. YMMV. Or if you want to make K8s do something it isn’t designed or not presently capable of, so you need to hack on it. Grokking that codebase requires a lot of brainpower and time (I tried and I gave up, deciding I don’t want to, until the day finally comes and I must.)
- tucosan 2y ago[flagged]
- RockRobotRock 2y agojust a bit of fun
- erulabs 2y agoWell I think it's neat. The bit I find most provoking is the "if you already have Kubernetes..." premise. I find myself having a hard time not wanting to shove everything into the Kubernetes framework simply to avoid having to document what solutions I've chosen. `kubectl get all` gives me an overview of a project in a way that is impossible if every single project uses a different or bespoke management system. "simple/complex" is not the right paradigm. The real SRE controversy is "unique/standard". Yes, the standard approach is more complex. But it is better _in practice_ to have a single approach, rather than many individually-simpler, but in-aggregate-more-complex approaches. Kubernetes is never the perfect solution to an engineering problem, but it is almost always the most pragmatic solution to a business problem for a business with many such problems.
- Spivak 2y agoIs the mountain of k8s code on top of your cloud of choice not strictly more complex than the cloud services it's orchestrating? Like I think k8s is good software but to hear that you're not choosing it because it's good engineering is surprising. To me that's the only reason you choose it, because you want or need the control-loop based infrastructure management that you can't get on say AWS alone.
- marcinzm 2y agoThere’s always a mountain of code on top of the cloud provider.
- andrewstuart2 2y agoFurthermore, there's always a mountain of code aggregating heterogeneous systems into a uniform interface. Look at the linux kernel, or LLVM, or pretty much any other (successful) project that provides abstractions to many different backends.
- Spivak 2y agoYes but that code isn't typically running in production the way k8s is. Having a lot of terraform is just a fancy method of statically provisioning infrastructure. The code is gone once it applies. Bringing k8s into the mix is a whole other application layer that's providing services to your code. Things like sgs for pods, cni plugins, coredns, is code that wouldn't be there in a non k8s world. Your problems now include k8s networking as well as VPC networking.
- windlep 2y agoI've been self-hosting a lot of things on a home kubernetes cluster lately, though via gitops using flux (apparently this genre is now home-ops?). I was kind of expecting this article to be along those lines, using the fairly popular gitops starting template cluster-template: https://github.com/onedr0p/cluster-template https://github.com/onedr0p/cluster-template I set one of these up on a few cheap odroid-h4's, and have quite enjoyed having a fairly automated (though quite complex of course) setup, that has centralized logging, metrics, dashboards, backup, etc. by copying/adapting other people's setups. Instead of weechat, I went with a nice web based irc client (the lounge) to replace my irccloud subscription. kubesearch makes it easy to find other people's configs to learn from (https://kubesearch.dev/hr/ghcr.io-bjw-s-helm-app-template-thelounge https://kubesearch.dev/hr/ghcr.io-bjw-s-helm-app-template-th...).
- zipmapfoldright 2y agoTIL about Talos (https://github.com/siderolabs/talos https://github.com/siderolabs/talos, via your github/onedr0p/cluster-template link). I'd been previously running k3s cluster on a mixture of x86 and ARM (RPi) nodes, and frankly it was a bit of a PiTA to maintain.
- nyolfen 2y agocannot praise talos highly enough, it makes so much annoying crap easy
- indigodaddy 2y agoNo shell in the OS? Seems insane but interesting at the same time..
- abound 2y agoPractically, its not a problem as you can always create a privileged container and mount the root filesystem into it. I have an alias I use for exactly such things.
- jbverschoor 2y agoWhy not proxmox?
- xena 2y agoI already have a Kubernetes cluster with distributed storage set up. Adding Proxmox makes that setup unique. I don't want unique. I want to reuse the infrastructure I already have.
- moondev 2y agoWould be funny to do a new version on proxmox to satisfy the proxmoxers. Then at the end reveal that proxmox was actually running on kubevirt with nested virt the entire time.
- minkles 2y agoFor those days when you really fancy writing YAML...
- bravetraveler 2y agoAdd Ansible for flavor
- p_l 2y agoThat's when you grab ansible and suffer writing bash in yaml. Signed, someone happily not writing YAML for k8s despite using k8s extensively
- dijit 2y agoI can't imagine a worse combination than Kubernetes and stateful connections.
- Joker_vD 2y agoIt only hurts when you actually have meaningful load and then suddenly needs to switch. Especially if the "servlets" that those stateful connections are connected to require some heavy-ish work on startup, so you're vulnerable to the "thundering herd" scenario. But the author only uses it to keep alive a couple of IRC connections (which don't send you history or anything on re-connects) and to automatically backup their "huge" chat logs (seriously, 5 GiB is not huge, and if it's text then it can be compressed down to about 2 GiB — unless it's already compressed?).
- dilyevsky 2y agoYou dont have to roll all the pods at the same time - there are built-in controls to avoid doing that and it’s the default. You will have to diy this if you’re using something else so, in fact, tp is wrong that k8s is somehow a bad fit for this use case
- Joker_vD 2y ago> You dont have to roll all the pods at the same time That's not really the problem — if, say, one of your nodes drops dead (or just drops off the network), the clients' connections also drop, and they all try to reconnect. That just happens and there is not much you can do to prepare for it except by having some idle capacity already available. Unless you're talking about rolling out strategies for deployment updates, and to be fair I don't remember the controls for that being all that useful but that was 2 years ago, so perhaps things are better now.
- dilyevsky 2y agoHaving idling capacity is standard industry practice though. A secondary node in a primary/secondary setup of a typical monolith design is basically idle capacity except more expensive because it’s 100% over-provisioning which is not required with k8s
- jeanlucas 2y agoIs IRC still a thing? I mean seriously, do communities hang around there? I stopped using in 2016.
- torvald 2y agoYes and yes.
- muzani 2y agoOlder social media tends to rot as they age, and there's always a few people who don't leave. Nearly all the IRC communities I used to hang around in have gone completely rotten. But they're still there.
- gaws 2y ago> Is IRC still a thing? Yes. > I mean seriously, do communities hang around there? Yes. They've been around for years.
- Tiberium 2y agoNot a single mention of Quassel in the article or in the comments, which is honestly surprising. It's a client-server architecture IRC client specifically made to make it easy to save logs and persist IRC sessions, since you can host the server part on an actual server/VPS and connect to it from all of your different devices.
- xena 2y agoI'd use Quassel, but I have custom weechat scripts. I can't easily implement those in Quassel.
- Tiberium 2y agoFair enough, it's just that Quassel immediately came to mind when talking about persistent IRC logs/sessions :)
- tredre3 2y agoWeechat can also be used in a client/server architecture. It can run headless and expose a relay protocol (full weechat control and state) and/or an irc server (traditional bouncer). Though, ironically, there are no CLI clients for its relay protocol, only for desktop/web/android.
- ConanRus 2y agooverdone in a perfect nerdy way
- paulddraper 2y agocurl 'https://news.ycombinator.com/item?id=41332427' | grep -i just (16)
- bravetraveler 2y agoThis is funny but six them are in one comment, another four are in two replies :P Need tables or something
- RadiozRadioz 2y agoI noticed this too https://www.youtube.com/watch?v=OP4CKn86qGY&t=41s https://www.youtube.com/watch?v=OP4CKn86qGY&t=41s
- llIIllIIllIIl 2y agoYaml is a language that protects daemons of your application from running away in the wild. It doesn’t matter that much if you draw your pentagrams on k8s or cloudformation or other dialects. Dark magic of modern times.
- __turbobrew__ 2y agoIs your homelab geographically distributed? Because if it is not then you aren’t going to get much better durability than a single host. I bet this was an interesting project but just backing up your files to S3 or some other offsite storage is a lot simpler and much more durable to real failures.
- wilted-iris 2y agoYep, mine is and I'm sure some others' are as well. Truly overkill but it's a fun hobby project.
- __turbobrew__ 2y agoAwesome
- ninkendo 2y agoI’m trying to resist the urge to move all my homelab setup to kubernetes too, mainly also because I don’t want to have to remember every dumb thing I did to customize my server and want everything to be deployable from a git repo, in case I need to rebuild it, etc. But I’ve had the same Linux box for over 15 years now (through various hardware changes, I’ve kept the same Ubuntu install since circa 2008, using do-release-upgrade for major updates and making sure to keep up with security updates) and I’m not sure it’s really worth it to optimize for easy recovery from a fresh install. I back up my homedir and etc and some other important data, and if I had to rebuild my OS I’m sure I’d do it far cleaner this time and wouldn’t want to fully do things the way I had them anyway. Even as a hobby it just doesn’t seem worth it to move away from the “pets, not cattle” model of servers when there’s just one or two of them (technically my router is separate but it’s a very simple router so there’s not much to do there)
- wilted-iris 2y agoAbsolutely, I think pets are great at home. Personally, I find docker compose to be the sweet spot for reproducibility and ease of use. There's some bespoke setup, but I can go from backups and fresh hardware to running apps in a couple of hours. I switched to k8s entirely because I wanted to learn to use it, and I don't think I'd recommend it for anything else.
- huimang 2y ago[flagged]
- k8sify 2y agoVMs on K8s using KubeVirt is a great way to lift and shift legacy software - i suspect this doesn’t need kubevirt!