Readit News logoReadit News
hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
xiwenc · 6 years ago
The first thing that ran through my head when I saw the example of hyscale was: Why isn't this implemented as a CRD? It looks to me like this is a higher level abstraction on top of Deployment resource with more bells and whistles.
hyscale · 6 years ago
CRD is a good idea and something to consider for this project. But it does require pre-installing into a cluster before deploying apps. One fundamental difference with HyScale as it currently stands is that it can deploy to any cluster anywhere from any machine and doesn’t require to store any state or install anything extra into the cluster. There are pros and cons of both approaches.

HyScale generates standard K8s manifest yamls from hspec as you would write by hand, and in that sense it is portable as well and doesn’t hide the underlying yamls if you really wanted to see. Our experience shows that for several apps, one doesn’t really need to dig down below. Especially in the case of large teams, you may still want one or two people who understand the underlying mechanism (just as Angular developers may understand underlying JS mechanisms), but everyone else can simply move faster and easier.

hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
ramon · 6 years ago
What about mesh setups does this Hyscale support meshing.
hyscale · 6 years ago
You can deploy sidecar agents using HyScale for your mesh. We're looking at further abstracting out things like VirtualService and we're also watching SMI related developments. If there's any specific mesh use-cases that you’d like to see abstracted out from a service deployment perspective, do let us know on our github page.
hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
koeng · 6 years ago
I really like git push workflows (Heroku / Dokku). I would use https://github.com/dokku/dokku-scheduler-kubernetes , but it doesn't support Dockerfiles, and I need Dockerfiles for a few of the applications that I want to run.

It would be great if there were some docs on how to integrate Hyscale with, for example, a Github action to enable enable deployment on a push to master. It wouldn't be too difficult for me to set up, but having a "right way" to do it written by the maintainers would give me much more confidence.

hyscale · 6 years ago
Its a good suggestion. We'll aim to add this to our documentation soon.
hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
sandGorgon · 6 years ago
Are the you using the Docker Compose standard ? Your specification looks very familiar.

It would be a killer app if you are.

https://www.compose-spec.io/

hyscale · 6 years ago
The HyScale specification looks familiar to most developers/devops who have been doing development or deployment for some years as we wanted to create a spec that is intuitively understood and application-centric, while at the same time grows to support 80% of the use-cases out there. The spec is meant to also support K8s native elements such as sidecars, ingress, etc. We are also looking at the compose-spec to see if there is some convergence in the near/late future.

The HyScale spec schema itself is available at the companion repo here: https://github.com/hyscale/hspec

hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
dang · 6 years ago
Url changed from https://hyscale.github.io, which redirects to this.
hyscale · 6 years ago
hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
alexfromapex · 6 years ago
This is a good idea but with simplicity being the value proposition it looks like you have spec files that are roughly the same length as a yaml file I could deploy with k8s. I think it would need to be much much simpler to be more valuable, just my take.
hyscale · 6 years ago
Typically without an abstraction like HyScale, for a micro-service you might end up having to write / maintain a couple of hundred lines of K8s yaml including things like sidecars, ingress, PVCs, config-maps, etc. and linking up these yamls with the right selector-labels, etc.

Whereas the same service can be described in hyscale spec using a few dozen lines. But it's not just about the number of lines, the HyScale hspec is defined in terms of higher-level app-centric entities that are intuitive to most developers.

You also get simpler troubleshooting of deployment errors and worry less about having to maintain compatibility of your K8s manifest yamls with each new K8s version.

hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
kube-system · 6 years ago
Wrappers that aim to simplify another technology always make me nervous, especially with a rapidly evolving project.

Yes, this makes it easier to get started -- but when something goes wrong, now you have to hunt down bugs in two layers of software. And, since you've intentionally isolated yourself from the underlying layer, you have less experience with it!

This is why I like Helm. If you write your charts well, you can write your k8s yaml once, and do the things you need to do on a daily basis by adjusting your chart values

hyscale · 6 years ago
Your concern is justified. Any abstraction must deal with minimizing leakages. This is why we have started addressing deployment error troubleshooting with some level of diagnosis so that the tool can provide error info in terms of higher-level abstraction.

Helm does require understanding of all the underlying low-level objects defined in Kubernetes. HyScale hopes to provide higher-level entities to deal with, as well as providing ways to do higher-level ops & deployment introspection. We believe it should be possible to satisfy the needs of a reasonably large number (>80%) of apps.

hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
soamv · 6 years ago
Congrats on this launch, it's great to see serious efforts at Kubernetes simplification and I hope you succeed! K8s bills itself as a "platform for platforms", and such projects are a real test of that idea.

Questions:

1. How do you deal with the mutability of K8s resources? Do you assume people won't change the underlying resources that you generate, or do you keep k8s controllers running to ensure there's no deviation?

2. How understandable is your generated output to humans? Do users have a way to go "backwards" through your abstraction? (Since your tool lives in an ecosystem with many other kubernetes tools, your users will sometimes end up having to deal with the generated output, since other tools operate at the K8s level such as prometheus, log aggregators etc)

3. Do you interoperate with K8s-level resources well? Do _all_ my services need to be in this abstraction for this to work well? e.g. Can my hyscale yaml reference a non-hyscale service for any reason? Or are they essentially two separate worlds?

hyscale · 6 years ago
Thanks for your encouraging comments :)

Answers to your Questions:

1. The expectation is that people deploying through hyscale don’t want to go and modify K8s resources directly on the cluster behind the scenes. If they do, then it either deviates from the hspec files in git or they have parallel K8s yamls which won’t make much sense either. As of now, hyscale deploys and doesn’t keep anything (eg. controller) running, But it's a good suggestion to keep the K8s resources in sync with the desired state (hspec) and we’ll certainly put some thought into it.

2. HyScale outputs standard K8s manifest yamls which are as readable as any well hand-coded. On the other hand, if there was a way to generate back hspec files from existing K8s yamls, would that be interesting/useful?

3. Suppose you have K8s resources/snippets already written for some of your services, you can refer to them in hspec and add application context to it and make use of profiles for environment variations. If the question is more about off-the-shelf services (eg postgres, redis, etc), we have helm chart support coming up. https://github.com/hyscale/hyscale/wiki/Roadmap#2-ots-off-th...

hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
filleokus · 6 years ago
How (and how well) does the docker file generation work? What languages/framework do you support?
hyscale · 6 years ago
You simply specify the stack image that your service needs along with the service source/binaries. See here for more: https://github.com/hyscale/hyscale/wiki/Tutorial#using-hysca...
hyscale commented on Show HN: HyScale – An abstraction framework over Kubernetes   github.com/hyscale/hyscal... · Posted by u/hyscale
hajhatten · 6 years ago
Just what people running kubernetes needs, more yaml!
hyscale · 6 years ago
:-) Actually less yaml. Typically without an abstraction like Hyscale, for a micro-service you might end up having to write / maintain a couple of hundred lines of K8s yaml including things like sidecars, ingress, PVCs, config-maps, etc. whereas the same service can be described in hyscale spec using barely 20-30 lines of yaml consisting of higher-level entities/language that is intuitive to most developers. You also get simpler troubleshooting of deployment errors and worry less about having to deal with backward compatibility with each new K8s version.

u/hyscale

KarmaCake day53August 25, 2020
About
https://hyscale.github.io
View Original