Comments (6)
think we have this topic for future improvements for runtime-config https://github.com/crossplane/crossplane/blob/master/design/one-pager-package-runtime-config.md#future-improvements
from crossplane.
We would like to have Crossplane use functions that are managed or deployed by it.
@MisterMX I just noticed - should this say "aren't managed or deployed"?
from crossplane.
think we have this topic for future improvements for runtime-config
To be explicit, we have no intention to support for alternative package deployment in core at this time.
As part of the runtime config work @haarchri linked, we added a --package-runtime
flag to Crossplane. You can run Crossplane with --package-runtime=External
. When you do:
- The package manager will produce (e.g.) a
FunctionRevision
when you install aFunction
. - The package manager won't reconcile the
FunctionRevision
to actually install the function.
As outlined in the linked doc, the idea is that:
- The Crossplane package manager is opinionated about how packages are installed.
- If you don't like those opinions, you can disable the package manager and supply your own alternative.
So I believe today you could use --package-runtime=External
and provide your own controller that populated status.endpoint
to point to a remote function installed by some other system.
from crossplane.
Perhaps a bit meta, but I could imagine using a middleware function for this. i.e. You could deploy a function that proxied requests to some other function (or function-like service) running elsewhere.
from crossplane.
We would like to debug functions built with https://github.com/crossplane/function-sdk-go in a real-life scenario which includes the usage of environments and especially providers. Now, we do have interdependencies between our MRs where we have to wait for one MR to be ready before creating another MR.
crossplane beta render
does not work for us here because it is a one-time invocation that basically just mocks a Crossplane function call and prints the results to stdout. We are unable to simulate production environment with it because we cannot provide an e2e environment. We need Crossplane to call our function that is running in debug mode on a devs local machine and apply the rendered resources to K8s to have them picked up by providers and be reconciled.
Basically, the idea we have come up with after some thoughts is
- Have the function run in local debug mode to be able to set breakpoints etc.
- Have Crossplane run next to it on the same machine
- Create claims and composites that are reconciled by Crossplane and trigger a function invocation
- Have the rendered resources applied on the cluster and picked up by real providers
If --package-runtime=External
already works (I did not have the time to try it yet) we only need #5454 to make fully qualified local dev setup.
I cannot say if a proxy works or not but it feels extremely complicated because you need multiple components working together: Crossplane, a proxy, a local stub that connects to the proxy (since my machine is not reachable from within the cluster) and the function itself. I would really prefer #5454 to that if possible ...
from crossplane.
@MisterMX Thanks for the context.
I feel okay adding an --insecure
flag to disable TLS. Per #5454 (comment) though, I don't think it should apply only to functions.
from crossplane.
Related Issues (20)
- Consistent contributor experience across repos HOT 2
- Refactoring compositions without deleting/recreating composed resources
- Promote claim server-side apply to beta HOT 2
- Report the use of components with vulnerabilities in crossplane HOT 1
- Selecting Array Elements with the Custom Columns Kubernetes CLI Output HOT 3
- Races in the `PackagedFunctionRunner`
- DynamoDB Table Resource Based Policy Support HOT 2
- Increase e2e test reliability HOT 4
- e2e tests should fail fast
- Update to go1.22.3 due to CVE HOT 5
- Improve the trace command for performance HOT 5
- [Feature Request] Crossplane CLI should support a standardized testing model for compositions HOT 2
- Claim CRDs are Reconciled by the XR CRD Reconciler
- `crossplane xpkg init` doesn't close file
- `TestNewFromFlags` test will fail when `UP_ACCOUNT` is set HOT 2
- Externally Managed CRD Fields HOT 4
- `crossplane beta validate` should support `Configuration.meta` / `crossplane.yaml` for pulling dependencies
- `make generate` can not be run more than once
- Crossplane Helm Chart: Unnecessary RBAC permissions HOT 2
- Earthly build issues and feedback HOT 23
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 crossplane.