github.com/jenkins-x/jx/v2@v2.1.155/pkg/kube/certmanager.go (about)

     1  package kube
     2  
     3  import (
     4  	certmngclient "github.com/jetstack/cert-manager/pkg/client/clientset/versioned"
     5  	"github.com/pkg/errors"
     6  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     7  )
     8  
     9  const labelLetsencryptService = "jenkins.io/letsencrypt-service"
    10  
    11  // IsStagingCertificate looks at certmanager certificates to find if we are using staging or prod certs
    12  func IsStagingCertificate(client certmngclient.Interface, ns string) (bool, error) {
    13  	certs, err := client.CertmanagerV1alpha1().Certificates(ns).List(metav1.ListOptions{})
    14  	if err != nil {
    15  		return false, err
    16  	}
    17  	// loop over certificates and look for a Jenkins X label to identify if we are using staging or prod certs
    18  	for _, cert := range certs.Items {
    19  		if cert.ObjectMeta.Labels[labelLetsencryptService] == "production" {
    20  			return false, nil
    21  		}
    22  		if cert.ObjectMeta.Labels[labelLetsencryptService] == "staging" {
    23  			return true, nil
    24  		}
    25  	}
    26  	return false, errors.New("no matching certificates found with letsencrypt-service label")
    27  }