반응형
K8s + jenkins 배포하기
Jenkins
소프트웨어 개발 시 지속적인 통합 (CI)를 제공하는 툴
중요 사항
- manifest (yaml) 로 설치
- Namespace : wgh-ns
- Jenkins 분산 아키텍처 구현
a. Jenkins agent pod 를 생성하여 1회성으로 빌드를 한 후 pod가 사라지게 끔 설정
b. accessMode 는 ReadWriteMany가 되어야 함 (master pod 와 agent pod 가 같은 PVC를 바라보아야 한다)
PV 생성
- vi jenkins-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
hostPath:
path: /k8s-data/jenkins
PVC 생성
- vi jenkins-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
spec:
storageClassName: local-storage
volumeName: jenkins-pv
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
Deployment 생성
- securityContext: runAsUser: 0 fsGroup: 0
- securityContext 는 pod에 대한 보안설정 (pod 생성 후 권한문제로 동작하지 않을 때 주로 pod securityContext를 수정해준다)
- runAsUser : 컨테이너의 사용자를 지정 (0=root)
- fsGroup : pod 볼륨에 대한 그룹을 할당.(0=root)
- 2개 Port 열어야 됨
- http-port : Jenkins API 접근에 사용
- Jnlp-port : Jenkins agent노드와 jenkins 마스터 노드가 통신하는데 사용되는 port
- vi jenkins-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
securityContext:
runAsUser: 0
fsGroup: 0
containers:
- name: jenkins
image: jenkins/jenkins:latest
env:
- name: JAVA_OPTS
value: -Djenkins.install.runSetupWizard=false
ports:
- name: http-port
containerPort: 8080
- name: jnlp-port
containerPort: 50000
volumeMounts:
- name: jenkins-volume
mountPath: /var/jenkins_home
volumes:
- name: jenkins-volume
persistentVolumeClaim:
claimName: jenkins-pvc
Service 생성
- agent port = Jnlp port
- vi jenkins-service.yml
apiVersion: v1
kind: Service
metadata:
name: jenkins-svc
spec:
selector:
app: jenkins
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
nodePort: 32002
- name: agent
port: 50000
targetPort: 50000
protocol: TCP
nodePort: 32012
type: NodePort
실행 및 Test
$ kubectl apply -f . —namespace=wgh-ns
$ kubectl get pods -n wgh-ns
[ 서버 IP ]:32002 접속 Jenkins 확인
- 접속 후 초기 계정 생성
- Jenkins 관리 > Configure Global Security > Security Realm 에서 Jenkins’s own user database 선택 > Authorization의 Logged-in users can do anything 선택 후 저장하면 “첫번째 관리자 만들기로 redirection”
참고
반응형
'개발인생 > Kubernetes' 카테고리의 다른 글
install) kubernetes + Harbor (Helm으로 설치) (0) | 2023.02.27 |
---|---|
install) kubernetes + sonarqube (yaml 파일로 배포하기) (0) | 2023.02.09 |
install) kubernetes + GitLab (yaml 파일로 배포) (0) | 2023.02.07 |
install) kubernetes + Nexus3 (yaml 배포) (0) | 2023.02.07 |
install ) kubernetes + Elasticsearch cluster (yaml로 설치) (0) | 2023.02.02 |