Learn Istio: A Service Mesh and Istio Resource List
github.com
github.com
One thing that is happening: Kubernetes is designing a new set of ways to define how traffic should be routed in a cluster, to replace Ingress (https://kubernetes-sigs.github.io/service-apis/), and Istio is going to sit on top of those. You'll see this in "experimental" in the upcoming Istio 1.6.
Interesting...that's not obvious from their website or docs. Is there somewhere I can read about the relationship between the two teams?
And for some folks it's better to continue using that "classic server" strategy and deal with those problems. Maybe they've already invested the time to learn to deal with those problems, or they already have systems and practices in place to deal with that stuff in an elegant way.
But a lot of folks are seeing the enormous benefits of containers and the ecosystems that come with them. For them it's worth the trade-offs and the time to take to learn how this stuff works.
Anyway, it's pretty clear at this point that this stuff isn't going away any time soon, and in fact only becoming more and more popular and useful. Clearly there's a reason for that.
Sometimes you want an orange.
If you've never used the full k8-native stack it's easy to dismiss it. K8 recently with operators has made running distributed software as easy as configuring yaml. It's the same struggle you have with traditional stacks while you discover which config values and ansible scripts get you what you want.
At least I always found it hilariously problematic to replicate check state -> fix approach from other options.
Please elaborate more on your statement. I have folks within my team whose paycheck consists of their ability to write fully idempotent roles and playbooks. Well, even I can do this without any pain, but my expertise has shifted into Kubernetes in past years.
Then tried to use Ansible to setup and maintain an OpenStack cluster. Biggest hell no so far I found in "orchestration and config management". It was a big ball of yikes and anti-patterns, plus it was extremely slow, brittle and hard to debug.
Is this Ansible's fault? No, of course not. But it's no wonder k8s seems the way forward. Having an active system that checks and maintains state and appropriate abstractions to describe apps, services, containers, volumes, network, etc. is easier than to write really idempotent playbooks.
The reason is that the whole execution model of Ansible is essentially "a shell script in YAML form". Which makes it really, really easy to pick up for many system administrators. But it makes for (IMHO) harder time writing idempotent code, especially with some of the heavy ansible promoters being responsible for some of the worst code around (Red Hat).
I know everyone on HN has an app that they deploy by rsyncing some scripts to a server, and if they're on vacation they don't do releases, and if there's an error the script sends them an SMS saying "I'm broken", but that really stops scaling past a certain number of employees and traffic level, and some of these things that people write articles about are for those cases. Maintaining 10 servers is a lot closer to maintaining a million servers than it is to maintaining 1 server; people have written tools with that use case in mind. If you have one employee that maintains an app that runs on on server, you can probably ignore all of this stuff. If you are bigger than that, you might want to say "maybe this can help" rather than dismissing it as being too complicated. The complexity comes from "we're big enough to need 100 developers, and it would be nice if they could all deploy and monitor their own product", not from "let's find some unnecessary complexity".
(If you look at how people are making money in the software industry right now, you'll see that having organizations run their own apps is apparently challenging. People will pay thousands a month for their cloud provider or a third party to run open source software for them on a server that costs them less than a hundred dollars a month. Things like Kubernetes are designed to make running that stuff on your own a possibility. Someday I'd like to do a little contest where I pay you $100 if you can run some sort of computer program for 6 months continuously. I doubt that many people on HN would be successful; they just never built any infrastructure for running computer programs. They have their one app running kind of okay, and that's the best they can do. It's actually scary that nobody sees this as a problem. )
Indeed, but specifically to PHP services such as newrelic require a two line config for a provided PHP extension, and within minutes you get a nice dashboard with traces down to the offending line, sql statements with parameters, performance bottlenecks and service maps. indeed the price is privacy but the time to implement is little and the benefits are great.
I am not sure about the contest for running 6 months continuously would be difficult to win - had loads of apps running on servers with an impressive uptime of more than one year, with hot releases that caused no downtime, and the traffic was pretty high.
Just to reiterate, the tech is great, but for _some_ team sizes it will add a lot more work load. My fortune 100 client is suddenly discovering that they need to hire a lot more devops to accomodate such infrastructure, yet we could easily have set up a scalable robust infrastructure using a classic set-up.
Does this mean there are no benefits to kubernetes? Not at all. I love the idea of containers and the natural follow up of service mesh. But they require more staff. My observation is purely related to the sweetspot on the staff and benefit graph.