Day39 (5.5)

ShinJuYong·2022년 5월 6일
0

camp

목록 보기
42/44
post-thumbnail

k8s Secret

💡 시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 이를 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다. 시크릿을 사용한다는 것은 사용자의 기밀 데이터를 애플리케이션 코드에 넣을 필요가 없음을 뜻한다.
시크릿(Secret)

Rolling Deploy

현재 운영중인 서버 중에서 하나의 컴퓨터를 꺼줍니다.

껐던 컴퓨터에 새로운 버전을 담아 배포합니다. 두번째 컴퓨터를 꺼줍니다.


CI / CD

Cloudbuilde

docker-compose(Nest.js)

version: '3.7'
# Product
services:
  # 서비스명
  my-backend:
    platform: linux/x86_64
    image: 클라우드의 레지스트리 버전 이미지 위치
    # Dockerfile
    build:
      # 위치
      context: .
      dockerfile: Dockerfile
    ports:
      - 3001:3001

cloudbuild.yaml

steps:
  # 1단계 쿠버네티스 레지스트리 이미지 저장소를 향하도록 build
  - name: docker/compose:1.29.0
    args: 
      - -f
      - docker-compose 경로명
      - build
  # 2단계  쿠버네티스 레지스트리 이미지 저장소로 Push
  - name: docker/compose:1.29.0
    args:
      - -f
      - docker-compose 경로명
      - push
  # 3단계 쿠버네티스 pod 빌드하기
  - name: 'gcr.io/cloud-builders/kubectl'
    args: 
      - set
      - image
      - deployment/배포된 이름
      - name / 바꿀 이미지이름     
    env:
      - CLOUDSDK_COMPUTE_ZONE=asia-northeast3
      - CLOUDSDK_CONTAINER_CLUSTER=클러스터명

환경설정

💻 : Mac

최초 설치 및 패스설정

Cloud SDK
설치후
~/.zshrc에 패스설정

export GOOGLE_CLOUD_SDK_PATH=[google-cloud-sdk를 넣어둔 경로]
export PATH=$PATH:$GOOGLE_CLOUD_SDK_PATH/bin

SDK 인증

  1. gcloud init을 터미널에 친후 구글계정 연결.
  2. 사용할 프로젝트(ID로 뜸)연결
  3. 위치는 northeast3-a로~(Seoul)

Mac OS환경에서 도커-GCP가 연결

그 후, docker와 gcp를 연결한다
docker Desktop이나 Docker가 현재 pc에 Online인 경우에만 작동됩니다.

  1. gcloud components install docker-credential-gcr
    도커와 연결할 컴포넌트 설치

  2. docker-credential-gcr configure-docker 도커로 연결할 config파일 생성.

  3. gcloud auth configure-docker 도커 인증 설정

최초배포 Build 및 Push작업

docker-compose -f (compose할 yaml파일) build를 통해
Google Container Registry에 빌드합니다

image: [지역]/[프로젝트 ID]/[디렉토리명]:버전 (image에 들어갑니다)

(Nest.js만 배포했습니다)

그후 build가 완료되면
docker-compose -f (compose할 yaml파일) push를 통해 푸시합니다.

GKE 클러스터 만들기

Kubernetes Engine에 들어간뒤

만들기를 눌러 클러스터를 만드는 메뉴에 들어갑니다..

그후 Autopilot을 선택해 POD조절k8s에 할당합니다.

POD 배포

작업부하에 들어가 배포를 누른후,
기존 컨테이너 이미지를 활용 (Google Container Registry)에 푸쉬된 이미지
를 선택한뒤

.env에 관리하던 환경변수를 작성해서 배포를 완료합니다.

Ingress

배포가 끝난 POD는 Ingress를 통해 외부로 공개합니다.

서비스 및 수신에 들어가 인그레스 만들기를 통해 만들기를 시작합니다.
그후 Frontend config에서 인증서를 만든후
(도메인은 직접 구입한 도메인을 입력합니다.)
공개합니다
그다음 Cloud DNS에 들어가 A레코드에 해당 Ingress IP주소를 등록합니다.

주의

IngressDefault Health CheckGET("/")으로 이루어지므로 해당 Endpoint가 있어야만 체크가 가능합니다.

0개의 댓글