1. GKE 클러스터 생성
kubernetes클러스터에 배포 자동화를 하기 위해서는 먼저 GKE 클러스터를 생성해야 한다.
영역을 asia-northeast3-a, 제어 영역 버전을 정적 버전으로 한 kube라는 이름의 클러스터를 생성해주었다.
노드 수가 3개인 kube라는 이름의 GKE 클러스터가 생성되었다.
vm 인스턴스에서 3개의 노드를 확인할 수 있다.
2. jenkins 설정하기
docker ps -a 명령어를 통해 myjenkins라는 이름의 jenkins 컨테이너가 있는 것을 확인하고
myjenkins 컨테이너 안에서 interactive bash shell이 실행되도록 다음과 같은 명령어를 입력했다.
명령어 입력을 통해 젠킨스 컨테이너 안으로 들어왔다.
3. 젠킨스 컨테이너에 gcloud CLI 설치하기
GKE에 접근하기 위해 jenkins conatiner 설정을 마쳐야 한다. 먼저 gcloud CLI를 설치한다.
Google Cloud CLI 설치 안내에 따라 명령어를 입력해 gcloud CLI를 설치하고 마지막에 gcloud init을 통해 설정을 마쳤다.
4. 젠킨스 컨테이너에 kubectl 설치하기
쿠버네티스 문서를 참고해 kubectl을 설치한다. kubectl 자동완성 활성화를 통해 다음과 같은 명령어도 입력해주었다.
5. 쿠버네티스 클러스터와 연결하기
방금 만들었던 kube 클러스터와 연결하기 위해 다음과 같은 명령어를 입력했다.
kubectl get all 명령어를 통해 잘 연결되었는지 확인한다.
6. 플러스인 설치하기
jenkins에서 kubernetes Credentials와 Google Kubernetes Engine 플러그인을 설치한다.
7. 서비스 계정 만들기
먼저 서비스 계정 이름과 서비스 계정 ID를 jenkins로 설정한다.
다음은 이 서비스 계정에 프로젝트에 대한 액세스 권한을 부여해야 한다. 역할은 Kubernetes Engine 관리자로 선택한다.
jenkins라는 이름의 서비스 계정이 생성되었다.
8. JSON key 추가하기
방금 만든 jenkins 서비스 계정에 JSON key를 추가해야 한다. JSON유형의 비공개 키를 만든다.
만든 비공개 키를 컴퓨터 내에 저장하였다.
9. jenkins 인스턴스에 HowIsTheWeatherToday2라는 이름의 레포지토리를 git clone해주었다.
10. HowIsTheWeatherToday2 폴더에 들어가 Dockerfile을 다음과 같은 내용으로 업데이트해주었다.
package.json에서 "scripts"안의 "start"부분이 "nodemon app"되어있으므로 위의 Dockerfile에서 CMD ["npm", "start"] 를 설정하면 nodemon app이 실행된다.
11. Deployment.yaml을 다음과 같은 내용으로 생성해주었다.
12. Jenkinsfile 생성하기
다음과 같이 Jenkinsfile을 생성한다.
13. webhook 생성하기
다음과 같은 설정으로 webhook을 생성했다.
14. GKE credential key 생성하기
Jenkinsfile에서 CREDENTIALS_ID를 gke로 설정해주었으므로 jenkins에서 gke이라는 이름의 credential을 생성했다.
15. Multibranch pipeline 생성하기
cicd라는 이름의 multibranch pipeline을 생성하였다.
Branch sources에는 내 깃헙 레포지토리 주소를 넣어주었다.
16. 실패
파이프라인 생성에 실패하였다. Build image과정에서 생긴 오류인 듯하다. 오류와 관련해 Jenkinsfile, Dockerfile, deployment.yaml 파일을 수정하고 오류 내용을 구글링하며 여러번 빌드를 해보았지만 결국 해결하지 못하였다.
'Docker, Kubernetes 🐳 > [Jenkins Kubernetes] 젠킨스 쿠버네티스 프로젝트' 카테고리의 다른 글
Kubernetes 클러스터에 배포 자동화 (0) | 2022.12.15 |
---|---|
Branch 관리 (ex. master, develop, feature...) (0) | 2022.12.06 |
CI/CD 파이프라인 구축 (0) | 2022.12.03 |