1
0
mirror of https://github.com/rancher/rke.git synced 2025-04-27 11:21:08 +00:00

Remove user addons when not present

This commit is contained in:
Sebastiaan van Steenis 2020-03-20 20:33:10 +01:00
parent 591088c681
commit d91e7efd2d
3 changed files with 31 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import (
"github.com/rancher/rke/k8s"
"github.com/rancher/rke/templates"
"github.com/sirupsen/logrus"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@ -25,7 +26,9 @@ func getAddonJob(addonName, nodeName, image string, isDelete bool) (string, erro
"Image": image,
"DeleteJob": strconv.FormatBool(isDelete),
}
return templates.CompileTemplateFromMap(templates.AddonJobTemplate, jobConfig)
template, err := templates.CompileTemplateFromMap(templates.AddonJobTemplate, jobConfig)
logrus.Tracef("template for [%s] is: [%s]", addonName, template)
return template, err
}
func AddonJobExists(addonJobName, kubeConfigPath string, k8sWrapTransport transport.WrapperFunc) (bool, error) {

View File

@ -33,6 +33,8 @@ const (
IngressAddonJobName = "rke-ingress-controller-deploy-job"
MetricsServerAddonJobName = "rke-metrics-addon-deploy-job"
UserAddonJobName = "rke-user-addon-deploy-job"
UserAddonIncludeJobName = "rke-user-includes-addons-deploy-job"
MetricsServerAddonResourceName = "rke-metrics-addon"
NginxIngressAddonAppName = "ingress-nginx"
KubeDNSAddonAppName = "kube-dns"
@ -156,11 +158,35 @@ func (c *Cluster) deployUserAddOns(ctx context.Context) error {
if err := c.doAddonDeploy(ctx, c.Addons, UserAddonResourceName, false); err != nil {
return err
}
} else {
addonJobExists, err := addons.AddonJobExists(UserAddonJobName, c.LocalKubeConfigPath, c.K8sWrapTransport)
if err != nil {
return nil
}
if addonJobExists {
log.Infof(ctx, "[addons] Removing user addons")
if err := c.doAddonDelete(ctx, UserAddonResourceName, false); err != nil {
return err
}
log.Infof(ctx, "[addons] User addons removed successfully")
}
}
if len(c.AddonsInclude) > 0 {
if err := c.deployAddonsInclude(ctx); err != nil {
return err
}
} else {
addonJobExists, err := addons.AddonJobExists(UserAddonIncludeJobName, c.LocalKubeConfigPath, c.K8sWrapTransport)
if err != nil {
return nil
}
if addonJobExists {
if err := c.doAddonDelete(ctx, UserAddonsIncludeResourceName, false); err != nil {
return err
}
}
}
if c.Addons == "" && len(c.AddonsInclude) == 0 {
log.Infof(ctx, "[addons] no user addons defined")
@ -469,7 +495,6 @@ func (c *Cluster) doAddonDelete(ctx context.Context, resourceName string, isCrit
if err := k8s.DeleteK8sSystemJob(deleteJob, k8sClient, c.AddonJobTimeout); err != nil {
return err
}
return nil
}

View File

@ -42,7 +42,7 @@ spec:
image: {{$image}}
{{- if eq .DeleteJob "true" }}
command: ["/bin/sh"]
args: ["-c" ,"kubectl get --ignore-not-found=true -f /etc/config/{{$addonName}}.yaml -o name | xargs kubectl delete --ignore-not-found=true"]
args: ["-c" ,"kubectl get --ignore-not-found=true -f /etc/config/{{$addonName}}.yaml -o custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,KIND:.kind --no-headers | while read name namespace kind; do if [ "x${namespace}" = "x<none>" ]; then echo kubectl delete $kind $name; else echo kubectl -n $namespace delete $kind $name; fi; done"]
{{- else }}
command: [ "kubectl", "apply", "-f" , "/etc/config/{{$addonName}}.yaml"]
{{- end }}