일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
- Today
- Total
기록
K3s 기반 멀티 노드 클러스터 구축기 (5) - Helm을 이용한 Jenkins 설치 및 접속 테스트 본문
쿠버네티스 환경에 CI/CD 파이프라인을 구축하기 위해 Jenkins를 설치하고자 한다. 이번 글에서는 Helm Chart를 활용해 Jenkins를 설치하는 과정을 자세히 다루고, 설치 후 접속까지 정상적으로 되는지 확인하는 흐름을 정리한다. 이 실습은 Infra 계정과 Dev 계정 간 VPC Peering을 완료한 상태에서 진행된다.
1. 설치 배경
개발/운영 파이프라인을 체계적으로 관리하기 위해 Jenkins를 기반으로 CI/CD 환경을 구성하려 한다. Jenkins는 오픈 소스 기반으로 매우 강력한 기능을 제공하는 툴이며, Helm을 이용해 빠르고 손쉽게 쿠버네티스 클러스터에 배포할 수 있다. 이번 작업은 Jenkins 설치 및 초기 설정까지를 목표로 삼는다.
2. Jenkins 설치 준비
Helm Repository를 업데이트하고 Jenkins Chart를 설치하기 위해 필요한 기본적인 준비를 진행한다.
helm repo add jenkins https://charts.jenkins.io
helm repo update
그 다음 Jenkins 설치를 위한 values.yaml 파일을 작성한다. 이 파일에는 Admin 계정 설정, 퍼시스턴트 볼륨 클레임(PVC) 사용 여부, 리소스 설정 등이 포함된다.
controller:
admin:
username: admin
password: admin1234
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
cpu: 200m
memory: 512Mi
persistence:
enabled: true
storageClass: "local-path"
size: 8Gi
service:
type: NodePort
3. Helm Chart를 통한 Jenkins 설치
Helm을 이용해 Jenkins를 설치한다. 이때 jenkins 네임스페이스를 따로 만들어 설치를 깔끔하게 분리한다.
kubectl create namespace jenkins
helm install jenkins jenkins/jenkins -n jenkins --create-namespace -f jenkins-values.yaml
설치가 완료되면 Helm은 접속 방법과 초기 Admin 패스워드를 확인하는 방법을 안내한다.
4. PVC 생성 및 Pod 상태 확인
Jenkins는 Persistent Volume Claim(PVC)을 필요로 한다. PVC를 미리 생성해주지 않으면 Pod가 Pending 상태에 머무르게 된다. 아래처럼 PVC를 생성해준다.
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins
namespace: jenkins
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: local-path
EOF
PVC가 정상적으로 Bound 상태가 되면 Jenkins Pod가 본격적으로 기동한다.
kubectl get pvc -n jenkins
Pod 상태도 확인한다.
kubectl get pods -n jenkins
Pod가 2/2 Running 상태가 되면 Jenkins가 정상적으로 올라온 것이다.
5. NodePort를 통한 외부 접속 설정
Jenkins는 기본적으로 ClusterIP 타입으로 설치되기 때문에 외부에서 접속할 수 없다. 이를 NodePort 타입으로 변경해준다.
kubectl patch svc jenkins -n jenkins -p '{"spec": {"type": "NodePort"}}'
변경 후 NodePort가 할당된 것을 확인하고, 퍼블릭 IP + NodePort 조합으로 Jenkins에 접속할 수 있다.
kubectl get svc -n jenkins
6. 초기 로그인
초기에는 Admin 계정(admin/admin1234)으로 로그인할 수 있다. 이후 필요한 경우 보안을 강화하거나 추가 플러그인 설치, Pipeline Job 구성 등을 진행할 수 있다.
'DevOps' 카테고리의 다른 글
K3s 기반 멀티 노드 클러스터 구축기 (7) - ArgoCD 설치 및 외부 접속 구성 (0) | 2025.05.12 |
---|---|
K3s 기반 멀티 노드 클러스터 구축기 (6) - GitHub Actions와 AWS ECR로 경량화 배포 (0) | 2025.05.11 |
AWS EKS에서 EBS CSI Driver 설치 및 IAM 권한 구성하기 (0) | 2025.05.05 |
K3s 기반 멀티 노드 클러스터 구축기 (4) - VPC Peering을 통한 Private 통신 연결 (0) | 2025.05.05 |
AWS KMS로 민감 정보 암호화: 콘솔 키 생성부터 CLI 실습까지 (0) | 2025.05.01 |