본문 바로가기

클라우드/클라우드(Public Cloud)

클라우드 GCP 쿠버네티스 Google Kubernetes Engine ( GKE ) 3 / CI 와 CD

https://daaa0555.tistory.com/330

 

쿠버네티스 Google Kubernetes Engine ( GKE ) 2

https://daaa0555.tistory.com/329 쿠버네티스 Google Kubernetes Engine ( GKE ) 1 쿠버네티스 Google Kubernetes Engine ( GKE ) Google Cloud에서 제공하는 Kubernetes에서 컨테이너화된 애플리케이션을..

daaa0555.tistory.com

 

CI/CD

인프라, 어플리케이션에  따라 방법이 다르다

 

CI: Continues Integrity

파이썬 코드를 작성하고 깃에 올리고 빌드, 파이썬 코드를 가지고 도커 이미지를 만들었고 실제 쿠버네티스에 파드로 배포를 수동으로 했다 -> 이것을 자동화

파이썬을 최종적으로 사용가능한 이미지로 만드것 (언어마다 절차 다를 수 있음)

이미지 작성하고 빌드 이미지를 푸시한다 레지스트리에 이것을 deploy(배포)한다

 

 

CD: Continues Delivery/Deployment

레지스트리에 올라있는 이미지를 실제로 쿠버네티스에 배포하는 과정을 자동화

도커파일로는 불가능 크랄우드 빌드 파일로 가능

 

CI/CD 도구들

Docker Hub : Autobuild

GitLab: CI/CD

GitHub : Action, Circle CI

 

 

 


 

레지스트리에 이미지 push

 

깃으로 myflask 이미지를 push하면 컨테이너 이미지를 자동으로 빌드하고, 그 이미지를 자동으로 레지스트리에  push, push하면 자동으로 이미지까지 만들어짐

 

 

 

저장소 추가

 

gcloud SDK로 인증

 

git add commit

 


 

 

트리거 생성

 

코드를 변경해서 push 하게 되면 자동으로 브랜치에 push (이벤트), 브랜치에 push가 되면 트리거가 자동으로 작동해서, 사용자의 git 저장소에 있는 Dokerfile을 읽어서 build한다.  그 이미지를 사용자의 레지스트리에 자동으로 push  한다

 

Dockerfile 은 루트에 있기 때문에 따로 지정할 필요 없지만

다른 디렉토리에 있는 경우 따로 지정해준다, Dockerfile 이름이 다르면 이름도 지정해준다

 

$COMMIT_SHA \  :  commit의 hash값이 tag로 붙게된다

사용자 대신 이 명령어를 실행 시켜준다

tag를 이용하 깔끔하게 관리 하는것을 권장

 

 


권한 부여

서비스 계정 권한에서 서비스계정을 사용설정 시켜줌 (sa 계정)

사용자가 해야하는것을 대신해서 하기 떄문에 권한 부여가 필요

 

 

 


트리거 실행

 

master 브랜치에 push를 해야 이벤트가 발생하여 트리거가 작동해서 build가 작동 하는데

실행을 클릭하면 강제로 이벤트를 발생시켜 build를 진행 시킨다

 

 

새로 생성된 이미지를 확인

 

 

index.py 파일을 수정 후 git add, commit, push를 해본다

 

이벤트가 발생하여 build가 되었다 (새로운 이미지가 생성된다)

 

 


GKE의 여러가지 기능

Prometheus 모니터링이나 Elastic Stack 로깅 구현 하지않아도  제공

관리형 쿠버네티스를 사용하면 편리한 점이 많다

 

 

 


클러스터 구성원 추가

 

 

다른 사용자에게 클러스터를 읽을수있는 권한 주기 (다른 구글 계정 추가)

 

 

권한이 부여 된 사용자의 메일에서 Cloud Console 열기

 

 

 읽기 권한 있음, 삭제 권한 없음

 

 

 

 

 


 

CD

 

 

Cloud Build를 사용한 GitOps 방식의 지속적 배포  |  Kubernetes Engine  |  Google Cloud

Cloud Source Repositories에 Git 저장소 만들기 이 섹션에서는 이 가이드에 사용되는 두 개의 Git 저장소(app과 env)를 만들고 app 저장소를 샘플 코드로 초기화합니다. Cloud Shell에서 두 개의 Git 저장소를 만

cloud.google.com

 

 


+) 추가

 

트리거를 만들 때 도커 파일이 있고 클라우드 빌드 구성 파일이 있다

Dockerfile은 오직 도커 이미지만 만들 수 있는데 클라우드 빌드를 하게 되면 여러가지 언어들을 빌드하고 자동화 할 수 있다

CI ,CD 도구마다  전용 클라우드 빌드 구성파일이 다르다 

 

https://cloud.google.com/build/docs/building/build-containers

 

컨테이너 이미지 빌드  |  Cloud Build 문서  |  Google Cloud

이 페이지에서는 Docker 이미지를 빌드하고 저장하도록 Cloud Build를 구성하는 방법을 설명합니다. Cloud Build를 처음 사용하는 경우 빠른 시작 및 빌드 구성 개요를 먼저 읽어보세요. Cloud Build는 작업

cloud.google.com

 

https://cloud.google.com/build/docs/deploying-builds/deploy-gke

 

GKE에 배포  |  Cloud Build 문서  |  Google Cloud

이 페이지에서는 Cloud Build를 사용하여 Kubernetes에 애플리케이션을 배포하는 방법을 설명합니다. Cloud Build는 컨테이너식 애플리케이션을 GKE 클러스터에 배포 할 수 있는 gke-deploy 빌더를 제공합니

cloud.google.com