-
Notifications
You must be signed in to change notification settings - Fork 126
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
Research: Support automatic application discovery #517
Comments
A first draft of this concept is implemented in #559 Here are my findings so far:
|
Research has been done, closing this issue |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Part of #514
Goal:
Implement a proof of concept for support of automatic discovery of the application, where a multi-service application will not require a user-defined
KeptnApp
resource. Instead this resource will be generated automatically (as it currently works for a single-service applications). When and by which component it will be generated is not clear yet.Most typical use-case:
The typical usage of this feature would be to take an existing manifests and apply them to the cluster without modification (no keptn annotations, no pre/post deployment tasks/evaluations, no additional Keptn resources). Therefore we assume that the Workloads have no pre-flight and post-flight checks and we are speaking about raw deployment here. The reason why the user wants to have automatic application discovery are observability data, which in this case should be provided out of the box.
Open questions:
KeptnApp
resource ?Workload
(Deployment/Pod/RS/SS/DS) resources created in a bigger time slot? For example not applying all manifests of a single application at once, but one after another.KeptnApp
result in breaking span structure ? Are we able to keep it consistent ?KeptnApp
have ? Should it be generated from the versions of the Workloads, or revisions ?Initial thoughts:
Adding functionality and responsibility to generate
KeptnApp
to the webhook seems now as the easiest and most straight-forward solution. This solution will on the other hand require multiple updates of theKeptnApp
where we will be forced to update this resource multiple times and iteratively add all workloads, which are part of the application. The problem here is that the manifests (Deployment/Pod/RS/SS/DS) can be created in a bigger time range which will therefore lead to not updating onlyKeptnApp
, but alsoKeptnAppVersion
and possiblyWorkload
andWorkloadInstance
resources as well. This can lead to the need of adding additional logic the already existing components.Another possible approach would be to introduce a new CRD called
KeptnAppCreationRequest
with a controller, which will take care of the functionality of generating theKeptnApp
without interfering the other components.KeptnAppCreationRequest
will be created by webhook when the first pod of the application will be created. In theKeptnAppCreationRequest
there will be in information about the latest modification of this resource, namespace andKeptnApp
name (name available from the annotations in the Pods). Responsibility of the controller:KeptnAppCreationRequest
controller will actively search for incoming pods of the same application, if it will find a new one, it will modify itself and restart the timeout for waiting for new resources.KeptnApp
for the application (in the scenario that theKeptnApp
was applied after the manifests), it will removeKeptnAppCreationRequest
and do nothing.KeptnApp
resource, what will launch the already existing process of deployment.With this approach we are able to keep the existing functionality of other components and have this functionality of automatic discovery isolated in a separate controller just with minor changes in mutating webhook.
Other possible solutions are welcome and would be awesome to have them documented as part of this ticket.
DoD:
The text was updated successfully, but these errors were encountered: