Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
disable cert-manager related function
Signed-off-by: YuChen <[email protected]>
  • Loading branch information
YuChen committed Jan 8, 2024
commit 2d23ecd7cc267bcacfef0b685237257a0fd9940e
62 changes: 41 additions & 21 deletions controllers/bootstrap/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,37 @@ func (b *Bootstrap) CheckOperatorCatalog(ns string) error {
return err
}

// CheckCRD returns true if the given crd is existent
func (b *Bootstrap) CheckCRD(apiGroupVersion string, kind string) (bool, error) {
dc := discovery.NewDiscoveryClientForConfigOrDie(b.Config)
exist, err := b.ResourceExists(dc, apiGroupVersion, kind)
if err != nil {
return false, err
}
if !exist {
return false, nil
}
return true, nil
}

// WaitResourceReady returns true only when the specific resource CRD is created and wait for infinite time
func (b *Bootstrap) WaitResourceReady(apiGroupVersion string, kind string) error {
dc := discovery.NewDiscoveryClientForConfigOrDie(b.Config)
if err := utilwait.PollImmediateInfinite(time.Second*10, func() (done bool, err error) {
exist, err := b.ResourceExists(dc, apiGroupVersion, kind)
if err != nil {
return exist, err
}
if !exist {
klog.V(2).Infof("waiting for resource ready with kind: %s, apiGroupVersion: %s", kind, apiGroupVersion)
}
return exist, nil
}); err != nil {
return err
}
return nil
}

func (b *Bootstrap) waitResourceReady(apiGroupVersion, kind string) error {
dc := discovery.NewDiscoveryClientForConfigOrDie(b.Config)
if err := utilwait.PollImmediate(time.Second*10, time.Minute*2, func() (done bool, err error) {
Expand Down Expand Up @@ -879,24 +910,6 @@ func (b *Bootstrap) updateApprovalMode() error {
return nil
}

// WaitResourceReady returns true only when the specific resource CRD is created and wait for infinite time
func (b *Bootstrap) WaitResourceReady(apiGroupVersion string, kind string) error {
dc := discovery.NewDiscoveryClientForConfigOrDie(b.Config)
if err := utilwait.PollImmediateInfinite(time.Second*10, func() (done bool, err error) {
exist, err := b.ResourceExists(dc, apiGroupVersion, kind)
if err != nil {
return exist, err
}
if !exist {
klog.V(2).Infof("waiting for resource ready with kind: %s, apiGroupVersion: %s", kind, apiGroupVersion)
}
return exist, nil
}); err != nil {
return err
}
return nil
}

// deployResource deploys the given resource CR
func (b *Bootstrap) DeployResource(cr, placeholder string) bool {
if err := utilwait.PollImmediateInfinite(time.Second*10, func() (done bool, err error) {
Expand Down Expand Up @@ -1051,11 +1064,18 @@ func (b *Bootstrap) DeployCertManagerCR() error {

klog.Info("Deploying Cert Manager CRs")
for _, kind := range constant.CertManagerKinds {
// wait for v1 crd ready
if err := b.waitResourceReady(constant.CertManagerAPIGroupVersionV1, kind); err != nil {
klog.Errorf("Failed to wait for resource ready with kind: %s, apiGroupVersion: %s", kind, constant.CertManagerAPIGroupVersionV1)
klog.Infof("Checking if resource %s CRD exsits ", kind)
// if the crd is not exist, skip it
exist, err := b.CheckCRD(constant.CertManagerAPIGroupVersionV1, kind)
if err != nil {
klog.Errorf("Failed to check resource with kind: %s, apiGroupVersion: %s", kind, constant.CertManagerAPIGroupVersionV1)
}
if !exist {
klog.Infof("Skiped deploying %s, it is not exist in cluster", kind)
return nil
}
}

// will use v1 cert instead of v1alpha cert
// delete v1alpha1 cert if it exist
var resourceList = []*Resource{
Expand Down
48 changes: 30 additions & 18 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,26 +168,38 @@ func main() {
klog.Errorf("Unable to create controller CommonService: %v", err)
os.Exit(1)
}
if err = (&certmanagerv1controllers.CertificateRefreshReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "CertificateRefresh")
os.Exit(1)
}
if err = (&certmanagerv1controllers.PodRefreshReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "PodRefresh")

// check if cert-manager CRD does not exist, then skip cert-manager related controllers initialization
exist, err := bs.CheckCRD(constant.CertManagerAPIGroupVersionV1, "certificates")
if err != nil {
klog.Errorf("Failed to check if cert-manager CRD exists: %v", err)
os.Exit(1)
}
if err = (&certmanagerv1controllers.V1AddLabelReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "V1AddLabel")
os.Exit(1)
if !exist && err == nil {
klog.Infof("cert-manager CRD does not exist, skip cert-manager related controllers initialization")
} else if exist && err == nil {

if err = (&certmanagerv1controllers.CertificateRefreshReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "CertificateRefresh")
os.Exit(1)
}
if err = (&certmanagerv1controllers.PodRefreshReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "PodRefresh")
os.Exit(1)
}
if err = (&certmanagerv1controllers.V1AddLabelReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
klog.Error(err, "unable to create controller", "controller", "V1AddLabel")
os.Exit(1)
}
}
} else {
klog.Infof("Common Service Operator goes dormant in the namespace %s", operatorNs)
Expand Down