Comments (6)
It's fine be me however you want to break down the work. I figured there should be multiple PRs for this, and it's pretty thorny. I would probably start simple, and do a transformation 1st. We will need some means of getting meta-data(plugin type) out 1st, and I would probably start there. How do we load and get the meta-data to switch on type easily, without having to transform the whole thing.
FWIW, it's fine to have multiple PRs reference a single issue, just create a checklist and once the checklist is done, close the issue.
from sonobuoy.
@hausdorff @jessicayuen - Where should I log and track progress of a golang interface library.
https://github.com/ksonnet/ksonnet ?
from sonobuoy.
stretch goal would be to replace the plugin semantics.
from sonobuoy.
@timothysc We've just transitioned ksonnet/ksonent to use go-jsonnet (rather than the cgo) language bindings, so I think we're ready to talk about this whenever you are.
from sonobuoy.
@chuckha this may flip in priority to overtake the interface library... sorry... I know, but there is good reason.
from sonobuoy.
I had a couple of thoughts on this ticket over the weekend:
This ticket is really trying to get at two things and I think we should break it up as such.
Formalize Plugin Spec
Right now a plugin is required to provide metadata (driver
, resultType
, etc) and provide a PodSpec. The driver implementation will use the appropriate Kubernetes resource (Pod/Daemonset) and use the provided PodSpec as well as create a ConfigMap with some metadata.
The plugin definition is not a valid Kubernetes resource, but it would be nice if it were. We can fit a plugin definition into the schema of Kubernetes resources, but we cannot know all the values until runtime. This suggest templating.
Work Proposal
Extract the parts of the Go that generate ConfigMaps, Pods & Daemonsets (from a plugin definition) and turn it into a Go template that gets evaluated at runtime. We should move the metadata information from the YAML into labels or annotations on the plugin Resources.
This will also require a bit of reshuffling of the plugin logic.
Ksonnet
The second part of this work is taking the template we create and using ksonnet to define the resources. We can replace the formalized templates we made above with ksonnet and evaluate the ksonnet to generate the Kubernetes resources at runtime.
from sonobuoy.
Related Issues (20)
- Notice of K8s Release
- Notice of K8s Release
- Notice of K8s Release
- Lost the ability to read "[It]" tags for `E2E_FOCUS` variable
- Notice of K8s Release
- Airgap k8s and cleanup
- Sonoboy status returns incorrect information
- Notice of K8s Release
- namespace already exists error HOT 1
- sonobuoy status is still running when Remaining: 0
- gojson processing passes failing tests
- Notice of K8s Release
- Notice of K8s Release
- Notice of K8s Release
- Running conformance test on 1.29.0-alpha.3 cluster with sonobuoy fails HOT 2
- Use `debug.BuildInfo` instead of stamping SHA
- Notice of K8s Release
- Custom junit plugin - failures in result file, but sonobuoy says it passed HOT 1
- Notice of K8s Release
- `sonobuoy wait` requires `--wait` flag to be functional
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sonobuoy.