#318 Fix running Jenkins-Operator locally
This commit is contained in:
		
							parent
							
								
									970449f04f
								
							
						
					
					
						commit
						fe74f4074c
					
				|  | @ -285,7 +285,10 @@ func (r *ReconcileJenkinsBaseConfiguration) createInitConfigurationConfigMap(met | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (r *ReconcileJenkinsBaseConfiguration) createBaseConfigurationConfigMap(meta metav1.ObjectMeta) error { | func (r *ReconcileJenkinsBaseConfiguration) createBaseConfigurationConfigMap(meta metav1.ObjectMeta) error { | ||||||
| 	configMap := resources.NewBaseConfigurationConfigMap(meta, r.Configuration.Jenkins) | 	configMap, err := resources.NewBaseConfigurationConfigMap(meta, r.Configuration.Jenkins) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return stackerr.WithStack(err) | ||||||
|  | 	} | ||||||
| 	return stackerr.WithStack(r.CreateOrUpdateResource(configMap)) | 	return stackerr.WithStack(r.CreateOrUpdateResource(configMap)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -178,8 +178,16 @@ func GetBaseConfigurationConfigMapName(jenkins *v1alpha2.Jenkins) string { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration
 | // NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration
 | ||||||
| func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jenkins) *corev1.ConfigMap { | func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jenkins) (*corev1.ConfigMap, error) { | ||||||
| 	meta.Name = GetBaseConfigurationConfigMapName(jenkins) | 	meta.Name = GetBaseConfigurationConfigMapName(jenkins) | ||||||
|  | 	jenkinsServiceFQDN, err := GetJenkinsHTTPServiceFQDN(jenkins) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	jenkinsSlavesServiceFQDN, err := GetJenkinsSlavesServiceFQDN(jenkins) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
| 	groovyScriptsMap := map[string]string{ | 	groovyScriptsMap := map[string]string{ | ||||||
| 		basicSettingsGroovyScriptName:             fmt.Sprintf(basicSettingsFmt, constants.DefaultAmountOfExecutors), | 		basicSettingsGroovyScriptName:             fmt.Sprintf(basicSettingsFmt, constants.DefaultAmountOfExecutors), | ||||||
| 		enableCSRFGroovyScriptName:                enableCSRF, | 		enableCSRFGroovyScriptName:                enableCSRF, | ||||||
|  | @ -188,8 +196,8 @@ func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jen | ||||||
| 		disableInsecureFeaturesGroovyScriptName:   disableInsecureFeatures, | 		disableInsecureFeaturesGroovyScriptName:   disableInsecureFeatures, | ||||||
| 		configureKubernetesPluginGroovyScriptName: fmt.Sprintf(configureKubernetesPluginFmt, | 		configureKubernetesPluginGroovyScriptName: fmt.Sprintf(configureKubernetesPluginFmt, | ||||||
| 			jenkins.ObjectMeta.Namespace, | 			jenkins.ObjectMeta.Namespace, | ||||||
| 			fmt.Sprintf("http://%s:%d", GetJenkinsHTTPServiceFQDN(jenkins), jenkins.Spec.Service.Port), | 			fmt.Sprintf("http://%s:%d", jenkinsServiceFQDN, jenkins.Spec.Service.Port), | ||||||
| 			fmt.Sprintf("%s:%d", GetJenkinsSlavesServiceFQDN(jenkins), jenkins.Spec.SlaveService.Port), | 			fmt.Sprintf("%s:%d", jenkinsSlavesServiceFQDN, jenkins.Spec.SlaveService.Port), | ||||||
| 		), | 		), | ||||||
| 		configureViewsGroovyScriptName:              configureViews, | 		configureViewsGroovyScriptName:              configureViews, | ||||||
| 		disableJobDslScriptApprovalGroovyScriptName: disableJobDSLScriptApproval, | 		disableJobDslScriptApprovalGroovyScriptName: disableJobDSLScriptApproval, | ||||||
|  | @ -201,5 +209,5 @@ func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha2.Jen | ||||||
| 		TypeMeta:   buildConfigMapTypeMeta(), | 		TypeMeta:   buildConfigMapTypeMeta(), | ||||||
| 		ObjectMeta: meta, | 		ObjectMeta: meta, | ||||||
| 		Data:       groovyScriptsMap, | 		Data:       groovyScriptsMap, | ||||||
| 	} | 	}, nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,9 +2,9 @@ package resources | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 
 |  | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" | 	"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" | 	"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" | ||||||
|  | 	"github.com/operator-framework/operator-sdk/pkg/k8sutil" | ||||||
| 
 | 
 | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
| 
 | 
 | ||||||
|  | @ -43,33 +43,56 @@ func GetJenkinsSlavesServiceName(jenkins *v1alpha2.Jenkins) string { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // GetJenkinsHTTPServiceFQDN returns Kubernetes service FQDN used for expose Jenkins HTTP endpoint
 | // GetJenkinsHTTPServiceFQDN returns Kubernetes service FQDN used for expose Jenkins HTTP endpoint
 | ||||||
| func GetJenkinsHTTPServiceFQDN(jenkins *v1alpha2.Jenkins) string { | func GetJenkinsHTTPServiceFQDN(jenkins *v1alpha2.Jenkins) (string, error) { | ||||||
| 	clusterDomain := getClusterDomain() | 	clusterDomain, err := getClusterDomain() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "", err | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	return fmt.Sprintf("%s-http-%s.%s.svc.%s", constants.OperatorName, jenkins.ObjectMeta.Name, jenkins.ObjectMeta.Namespace, clusterDomain) | 	return fmt.Sprintf("%s-http-%s.%s.svc.%s", constants.OperatorName, jenkins.ObjectMeta.Name, jenkins.ObjectMeta.Namespace, clusterDomain), nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // GetJenkinsSlavesServiceFQDN returns Kubernetes service FQDN used for expose Jenkins slave endpoint
 | // GetJenkinsSlavesServiceFQDN returns Kubernetes service FQDN used for expose Jenkins slave endpoint
 | ||||||
| func GetJenkinsSlavesServiceFQDN(jenkins *v1alpha2.Jenkins) string { | func GetJenkinsSlavesServiceFQDN(jenkins *v1alpha2.Jenkins) (string, error) { | ||||||
| 	clusterDomain := getClusterDomain() | 	clusterDomain, err := getClusterDomain() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "", err | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	return fmt.Sprintf("%s-slave-%s.%s.svc.%s", constants.OperatorName, jenkins.ObjectMeta.Name, jenkins.ObjectMeta.Namespace, clusterDomain) | 	return fmt.Sprintf("%s-slave-%s.%s.svc.%s", constants.OperatorName, jenkins.ObjectMeta.Name, jenkins.ObjectMeta.Namespace, clusterDomain), nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // GetClusterDomain returns Kubernetes cluster domain, default to "cluster.local"
 | // GetClusterDomain returns Kubernetes cluster domain, default to "cluster.local"
 | ||||||
| func getClusterDomain() string { | func getClusterDomain() (string, error) { | ||||||
| 	apiSvc := "kubernetes.default.svc" |  | ||||||
| 
 |  | ||||||
| 	clusterDomain := "cluster.local" | 	clusterDomain := "cluster.local" | ||||||
| 
 | 
 | ||||||
|  | 	if ok, err := isRunningInCluster(); !ok { | ||||||
|  | 		return clusterDomain, nil | ||||||
|  | 	} else if err != nil { | ||||||
|  | 		return "", nil | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	apiSvc := "kubernetes.default.svc" | ||||||
|  | 
 | ||||||
| 	cname, err := net.LookupCNAME(apiSvc) | 	cname, err := net.LookupCNAME(apiSvc) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return clusterDomain | 		return "", err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	clusterDomain = strings.TrimPrefix(cname, "kubernetes.default.svc") | 	clusterDomain = strings.TrimPrefix(cname, "kubernetes.default.svc") | ||||||
| 	clusterDomain = strings.TrimPrefix(clusterDomain, ".") | 	clusterDomain = strings.TrimPrefix(clusterDomain, ".") | ||||||
| 	clusterDomain = strings.TrimSuffix(clusterDomain, ".") | 	clusterDomain = strings.TrimSuffix(clusterDomain, ".") | ||||||
| 
 | 
 | ||||||
| 	return clusterDomain | 	return clusterDomain, nil | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func isRunningInCluster() (bool, error) { | ||||||
|  | 	_, err := k8sutil.GetOperatorNamespace() | ||||||
|  | 	if err != nil { | ||||||
|  | 		if err == k8sutil.ErrNoNamespace || err == k8sutil.ErrRunLocal { | ||||||
|  | 			return false, nil | ||||||
|  | 		} | ||||||
|  | 		return true, nil | ||||||
|  | 	} | ||||||
|  | 	return false, err | ||||||
|  | } | ||||||
|  | @ -354,7 +354,10 @@ func (s SeedJobs) createAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient cli | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	deployment := agentDeployment(jenkinsManifest, namespace, agentName, secret) | 	deployment, err := agentDeployment(jenkinsManifest, namespace, agentName, secret) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	err = k8sClient.Create(context.TODO(), deployment) | 	err = k8sClient.Create(context.TODO(), deployment) | ||||||
| 	if apierrors.IsAlreadyExists(err) { | 	if apierrors.IsAlreadyExists(err) { | ||||||
|  | @ -373,7 +376,15 @@ func agentDeploymentName(jenkins v1alpha2.Jenkins, agentName string) string { | ||||||
| 	return fmt.Sprintf("%s-%s", agentName, jenkins.Name) | 	return fmt.Sprintf("%s-%s", agentName, jenkins.Name) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName string, secret string) *appsv1.Deployment { | func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName string, secret string) (*appsv1.Deployment, error) { | ||||||
|  | 	jenkinsSlavesServiceFQDN, err := resources.GetJenkinsSlavesServiceFQDN(jenkins) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	jenkinsHttpServiceFQDN, err := resources.GetJenkinsHTTPServiceFQDN(jenkins) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
| 	return &appsv1.Deployment{ | 	return &appsv1.Deployment{ | ||||||
| 		ObjectMeta: metav1.ObjectMeta{ | 		ObjectMeta: metav1.ObjectMeta{ | ||||||
| 			Name:      agentDeploymentName(*jenkins, agentName), | 			Name:      agentDeploymentName(*jenkins, agentName), | ||||||
|  | @ -403,7 +414,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri | ||||||
| 								{ | 								{ | ||||||
| 									Name: "JENKINS_TUNNEL", | 									Name: "JENKINS_TUNNEL", | ||||||
| 									Value: fmt.Sprintf("%s:%d", | 									Value: fmt.Sprintf("%s:%d", | ||||||
| 										resources.GetJenkinsSlavesServiceFQDN(jenkins), | 										jenkinsSlavesServiceFQDN, | ||||||
| 										jenkins.Spec.SlaveService.Port), | 										jenkins.Spec.SlaveService.Port), | ||||||
| 								}, | 								}, | ||||||
| 								{ | 								{ | ||||||
|  | @ -417,7 +428,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri | ||||||
| 								{ | 								{ | ||||||
| 									Name: "JENKINS_URL", | 									Name: "JENKINS_URL", | ||||||
| 									Value: fmt.Sprintf("http://%s:%d", | 									Value: fmt.Sprintf("http://%s:%d", | ||||||
| 										resources.GetJenkinsHTTPServiceFQDN(jenkins), | 										jenkinsHttpServiceFQDN, | ||||||
| 										jenkins.Spec.Service.Port, | 										jenkins.Spec.Service.Port, | ||||||
| 									), | 									), | ||||||
| 								}, | 								}, | ||||||
|  | @ -465,7 +476,7 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	}, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func seedJobCreatingGroovyScript(seedJob v1alpha2.SeedJob) (string, error) { | func seedJobCreatingGroovyScript(seedJob v1alpha2.SeedJob) (string, error) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue