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