You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
There are mixed packages like k8sgpt-operator, that use both a helm chart and an additional manifest.
The first reconciliation of such a package can lead to an erroneous InstallationFailed status, that usually self-heals on a followup reconciliation.
Example: When installing k8sgpt-operator, during the first reconciliation, the controller sets the status to InstallationFailed, because the plain adapter fails, because it cannot apply the K8sGPT resource, because the helm adapter has not run yet.
set condition to failed: could not apply resource: the server could not find the requested resource (patch k8sgpts.core.k8sgpt.ai k8sgpt)
This is easily reproducible by running glasskube install k8sgpt-operator, it will always fail directly at the installation, but fix itself afterwards. Also see here: glasskube/packages#521
Describe the solution you'd like
We could think about a strategy for mixed packages, where when an error occurs in one adapter, we check if some of the other adapters have a "waiting" result, but it would be very easy to get into deadlocks that way.
We could also say for mixed packages helm always comes first, and the plain adapter will only be run once the helm one succeeded or is at least in progress?
Or maybe we simply run all of them no matter what "depends" on what, and say, if one adapter returned an error, but at least one other adapter has status waiting, then we suppress the error and set the overall status to waiting too.
Describe alternatives you've considered
In the packages pipeline, we could use the --no-wait flag, but then we would also need to run the followup check in a loop until the status switches to ready. There was already a PR like that a while ago, but we decided against it because we explicitly want the installation to succeed "immediately": glasskube/packages#232
Is your feature request related to a problem? Please describe.
There are mixed packages like k8sgpt-operator, that use both a helm chart and an additional manifest.
The first reconciliation of such a package can lead to an erroneous
InstallationFailed
status, that usually self-heals on a followup reconciliation.Example: When installing k8sgpt-operator, during the first reconciliation, the controller sets the status to
InstallationFailed
, because the plain adapter fails, because it cannot apply theK8sGPT
resource, because the helm adapter has not run yet.This is easily reproducible by running
glasskube install k8sgpt-operator
, it will always fail directly at the installation, but fix itself afterwards. Also see here: glasskube/packages#521Describe the solution you'd like
We could think about a strategy for mixed packages, where when an error occurs in one adapter, we check if some of the other adapters have a "waiting" result, but it would be very easy to get into deadlocks that way.
We could also say for mixed packages helm always comes first, and the plain adapter will only be run once the helm one succeeded or is at least in progress?
Or maybe we simply run all of them no matter what "depends" on what, and say, if one adapter returned an error, but at least one other adapter has status waiting, then we suppress the error and set the overall status to waiting too.
Describe alternatives you've considered
In the packages pipeline, we could use the
--no-wait
flag, but then we would also need to run the followup check in a loop until the status switches to ready. There was already a PR like that a while ago, but we decided against it because we explicitly want the installation to succeed "immediately": glasskube/packages#232Additional context
This blocks:
The text was updated successfully, but these errors were encountered: