GCP Cloud Functions를 위한 자동화된 배포




이 기사에서는 dev와 prod라는 두 개의 프로젝트가 있는 시나리오를 설명합니다. 개발 프로젝트에서 Cloud Function을 성공적으로 배포하면 프로덕션에도 배포됩니다.

이를 위해 내 기능에 대한 파일을 푸시할 GitHub 리포지토리를 사용할 것입니다. 그러면 Cloud Build가 기능을 배포하도록 트리거됩니다.

먼저 개발 프로젝트용으로만 구성하고(1-7단계) 프로덕션에 대한 배포를 자동화하는 방법(8-10단계)도 설명합니다.

GCP 설명서 참조 — link .


1 단계



Cloud 함수용 GitHub 리포지토리를 만듭니다.

2 단계



함수에 대한 파일을 만듭니다. 간단히 하기 위해 Cloud Functions용Node.js Quickstart에서 샘플을 가져옵니다.

index.js:

/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || Hello World!;
  res.status(200).send(message);
};


패키지.json:

{
  “name”: “sample-http”,
  “version”: 0.0.1
}


3단계



1단계에서 생성한 GitHub 리포지토리로 함수 파일을 푸시합니다. 또한 나중에 트리거에 사용할 dev라는 분기도 생성하겠습니다.

git init
git add .
git commit -m “First commit”
git branch dev
git remote add origin _[LINK-TO-THE-GITHUB-REPO]_
git push -u origin dev


4단계



개발 프로젝트의 Cloud Build 설정으로 이동하여 서비스 계정 및 Cloud Functions에 제안된 역할을 활성화합니다.



5단계



Cloud Build 트리거 페이지로 이동하여 트리거를 만듭니다.
  • 트리거 이름을 입력합니다.
  • 이벤트에 대해 "Push to a branch"가 선택되었는지 확인합니다.
  • "소스"에서 "새 저장소 연결"을 클릭하고 "GitHub(Cloud Build GitHub 앱)"를 선택합니다.
  • GitHub에 권한을 부여하고 1단계에서 생성한 리포지토리를 선택합니다.
  • 빌드를 트리거할 분기를 선택하고 푸시합니다.
  • 만들기를 클릭합니다.



  • 6단계



    빌드에 대한 구성 파일을 만듭니다. 이를 위해 다음과 같은 cloudbuild.yaml을 생성했습니다.

    steps:
    - name: ‘gcr.io/cloud-builders/npm’
      args: [‘install’]
    - name: ‘gcr.io/cloud-builders/npm’
      args: [‘test’]
    - name: ‘gcr.io/cloud-builders/gcloud’
      args: [‘functions’, ‘deploy’, ‘cicdFunction_dev’, ‘ — trigger-http’, ‘ — runtime’, ‘nodejs10’, ‘ — entry-point’, ‘helloWorld’]
    


    GCP 문서 참조 — link

    참고: "helloWorld"는 내 index.js 파일의 함수 이름이고 "cicdFunction_dev"는 배포된 Cloud 함수의 이름입니다.

    7단계



    구성 파일을 GitHub 리포지토리로 푸시하고 Cloud Build가 함수를 배포할 때까지 기다립니다.

    git add cloudbuild.yaml
    git commit -m “Added cloudbuild.yaml”
    git push -u origin dev
    


    Cloud Build History 페이지를 방문하여 빌드 상태 및 세부 정보를 확인할 수 있습니다.

    Cloud Console에서 Cloud Functions 페이지를 확인하면 함수가 배포된 것을 확인할 수 있습니다.



    Cloud Build 구성 파일도 포함되어 있음을 알 수 있습니다.



    8단계



    이제 prod 프로젝트를 설정합니다.

    개발 프로젝트의 Cloud Build 서비스 계정을 IAM 구성원(Cloud Console -> IAM 및 관리자 -> IAM)으로 추가하여 프로덕션 프로젝트에서 Cloud Functions 배포자 및 서비스 계정 사용자 역할을 부여합니다.

    새 역할이 전파될 수 있도록 몇 분 정도의 시간을 주어야 합니다.

    9단계



    프로덕션 프로젝트를 지정하여 Cloud Build 구성 파일에 다른 배포 단계를 추가합니다.

    - name: ‘gcr.io/cloud-builders/gcloud’
      args: [‘functions’, ‘deploy’, ‘cicdFunction_prod’, ‘ — trigger-http’, ‘ — runtime’, ‘nodejs10’, ‘ — entry-point’, ‘helloWorld’, ‘ — project’, ‘PRODUCTION_PROJECT’]
    


    10단계



    업데이트된 구성 파일을 GitHub 리포지토리로 푸시합니다.

    git add cloudbuild.yaml
    git commit -m “Added production deployment step”
    git push -u origin dev
    


    이렇게 하면 기능을 프로덕션 프로젝트에 배포하는 빌드도 트리거됩니다.




    이제부터 이 기능은 개발에 대한 배포가 성공적이면 프로덕션 프로젝트에도 배포될 것입니다(GitHub 리포지토리로 푸시하거나 빌드를 수동으로 트리거한 후).

    참고: 함수의 성공적인 배포는 여전히 코드 내에 논리적 오류가 없음을 보장하지 않습니다. 따라서 함수를 프로덕션 환경에 배포하기 전에 추가 테스트를 포함할 수 있습니다.

    좋은 웹페이지 즐겨찾기