트러블슈팅

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 1

sowakemeup 2025. 8. 10. 17:29

CD과정에 필요한 YAML파일들:

1. Service-account.yaml파일은 쿠버네티스 내에서 젠킨스가 사용할 계정(ID)를 생성합니다. 그 계정의 ROLE(권한)을 정해주고  RoleBinding을 젠킨스와 role을 연결해줍니다.

 

2. Secret.yaml파일은 쿠버네티스 api서버와 통신할 때 자신을 인증하기 위해 필요한 토큰을 생성합니다. 이 토큰을 사용해서 api 서버에 인증하고, 부여받은 권한(Role) 내에서 작업을 수행합니다. (Agent pod 생성)

 

3. Deployment.yaml 파일은 Jenkins master pod를 쿠버네티스에 배포하고 외부에서 접근할 수 있도록 설정하는 역할을 합니다.
serviceAccountName: jenkins-admin 설정을 통해 이 Pod가 위에서 만든 jenkins-admin의 권한을 갖도록 지정합니다.
livenessProbe와 readinessProbe를 통해 Jenkins가 정상적으로 동작하는지 주기적으로 헬스체크를 수행하여 안정성을 높입니다. volumeMounts PersistentVolumeClaim을 사용하여 Jenkins의 설정, 플러그인, 작업 내역과 같은 중요 데이터가 Pod가 재시작되어도 사라지지 않고 영구적으로 보존되도록 합니다.
Service (jenkins-service): 배포된 Jenkins Pod에 접근할 수 있는 고정된 네트워크 통로를 만듭니다.
type: NodePort로 설정하여, 클러스터 외부에서도 NodeIP:32000 주소로 Jenkins UI에 접속할 수 있게 합니다.
50000번 포트는 Jenkins Master와 Agent 간의 통신(JNLP)을 위해 사용됩니다.

 

 

문제:

일반 kubectl 명령어를 사용해서 진행했더니,

카카오클라우드에 생성한 쿠버 환경이 아니라, 로컬 minikube로 진행되는 문제가 발생했습니다

 

해결법:

일반 kubectl 명령어를 사용하면 로컬 환경 우선으로 들어가기 때문에,

이렇게 쿠버네티스 클러스터를 터미널에서 접속한 후에

kubectl 대신

kubectl --kubeconfig=$KUBE_CONFIG 사용해야 합니다.