GCP Cloud Engineer - 72

2024-04-20

  • Cloud
  • GCP

CI Pipeline

지속적 통합 파이프라인과 Google Cloud의 활용

  • 지속적 통합 파이프라인

    • ㅁ 코드를 저장소로 가져오고, 모든 단위 테스트를 실행

    • ㅁ 테스트 통과 후, 배포 패키지가 Docker 이미지로 빌드

    • ㅁ Docker 이미지는 Container Registry에 저장 후 배포 가능

    • ㅁ 추가 단계로 코드 린트, 정량적 분석(SonarQube 사용), 통합 테스트, 테스트 보고서 생성, 이미지 스캔 포함

  • Google Cloud의 구성요소

    • Cloud Source Repositories: 비공개 Git 저장소 호스팅

    • Cloud Build: Google Cloud 인프라에서 빌드 실행, 소스 코드를 Cloud Storage, Cloud Source Repositories, GitHub, Bitbucket에서 가져와 빌드

    • Cloud Build 트리거: 소스 코드 변경 시 자동 빌드 시작

  • Container Registry의 기능

    • ㅁ Docker 이미지나 배포 패키지 관리, 취약점 분석 수행

    • ㅁ 세분화된 액세스 제어를 통한 액세스 주체 및 대상 결정

  • Google Cloud의 도구

    • Cloud IAM: 저장소 관리 및 접근 권한 부여

    • Pub/Sub: 저장소 이벤트에 대한 메시지 게시 설정

    • Cloud DebuggerLogging: 프로덕션에서 디버깅 및 로깅

    • ㅁ 연결된 저장소: GitHub 또는 Bitbucket 저장소를 Cloud Source Repositories와 동기화

  • Cloud Build의 활용

    • ㅁ 모든 언어로 소프트웨어 빠르게 빌드

    • gcloud builds submit: 빌드 제출 및 원격 실행, 이미지 생성 시 --tag 사용

    • ㅁ 빌드 트리거: 코드 푸시 시 저장소 감시 및 컨테이너 빌드, Maven, Docker 지원

  • Container Registry와 Cloud Build

    • Container Registry: Docker 저장소 호스팅, 빌드된 이미지 자동 저장

    • ㅁ 이미지 태그 지정 및 Docker 명령어를 사용한 이미지 수출 및 가져오기

    • Binary Authorization: 신뢰할 수 있는 컨테이너만 GKE에 배포 보장, Kritis 사양 기반

Infrastructure as Code

코드형 인프라(IaC)와 Terraform의 활용

  • 코드형 인프라의 필요성

    • ㅁ 클라우드 컴퓨팅으로의 전환은 전통적인 온프레미스 방식과 다른 사고방식 요구

    • ㅁ 클라우드는 리소스를 대여하여 사용하며 필요하지 않을 때 즉시 종료 가능

    • ㅁ 다수의 소형 머신을 사용하고 장애를 예상하여 설계하는 수평 확장을 지향

  • 코드형 인프라의 이점

    • ㅁ 프로비저닝, 구성, 배포 작업을 자동화하여 위험 최소화 및 사용자 실수 감소

    • ㅁ 반복 가능한 배포와 확장성, 속도 지원

    • ㅁ 스크립트나 Terraform 같은 선언적 도구를 사용하여 자동화 달성

  • Terraform의 기능

    • ㅁ 인프라의 빠른 프로비저닝 및 삭제 지원

    • ㅁ 지속적 통합 파이프라인에 통합되어 지속적 배포를 매끄럽게 지원

    • ㅁ 인프라 프로비저닝 자동화를 통해 주문형으로 프로비저닝 가능

  • Terraform의 구현

    • ㅁ Google Cloud 및 다른 IaC 도구(Chef, Puppet, Ansible, Packer)를 지원

    • ㅁ Terraform은 Google Cloud 리소스를 프로비저닝할 수 있는 오픈소스 도구

    • ㅁ 선언적 구성 파일을 사용하여 가상 머신, 컨테이너, 스토리지, 네트워킹 등을 프로비저닝

    • ㅁ HashiCorp 구성 언어(HCL)로 블록, 인수, 표현식을 사용하여 리소스 기술

  • Terraform의 선언적 접근

    • ㅁ 사용자는 애플리케이션에 필요한 리소스를 선언적 형식으로 지정

    • ㅁ 구성을 배포하면 Terraform이 필요한 조치를 취함

    • ㅁ 배포를 여러 번 반복해도 동일한 결과를 얻을 수 있으며, 배포 전체를 쉽게 삭제 가능

  • Terraform 구성의 구성

    • ㅁ 구성은 템플릿을 사용하여 모듈화 가능, 리소스를 재사용 가능한 구성요소로 추상화

    • ㅁ Terraform 언어의 구문은 객체를 나타내며, 블록은 0개 이상의 라벨을 가질 수 있음

    • ㅁ 블록은 인수와 중첩된 블록을 선언할 수 있는 본문을 포함

GCP Cloud ...

GCP Cloud ...