-
Notifications
You must be signed in to change notification settings - Fork 169
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
Application Dependencies #6
Comments
We have working with a Dependency definition that look like
https://github.com/kubepack/pack-server/blob/master/apis/manifest/v1alpha1/types.go#L22 Our view is that there are 2 YAML needed for a package: kube-manifest.yaml (required) and dependency-list.yaml (optional) . Each entry in DependencyList points to a package that has its own |
@tamalsaha There may be two separate things going on here. First, we have the details needed to describe applications as they run within Kubernetes. This is an operational issue. Second, we have details needed for packages (as in a package manager). They are not necessarily operational details. Can you describe the use case you're targeting with this? |
@kow3ns I'm unable to open the original PR for the KEP so I can't get to any details there (GitHub keeps giving an error). What's the use case for the dependency tracking outlined in the proposal? |
@kow3ns Also, how would services (e.g., those from the service catalog) relate in terms or dependencies? |
I think yes, how can we describe dependents in other namespaces/or root scoped?
Yes, in cases we depend on shared load balancer or dbs or even other middlewares. |
Just want to share some of my thoughts on application dependencies here. I think it's super useful to have the notion of application dependencies and some ways of checking and enforcing the dependencies. As a concrete example, ZooKeeper is used as a dependent system by several popular open source projects, including Kafka (at least for now, not sure about the future though as they do have a plan to get rid of the dependency on ZK), HDFS (for high availability mode), HBase, etc. Let's assume that a user runs all the mentioned applications and needs to have an Application instance for each of the applications created. Creation of the Application instances may be done manually using some manifest or by the operators for the applications at runtime. Regardless how the application instances get created, there are dependencies among the applications, i.e., the Kafka, HDFS, and HBase instances all depend on some ZooKeeper instance, and none of those will work if there's not a ZooKeeper instance available in the cluster. Things get more interesting as dependencies involve application versions. For example, a particular Kafka version may only work with certain versions of ZooKeeper, which could be a range of minor versions or some major version. In this case, a Kafka Application is not considered successfully assembled if there's not a ZooKeeper instance with one of the compatible versions. Dependencies may or may not involve sharing. For example, all the Kafka, HDFS, and HBase instances in the cluster may share a single ZooKeeper instance, or have dedicated ZooKeeper instances for example for security or performance reasons. It would be super useful for users to be able to specify such dependency conditions. |
cc @ecordell We shipped dependencies in the Operator Lifecycle Manager in December. Our implementation is decoupled as much as possible into a separate optional component that we call catalog, but even doing so has implicated a lot of behavior on our ClusterServiceVersion-v1, which is the resource closest resembling the Application definition. I'm not sure if it's possible to store this information as a top-level functionality without being also opinionated about package management as well. |
@jzelinskie Did your dependency tracking system allow for cross namespace dependencies? |
@mattfarina OLM targets the single namespace use-case. We'd like to work with the Multi-tenancy Working Group in order to have a general solution in Kubernetes. |
I have an application composed with:
I create 3 Application Instances to be able to group their resources and manage each component individually. The hierarchy more or less looks like this:
How the statuses are aggregated to 'myapp' ?
cc @cmoulliard |
This use case @ant31 is definitely what our customers are developing and where, what we call an application, is defined by a collection of components / services. Such a project corresponds for the java developers to a maven project hierarchy as defined her after:
This application will be deployed using a Remark : This is the reason why I proposed within this ticket to use as type a Component to describe what is the module part of the application If we use this approach, then we should be able (at the condition to update the cli-runtime project used by kubectl) to offer such commands
and
|
I think that your idea is different from the definition suggested within this kep -> |
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. |
What is the plan for this? Any update? |
/remove-lifecycle rotten |
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. |
…p-size Increase heap size for node
The original KEP proposed the following notion of application Dependencies
The notion of Dependencies is necessarily namespace bound by this definition. The application controller would simply track the components of the installed application through their life-cycle and update the Status.Installed list when a dependent component is created.
The text was updated successfully, but these errors were encountered: