1
0
mirror of https://github.com/rancher/rke.git synced 2025-04-27 19:25:44 +00:00

Merge pull request #2656 from rawmind0/ingressjobsmaster

Updated nginx ingress addon to remove admission batch jobs if they exist
This commit is contained in:
Raúl Sánchez 2021-08-18 13:19:15 +02:00 committed by GitHub
commit eeda952cc7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 1 deletions

View File

@ -53,11 +53,15 @@ const (
Nodelocal = "nodelocal"
NginxIngressAddonAppName = "ingress-nginx"
NginxIngressAddonAppNamespace = "ingress-nginx"
NginxIngressAddonDefaultBackendName = "default-http-backend"
NginxIngressAddonDefaultBackendNamespace = "ingress-nginx"
)
var DNSProviders = []string{KubeDNSProvider, CoreDNSProvider}
var (
DNSProviders = []string{KubeDNSProvider, CoreDNSProvider}
NginxIngressAddonJobNames = []string{"ingress-nginx-admission-create", "ingress-nginx-admission-patch"}
)
type ingressOptions struct {
RBACConfig string
@ -613,6 +617,20 @@ func (c *Cluster) deployIngress(ctx context.Context, data map[string]interface{}
if version < "0.16.0" {
ingressConfig.AlpineImage = c.SystemImages.Alpine
}
// since nginx ingress controller 0.40.0, admission batch jobs are deployed.
// Before deployment of the new ingress controller based on the update strategy, remove admission batch jobs if they exist.
if version > "0.40.0" {
log.Infof(ctx, "[ingress] removing admission batch jobs if they exist")
kubeClient, err := k8s.NewClient(c.LocalKubeConfigPath, c.K8sWrapTransport)
if err != nil {
return err
}
for _, jobName := range NginxIngressAddonJobNames {
if err = k8s.DeleteK8sJobIfExists(kubeClient, jobName, NginxIngressAddonAppNamespace); err != nil {
return err
}
}
}
}
tmplt, err := templates.GetVersionedTemplates(kdm.NginxIngress, data, c.Version)
if err != nil {

View File

@ -71,6 +71,13 @@ func DeleteK8sSystemJob(jobYaml string, k8sClient *kubernetes.Clientset, timeout
return nil
}
func DeleteK8sJobIfExists(k8sClient *kubernetes.Clientset, name, namespace string) error {
if err := deleteK8sJob(k8sClient, name, namespace); err != nil && !apierrors.IsNotFound(err) {
return err
}
return nil
}
func ensureJobCompleted(k8sClient *kubernetes.Clientset, j interface{}) error {
job := j.(v1.Job)