이 가이드에서는 Google Kubernetes Engine(GKE)에서 Jenkins를 설정하여 소프트웨어 제공 파이프라인을 조정하는 방법을 보여줍니다.
목표
- GKE에서 Kubernetes 클러스터를 만듭니다.
- Helm을 사용하여 Jenkins를 설치합니다.
- Jenkins에 연결합니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
- Google Kubernetes Engine
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
-
API GKE 사용 설정
-
Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
-
Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.
-
API GKE 사용 설정
환경 준비
먼저 배포 환경을 준비합니다.
Cloud Shell을 활성화합니다. Cloud Shell은 Google Cloud 콘솔의 명령줄에 대한 액세스 권한을 제공하고, gcloud CLI와 Google Cloud 개발에 필요한 기타 도구를 포함합니다. Cloud Shell은 프로비저닝하는 데 몇 분 정도 걸릴 수 있습니다.
프로세스가 완료되면 다음 출력이 표시됩니다.
Welcome to Cloud Shell! Type "help" to get started.
샘플 코드를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
Git 저장소에는 Jenkins를 배포하기 위해 사용할 Kubernetes 매니페스트가 포함됩니다. 매니페스트 및 해당 설정은 GKE를 위한 Jenkins 구성을 참조하세요.
샘플 코드 디렉토리로 이동합니다.
cd continuous-deployment-on-kubernetes
GKE 클러스터 만들기
GKE 클러스터를 프로비저닝합니다. 이 단계는 완료하는 데 최대 몇 분이 걸릴 수 있습니다.
gcloud container clusters create jenkins-cd \ --zone us-east1-d --scopes cloud-platform
cloud-platform
범위를 사용하면 Jenkins가 Cloud Source Repositories 및 Container Registry에 액세스할 수 있습니다.클러스터에 연결할 수 있는지 확인합니다.
kubectl cluster-info
클러스터에 성공적으로 연결할 수 있으면 다음과 비슷한 출력이 표시됩니다.
Kubernetes control plane is running at https://35.196.84.95 GLBCDefaultBackend is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy KubeDNS is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy Metrics-server is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
클러스터에서 Jenkins 권한을 부여할 수 있도록 클러스터의 RBAC에 자신을 클러스터 관리자로 추가합니다.
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin --user=$(gcloud config get-value account)
Jenkins 설치
Helm을 사용하여 저장소에서 Jenkins를 배포합니다.
Jenkins Helm 차트 저장소를 추가합니다.
helm repo add jenkinsci https://charts.jenkins.io helm repo update
커스텀 값 파일을 사용해서 Jenkins 설치를 구성합니다. 구성에 대한 세부정보는 jenkins/values.yaml
파일을 참조하세요.
Helm CLI를 사용해서 해당 구성 집합으로 차트를 배포합니다.
helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --wait
Jenkins 설치 구성에 대한 자세한 내용은 Jenkins 차트의 문서 페이지를 참조하세요.
Jenkins 포드가
Running
상태가 되고 컨테이너가READY
상태인지 확인합니다.kubectl get pods
READY
열에2/2
이 표시되고,STATUS
열에Running
이 표시됩니다. Jenkins가 초기화를 완료하려면 몇 분 정도 걸릴 수 있습니다.NAME READY STATUS RESTARTS AGE cd-jenkins-0 2/2 Running 0 6m30s
Kubernetes 서비스가 제대로 생성되었는지 확인합니다.
kubectl get svc
다음과 유사한 결과가 출력됩니다.
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE cd-jenkins 10.35.249.67 <none> 8080/TCP 3h cd-jenkins-agent 10.35.248.1 <none> 50000/TCP 3h kubernetes 10.35.240.1 <none> 443/TCP 9h
Jenkins 설치는 Kubernetes 플러그인을 사용해서 빌더 에이전트를 만듭니다. Jenkins 마스터가 빌드를 실행해야 할 때 필요에 따라 자동으로 시작됩니다. 해당 작업이 완료되면 자동으로 종료되고 리소스가 클러스터의 리소스 풀에 다시 추가됩니다.
Jenkins에 연결
Cloud Shell에서 Jenkins UI에 대한 포트 전달을 설정합니다.
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd-jenkins" -o jsonpath="{.items[0].metadata.name}") kubectl port-forward $POD_NAME 8080:8080 >> /dev/null 2>&1 &
Jenkins 사용자 인터페이스를 열려면 Cloud Shell에서 웹 미리보기를 클릭하고 포트 8080에서 미리보기를 클릭합니다.
이제 Jenkins 및 GKE에 액세스할 수 있습니다. 이 솔루션을 더 진행할 경우 지속적 배포 파이프라인에서 이러한 구성요소를 사용할 수 있습니다.
정리
이 가이드를 완료한 후에는 향후에 요금이 청구되지 않도록 GCP에서 만든 리소스를 삭제합니다.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.
프로젝트를 삭제하려면 다음을 실행합니다.
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
GKE 클러스터 삭제
- GKE 클러스터를 삭제합니다.
gcloud container clusters delete jenkins-cd --zone us-east1-d
다음 단계
GKE의 Jenkins 권장사항에 대해 자세히 알아봅니다.
GKE용으로 Jenkins를 구성하는 방법을 알아봅니다.
Jenkins로 GKE에 지속적 배포를 설정하는 방법 알아보기
Google Cloud에 대한 참조 아키텍처, 다이어그램, 가이드, 권장사항 살펴보기. Cloud 아키텍처 센터 살펴보세요.