It means you have to stop treating your containers a little less like VM's and start treating them a bit more like OS processes. For instance, you can't get a shell on one unless you bother installing that shell yourself.
It means you have to stop treating your containers a little less like VM's and start treating them a bit more like OS processes. For instance, you can't get a shell on one unless you bother installing that shell yourself.
And ideally, you want to keep the cow alive, at least if you fed it artificially.
In real-world cloud environments, logging into the container and expecting to have a complete Unix environment to poke around in just isn't an option. You might not even have the required permissions to do so, as a matter of corporate policy. You need to build observability directly into the application -- or you haven't built a complete cloud application.
This is not objectively better than external observability.
If the "DevOps perspective" requires it, then it's a pointlessly inflexible perspective.
> just isn't an option
You don't get to blame the system when you made the system.
The option is there.
When you got clueless morons who were in a 6 week nodejs bootcamp now "developing" containers, with no one even having the permissions to troubleshoot crashes - that may very well originate from someone trying to get remote code execution - it is absolutely no surprise that hacks, ransomware, infrastructure so brittle that it only doesn't fail because EBS / EKS keeps restarting the pile of dung every minute and infrastructure pieced together from 40 AWS services where one classic EC2 VM would be sufficient are plentiful.
It's not an exact copy of prod, but so far (a few years, and thousands of containers) it hasn't really been an issue as far as I've heard. We don't do anything fancy though. Node, Go, Java and Python apps..
Finding something useful that the distro left lying around but that wasn't part of the plan might feel like a win here and there, it's just as likely to be a win for your adversary as it is for your friend.
Edit: @mhio That's what I suspected, thank you.
Great in cases where the app is a self-contained Go program only requiring libc, but not useful when you need to apt/yum/dnf install anything.
There are tools like `nsenter` to act on the container namespaces.
https://manpages.debian.org/bookworm/util-linux/nsenter.1.en...
If I wanted to be so specific about what's going into my images I'd probably just build them with nix.
This is interesting, because in large org you ofren have lot of stuff you just want to keep on running with minimal changes.
It's the same logic as frameworks or other building blocks: why leave all these decisions up to individual teams, when everyone should be doing things more or less the same way?
If need to do something custom, you'll know what you're doing and you can do that. Otherwise, use good defaults provided by people who know better than you.