@@ -14,6 +14,13 @@ import (
1414 corev1 "k8s.io/api/core/v1"
1515 k8sresource "k8s.io/apimachinery/pkg/api/resource"
1616 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
17+ "k8s.io/utils/ptr"
18+ )
19+
20+ const (
21+ defaultControllerReplicasCount = 1
22+ defaultWebhookReplicasCount = 1
23+ defaultCAInjectorReplicasCount = 1
1724)
1825
1926var _ = Describe ("Overrides test" , Ordered , func () {
@@ -594,6 +601,135 @@ var _ = Describe("Overrides test", Ordered, func() {
594601 })
595602 })
596603
604+ Context ("When adding valid cert-manager controller override replicas" , func () {
605+
606+ It ("should set the replicas for the cert-manager controller deployment" , func () {
607+
608+ By ("Adding cert-manager controller override replicas to the cert-manager operator object" )
609+ replicas := ptr .To (int32 (2 ))
610+ err := addOverrideReplicas (certmanageroperatorclient , certmanagerControllerDeployment , replicas )
611+ Expect (err ).NotTo (HaveOccurred ())
612+
613+ By ("Waiting for cert-manager controller status to become available" )
614+ err = verifyOperatorStatusCondition (certmanageroperatorclient .OperatorV1alpha1 (), GenerateConditionMatchers (
615+ []PrefixAndMatchTypeTuple {{certManagerController , MatchAllConditions }}, validOperatorStatusConditions ,
616+ ))
617+ Expect (err ).NotTo (HaveOccurred ())
618+
619+ By ("Waiting for the replicas to be set on the cert-manager controller deployment" )
620+ err = verifyDeploymentReplicas (k8sClientSet , certmanagerControllerDeployment , replicas , true )
621+ Expect (err ).NotTo (HaveOccurred ())
622+
623+ By ("Waiting for the cert-manager controller deployment to be Available" )
624+ err = pollTillDeploymentAvailable (context .Background (), k8sClientSet , operandNamespace , certmanagerControllerDeployment )
625+ Expect (err ).NotTo (HaveOccurred ())
626+
627+ By ("Removing override replicas for cert-manager controller" )
628+ err = addOverrideReplicas (certmanageroperatorclient , certmanagerControllerDeployment , nil )
629+ Expect (err ).NotTo (HaveOccurred ())
630+
631+ By ("Waiting for cert-manager controller status to become available after removing override" )
632+ err = verifyOperatorStatusCondition (certmanageroperatorclient .OperatorV1alpha1 (), GenerateConditionMatchers (
633+ []PrefixAndMatchTypeTuple {{certManagerController , MatchAllConditions }}, validOperatorStatusConditions ,
634+ ))
635+ Expect (err ).NotTo (HaveOccurred ())
636+
637+ By ("Verifying cert-manager controller rollback to default replica count" )
638+ err = verifyDeploymentReplicas (k8sClientSet , certmanagerControllerDeployment , ptr .To (int32 (defaultControllerReplicasCount )), true )
639+ Expect (err ).NotTo (HaveOccurred ())
640+
641+ By ("Waiting for the cert-manager controller deployment to be Available after rollback" )
642+ err = pollTillDeploymentAvailable (context .Background (), k8sClientSet , operandNamespace , certmanagerControllerDeployment )
643+ Expect (err ).NotTo (HaveOccurred ())
644+ })
645+ })
646+
647+ Context ("When adding valid cert-manager webhook override replicas" , func () {
648+
649+ It ("should set the replicas for the cert-manager webhook deployment" , func () {
650+
651+ By ("Adding cert-manager webhook override replicas to the cert-manager operator object" )
652+ replicas := ptr .To (int32 (3 ))
653+ err := addOverrideReplicas (certmanageroperatorclient , certmanagerWebhookDeployment , replicas )
654+ Expect (err ).NotTo (HaveOccurred ())
655+
656+ By ("Waiting for cert-manager webhook status to become available" )
657+ err = verifyOperatorStatusCondition (certmanageroperatorclient .OperatorV1alpha1 (), GenerateConditionMatchers (
658+ []PrefixAndMatchTypeTuple {{certManagerWebhook , MatchAllConditions }}, validOperatorStatusConditions ,
659+ ))
660+ Expect (err ).NotTo (HaveOccurred ())
661+
662+ By ("Waiting for the replicas to be set on the cert-manager webhook deployment" )
663+ err = verifyDeploymentReplicas (k8sClientSet , certmanagerWebhookDeployment , replicas , true )
664+ Expect (err ).NotTo (HaveOccurred ())
665+
666+ By ("Waiting for the cert-manager webhook deployment to be Available" )
667+ err = pollTillDeploymentAvailable (context .Background (), k8sClientSet , operandNamespace , certmanagerWebhookDeployment )
668+ Expect (err ).NotTo (HaveOccurred ())
669+
670+ By ("Removing override replicas for cert-manager webhook" )
671+ err = addOverrideReplicas (certmanageroperatorclient , certmanagerWebhookDeployment , nil )
672+ Expect (err ).NotTo (HaveOccurred ())
673+
674+ By ("Waiting for cert-manager webhook status to become available after removing override" )
675+ err = verifyOperatorStatusCondition (certmanageroperatorclient .OperatorV1alpha1 (), GenerateConditionMatchers (
676+ []PrefixAndMatchTypeTuple {{certManagerWebhook , MatchAllConditions }}, validOperatorStatusConditions ,
677+ ))
678+ Expect (err ).NotTo (HaveOccurred ())
679+
680+ By ("Verifying cert-manager webhook rollback to default replica count" )
681+ err = verifyDeploymentReplicas (k8sClientSet , certmanagerWebhookDeployment , ptr .To (int32 (defaultWebhookReplicasCount )), true )
682+ Expect (err ).NotTo (HaveOccurred ())
683+
684+ By ("Waiting for the cert-manager webhook deployment to be Available after rollback" )
685+ err = pollTillDeploymentAvailable (context .Background (), k8sClientSet , operandNamespace , certmanagerWebhookDeployment )
686+ Expect (err ).NotTo (HaveOccurred ())
687+ })
688+ })
689+
690+ Context ("When adding valid cert-manager cainjector override replicas" , func () {
691+
692+ It ("should set the replicas for the cert-manager cainjector deployment" , func () {
693+
694+ By ("Adding cert-manager cainjector override replicas to the cert-manager operator object" )
695+ replicas := ptr .To (int32 (2 ))
696+ err := addOverrideReplicas (certmanageroperatorclient , certmanagerCAinjectorDeployment , replicas )
697+ Expect (err ).NotTo (HaveOccurred ())
698+
699+ By ("Waiting for cert-manager cainjector status to become available" )
700+ err = verifyOperatorStatusCondition (certmanageroperatorclient .OperatorV1alpha1 (), GenerateConditionMatchers (
701+ []PrefixAndMatchTypeTuple {{certManagerCAInjector , MatchAllConditions }}, validOperatorStatusConditions ,
702+ ))
703+ Expect (err ).NotTo (HaveOccurred ())
704+
705+ By ("Waiting for the replicas to be set on the cert-manager cainjector deployment" )
706+ err = verifyDeploymentReplicas (k8sClientSet , certmanagerCAinjectorDeployment , replicas , true )
707+ Expect (err ).NotTo (HaveOccurred ())
708+
709+ By ("Waiting for the cert-manager cainjector deployment to be Available" )
710+ err = pollTillDeploymentAvailable (context .Background (), k8sClientSet , operandNamespace , certmanagerCAinjectorDeployment )
711+ Expect (err ).NotTo (HaveOccurred ())
712+
713+ By ("Removing override replicas for cert-manager cainjector" )
714+ err = addOverrideReplicas (certmanageroperatorclient , certmanagerCAinjectorDeployment , nil )
715+ Expect (err ).NotTo (HaveOccurred ())
716+
717+ By ("Waiting for cert-manager cainjector status to become available after removing override" )
718+ err = verifyOperatorStatusCondition (certmanageroperatorclient .OperatorV1alpha1 (), GenerateConditionMatchers (
719+ []PrefixAndMatchTypeTuple {{certManagerCAInjector , MatchAllConditions }}, validOperatorStatusConditions ,
720+ ))
721+ Expect (err ).NotTo (HaveOccurred ())
722+
723+ By ("Verifying cert-manager cainjector rollback to default replica count" )
724+ err = verifyDeploymentReplicas (k8sClientSet , certmanagerCAinjectorDeployment , ptr .To (int32 (defaultCAInjectorReplicasCount )), true )
725+ Expect (err ).NotTo (HaveOccurred ())
726+
727+ By ("Waiting for the cert-manager cainjector deployment to be Available after rollback" )
728+ err = pollTillDeploymentAvailable (context .Background (), k8sClientSet , operandNamespace , certmanagerCAinjectorDeployment )
729+ Expect (err ).NotTo (HaveOccurred ())
730+ })
731+ })
732+
597733 AfterAll (func () {
598734 By ("Reset cert-manager state" )
599735 err := resetCertManagerState (context .Background (), certmanageroperatorclient , loader )
0 commit comments