Skip to content
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

Fix hosted mode uninstalls #100

Conversation

mprahl
Copy link
Member

@mprahl mprahl commented Feb 3, 2023

When a hosted cluster is removed from OCM, it triggers the hosted cluster instance of the config-policy-controller to be uninstalled on the hosting cluster.

If any ConfigurationPolicy uses pruneObjectBehavior, they will have finalizers set on them. During an uninstall, the finalizers are immediately removed on the next evaluation of the ConfigurationPolicy with pruneObjectBehavior set so that the uninstall can proceed immediately.

The issue is if the ConfigurationPolicy sets evaluationInterval to a long value, the finalizer won't be removed until the next evaluation time, which could be hours.

This is not an issue when it's not deployed in hosted mode because the CRD is also deleted at the same time, which causes the ConfigurationPolicy to have a deletionTimestamp which then causes immediate evaluation for the finalizer to be removed.

Without the second commit, as soon as a SIGINT signal was received, mgr.Start would exit and cause the main function to finish before PeriodicallyExecConfigPolicies could finish the removal of finalizers when the config-policy-controller is being uninstalled.

Relates:
https://issues.redhat.com/browse/ACM-3233

Signed-off-by: mprahl mprahl@users.noreply.github.com

When a hosted cluster is removed from OCM, it triggers the hosted cluster
instance of the config-policy-controller to be uninstalled on the hosting cluster.

If any ConfigurationPolicy uses pruneObjectBehavior, they will have finalizers set
on them. During an uninstall, the finalizers are immediately removed on the next
evaluation of the ConfigurationPolicy with pruneObjectBehavior set so that the
uninstall can proceed immediately.

The issue is if the ConfigurationPolicy sets evaluationInterval to a long value,
the finalizer won't be removed until the next evaluation time, which could be hours.

This is not an issue when it's not deployed in hosted mode because the CRD is also
deleted at the same time, which causes the ConfigurationPolicy to have a
deletionTimestamp which then causes immediate evaluation for the finalizer to
be removed.

Relates:
https://issues.redhat.com/browse/ACM-3233

Signed-off-by: mprahl <mprahl@users.noreply.github.com>
JustinKuli
JustinKuli previously approved these changes Feb 3, 2023
Copy link
Member

@JustinKuli JustinKuli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@openshift-ci openshift-ci bot added the lgtm label Feb 3, 2023
@openshift-ci openshift-ci bot removed the lgtm label Feb 3, 2023
@mprahl mprahl changed the title Fix evaluation time when the config-policy-controller is uninstalled Fix hosted mode uninstalls Feb 3, 2023
Without this commit, as soon as a SIGINT signal was received, mgr.Start
would exit and cause the main function to finish before
PeriodicallyExecConfigPolicies could finish the removal of finalizers
when the config-policy-controller is being uninstalled.

Co-authored-by: Justin Kulikauskas <jkulikau@redhat.com>
Signed-off-by: mprahl <mprahl@users.noreply.github.com>
@openshift-ci openshift-ci bot added the lgtm label Feb 3, 2023
@openshift-ci
Copy link

openshift-ci bot commented Feb 3, 2023

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JustinKuli, mprahl

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants