Merge pull request #297 from salluvada/master
Configure kubernetes plugin with FQDNs for jenkins http and slave services
This commit is contained in:
		
						commit
						894b36b443
					
				|  | @ -30,15 +30,21 @@ rules: | ||||||
|     resources: |     resources: | ||||||
|       - serviceaccounts |       - serviceaccounts | ||||||
|     verbs: |     verbs: | ||||||
|  |       - get | ||||||
|       - create |       - create | ||||||
|  |       - list | ||||||
|  |       - watch | ||||||
|   - apiGroups: |   - apiGroups: | ||||||
|       - rbac.authorization.k8s.io |       - rbac.authorization.k8s.io | ||||||
|     resources: |     resources: | ||||||
|       - roles |       - roles | ||||||
|       - rolebindings |       - rolebindings | ||||||
|     verbs: |     verbs: | ||||||
|  |       - get | ||||||
|       - create |       - create | ||||||
|       - update |       - update | ||||||
|  |       - list | ||||||
|  |       - watch | ||||||
|   - apiGroups: |   - apiGroups: | ||||||
|       - "" |       - "" | ||||||
|     resources: |     resources: | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ 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" | ||||||
| 
 | 
 | ||||||
|  | @ -187,8 +188,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.%s:%d", GetJenkinsHTTPServiceName(jenkins), jenkins.ObjectMeta.Namespace, jenkins.Spec.Service.Port), | 			fmt.Sprintf("http://%s:%d", GetJenkinsHTTPServiceFQDN(jenkins), jenkins.Spec.Service.Port), | ||||||
| 			fmt.Sprintf("%s.%s:%d", GetJenkinsSlavesServiceName(jenkins), jenkins.ObjectMeta.Namespace, jenkins.Spec.SlaveService.Port), | 			fmt.Sprintf("%s:%d", GetJenkinsSlavesServiceFQDN(jenkins), jenkins.Spec.SlaveService.Port), | ||||||
| 		), | 		), | ||||||
| 		configureViewsGroovyScriptName:              configureViews, | 		configureViewsGroovyScriptName:              configureViews, | ||||||
| 		disableJobDslScriptApprovalGroovyScriptName: disableJobDSLScriptApproval, | 		disableJobDslScriptApprovalGroovyScriptName: disableJobDSLScriptApproval, | ||||||
|  |  | ||||||
|  | @ -7,6 +7,9 @@ import ( | ||||||
| 	"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" | 	"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" | ||||||
| 
 | 
 | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
|  | 
 | ||||||
|  | 	"net" | ||||||
|  | 	"strings" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // UpdateService returns new service with override fields from config
 | // UpdateService returns new service with override fields from config
 | ||||||
|  | @ -38,3 +41,35 @@ func GetJenkinsHTTPServiceName(jenkins *v1alpha2.Jenkins) string { | ||||||
| func GetJenkinsSlavesServiceName(jenkins *v1alpha2.Jenkins) string { | func GetJenkinsSlavesServiceName(jenkins *v1alpha2.Jenkins) string { | ||||||
| 	return fmt.Sprintf("%s-slave-%s", constants.OperatorName, jenkins.ObjectMeta.Name) | 	return fmt.Sprintf("%s-slave-%s", constants.OperatorName, jenkins.ObjectMeta.Name) | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // GetJenkinsHTTPServiceFQDN returns Kubernetes service FQDN used for expose Jenkins HTTP endpoint
 | ||||||
|  | func GetJenkinsHTTPServiceFQDN(jenkins *v1alpha2.Jenkins) string { | ||||||
|  | 	clusterDomain := getClusterDomain() | ||||||
|  | 
 | ||||||
|  | 	return fmt.Sprintf("%s-http-%s.%s.svc.%s", constants.OperatorName, jenkins.ObjectMeta.Name, jenkins.ObjectMeta.Namespace, clusterDomain) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetJenkinsSlavesServiceFQDN returns Kubernetes service FQDN used for expose Jenkins slave endpoint
 | ||||||
|  | func GetJenkinsSlavesServiceFQDN(jenkins *v1alpha2.Jenkins) string { | ||||||
|  | 	clusterDomain := getClusterDomain() | ||||||
|  | 
 | ||||||
|  | 	return fmt.Sprintf("%s-slave-%s.%s.svc.%s", constants.OperatorName, jenkins.ObjectMeta.Name, jenkins.ObjectMeta.Namespace, clusterDomain) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetClusterDomain returns Kubernetes cluster domain, default to "cluster.local"
 | ||||||
|  | func getClusterDomain() string { | ||||||
|  | 	apiSvc := "kubernetes.default.svc" | ||||||
|  | 
 | ||||||
|  | 	clusterDomain := "cluster.local" | ||||||
|  | 
 | ||||||
|  | 	cname, err := net.LookupCNAME(apiSvc) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return clusterDomain | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	clusterDomain = strings.TrimPrefix(cname, "kubernetes.default.svc") | ||||||
|  | 	clusterDomain = strings.TrimPrefix(clusterDomain, ".") | ||||||
|  | 	clusterDomain = strings.TrimSuffix(clusterDomain, ".") | ||||||
|  | 
 | ||||||
|  | 	return clusterDomain | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -402,9 +402,8 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri | ||||||
| 							Env: []corev1.EnvVar{ | 							Env: []corev1.EnvVar{ | ||||||
| 								{ | 								{ | ||||||
| 									Name: "JENKINS_TUNNEL", | 									Name: "JENKINS_TUNNEL", | ||||||
| 									Value: fmt.Sprintf("%s.%s:%d", | 									Value: fmt.Sprintf("%s:%d", | ||||||
| 										resources.GetJenkinsSlavesServiceName(jenkins), | 										resources.GetJenkinsSlavesServiceFQDN(jenkins), | ||||||
| 										jenkins.ObjectMeta.Namespace, |  | ||||||
| 										jenkins.Spec.SlaveService.Port), | 										jenkins.Spec.SlaveService.Port), | ||||||
| 								}, | 								}, | ||||||
| 								{ | 								{ | ||||||
|  | @ -417,9 +416,8 @@ func agentDeployment(jenkins *v1alpha2.Jenkins, namespace string, agentName stri | ||||||
| 								}, | 								}, | ||||||
| 								{ | 								{ | ||||||
| 									Name: "JENKINS_URL", | 									Name: "JENKINS_URL", | ||||||
| 									Value: fmt.Sprintf("http://%s.%s:%d", | 									Value: fmt.Sprintf("http://%s:%d", | ||||||
| 										resources.GetJenkinsHTTPServiceName(jenkins), | 										resources.GetJenkinsHTTPServiceFQDN(jenkins), | ||||||
| 										jenkins.ObjectMeta.Namespace, |  | ||||||
| 										jenkins.Spec.Service.Port, | 										jenkins.Spec.Service.Port, | ||||||
| 									), | 									), | ||||||
| 								}, | 								}, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue