基于OpenShift平台部署Jenkins

DeploymentConfig(jenkin-dc.yml)

  1. apiVersion: apps.openshift.io/v1
  2. kind: DeploymentConfig
  3. metadata:
  4. labels:
  5. app: jenkins
  6. name: jenkins
  7. namespace: jenkins
  8. spec:
  9. replicas: 2
  10. selector:
  11. app: jenkins
  12. deploymentconfig: jenkins
  13. strategy:
  14. activeDeadlineSeconds: 21600
  15. resources: {}
  16. rollingParams:
  17. intervalSeconds: 1
  18. maxSurge: 25%
  19. maxUnavailable: 25%
  20. timeoutSeconds: 600
  21. updatePeriodSeconds: 1
  22. type: Rolling
  23. template:
  24. metadata:
  25. annotations:
  26. openshift.io/generated-by: OpenShiftWebConsole
  27. creationTimestamp: null
  28. labels:
  29. app: jenkins
  30. deploymentconfig: jenkins
  31. spec:
  32. containers:
  33. - env:
  34. - name: JENKINS_PASSWORD
  35. value: xxxxxxx
  36. image: 'openshift/jenkins-2-centos7:v3.11'
  37. imagePullPolicy: IfNotPresent
  38. name: jenkins
  39. ports:
  40. - containerPort: 53
  41. protocol: TCP
  42. - containerPort: 8080
  43. protocol: TCP
  44. - containerPort: 8443
  45. protocol: TCP
  46. - containerPort: 50000
  47. protocol: TCP
  48. resources: {}
  49. terminationMessagePath: /dev/termination-log
  50. terminationMessagePolicy: File
  51. volumeMounts:
  52. - mountPath: /var/lib/jenkins
  53. name: jenkins-1
  54. dnsPolicy: ClusterFirst
  55. restartPolicy: Always
  56. schedulerName: default-scheduler
  57. securityContext: {}
  58. terminationGracePeriodSeconds: 30
  59. volumes:
  60. - emptyDir: {}
  61. name: jenkins-1
  62. test: false
  63. triggers:
  64. - type: ConfigChange

RBAC(jenkins-rbac.yml)

  1. kind: Role
  2. apiVersion: rbac.authorization.k8s.io/v1
  3. metadata:
  4. namespace: jenkins
  5. name: jenkinsrole
  6. rules:
  7. - apiGroups: [""]
  8. resources: ["pods","deployments","namespaces"]
  9. verbs: ["get","list","watch","create"]
  10. ---
  11. kind: RoleBinding
  12. apiVersion: rbac.authorization.k8s.io/v1
  13. metadata:
  14. name: jenkinsrolebind
  15. namespace: jenkins
  16. subjects:
  17. - kind: ServiceAccount
  18. name: default
  19. namespace: jenkins
  20. roleRef:
  21. kind: Role
  22. name: jenkinsrole

Install

  1. docker pull openshift/jenkins-2-centos7:v3.11
  2. oc create -f jenkins-rbac.yml
  3. oc create -f jenkins-dc.yml

创建service和route

1.通过图形界面创建

images images images images

2.通过yaml创建

jenkins-service.yml

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. labels:
  5. app: jenkins
  6. name: jenkins
  7. namespace: jenkins
  8. spec:
  9. clusterIP: 172.30.100.180
  10. ports:
  11. - name: 53-tcp
  12. port: 53
  13. protocol: TCP
  14. targetPort: 53
  15. - name: 8080-tcp
  16. port: 8080
  17. protocol: TCP
  18. targetPort: 8080
  19. - name: 8443-tcp
  20. port: 8443
  21. protocol: TCP
  22. targetPort: 8443
  23. - name: 50000-tcp
  24. port: 50000
  25. protocol: TCP
  26. targetPort: 50000
  27. selector:
  28. deploymentconfig: jenkins
  29. sessionAffinity: None
  30. type: ClusterIP

jenkins-router.yml

  1. apiVersion: route.openshift.io/v1
  2. kind: Route
  3. metadata:
  4. labels:
  5. app: jenkins
  6. name: jenkins
  7. namespace: jenkins
  8. spec:
  9. host: jenkins-jenkins.router.default.svc.cluster.local
  10. port:
  11. targetPort: 8080-tcp
  12. to:
  13. kind: Service
  14. name: jenkins
  15. weight: 100
  16. wildcardPolicy: None

更改本地hosts

  1. 192.168.0.21 node01.example.com
  2. 192.168.0.32 node02.example.com
  3. 192.168.0.21 jenkins-jenkins.router.default.svc.cluster.local

验证测试

账号密码: 默认admin 和JENKINS_PASSWORD变量的密码 xxxxxxxx images