-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hello from kubeclient 👋 #20
Comments
BTW, recently kubeclient is getting surprisingly many contributions around config & authentication (we got generic I think it'd make sense to extract these into a separate gem ("kubeconfig"? "kubeauth"?) that both kubeclient and kubernetes-client/ruby could use. Are you interested in this as a goal? |
Yes please, anything that can handle the raw auth/connection as a standalone gem would be great, best not tied to a particular http gem |
@brendandburns How about potentially taking a similar approach with Fluent bindings we are experimenting with on the JS client. I can see a huge value in having a shared The config/auth/exec handling is actually a really complex topic because it's expected to behave the exact same across all the client libraries as well as Wondering if we can somehow abstract some of all this into a better feature matrix that we can then see which parts of this logic is supported by each client. I know there is the official but this seems a bit too broad? Given some of the issues we have seen recently, or some of the subtle features. |
|
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Rotten issues close after 30d of inactivity. Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
@fejta-bot: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
non-update: I've since shifted projects at work and barely find time for minimal maintainance of kubeclient 🙁. I still think pulling out a shared config gem is worthy, and I'd be happy to help, but for it to happen someone else would need to push it forward. |
non-update 2: Kontena.io went bankcrupt at the end of the year 2019. There is now a community fork of the kontena/k8s-client under a community organization k8s-ruby/k8s-ruby. The k8s-ruby library is a community effort to keep k8s-client maintained without any dependencies to the former Kontena.io organization. The library was renamed in order to publish it to Rubygems without conflicting with k8s-client. It would be wonderful to combine the maintainership for Kubernetes' Ruby projects under a common organization, be it k8s-ruby or something else. It would make sense to extract eg. the authentication logic and other common parts under a Gem of its own. Ultimately it would be great to kill the |
@abonas how do you feel about moving kubeclient too under k8s-ruby org? |
Hi 👋, just wanted to reach out from the existing https://github.com/abonas/kubeclient project to ask how you see the relation between the 2 projects, and whether there are aspects we should work together on?
Taking a quick look, differences in approach that stand out:
The API in this gem is close to other official k8s clients. kubeclient tried to evolve a Ruby-esque api from scratch.
This gem is generated from specific k8s API, kubeclient uses discovery to define methods dynamically.
Did you deliberately choose generation for specific benefits, or simply as outgrowth of generation tooling that worked well for other languages?
Discovery in principle allows same client to talk to future k8s versions, to extra APIs (e.g. openshift), and perhaps most importantly to deal with custom resources (TBH I never tried kubeclient on CRDs myself but I hear it works).
How would one deal with CRDs in your approach? Use same generator to create a separate gem?
This gem feels more "strongly typed". You have tons of classes e.g.
V1PersistentVolume
constiting ofV1PersistentVolumeSpec
and others... kubeclient previously dynamically created a class for top-level resources only, but gave up even that in favor of a genericResource
class.Your generated docs are WAY more detailed :-)
Communication overhead? kubeclient currently uses rest-client for http, no persistent connections, full TLS setup for each request :( What do you use?
I'm interested to learn your approach to API groups, as this is a pain point in kubeclient we're trying to rethink. Currently kubeclient requires a separate client object for each API group, and lacks an easy way to share cluster configuration between those.
IIUC (Is configuration global? #19), you still need an object for each group you talk to but config sharing is trivial for single-global-config case and easy enough by passing
ApiClient
instance in multi-cluster case?The text was updated successfully, but these errors were encountered: