Cloud Run 및 GiitHub Action으로 컨테이너 어플리케이션 자동화 디버깅
11976 단어 CloudRunGitHub Actionstech
소스 코드에서 Cloud Run으로 직접 구축하는 방법
gcloud beta run deploy --source=[DIRECTORY]
이 글은 지원되지 않습니다.자세한 내용은 Google Cloud의 공식 블로그에 설명되어 있습니다.
https://cloud.google.com/blog/products/serverless/build-and-deploy-an-app-to-cloud-run-with-a-single-command
안녕하세요.
여러분 컨테이너 쓰시나요?
자주 사용합니다.최근의 개발은 거의 모두 Docker 컨테이너를 채택하고 있다.
그러면 컨테이너와 Servales, CI/CD 등의 환경 호환성도 매우 좋습니다.
이 글은 내가 가장 좋아하는 클라우드 런과 GiitHub Actions를 이용해 컨테이너 프로그램을 쉽게 자동화하는 디자인 방법을 소개했다.
Cloud Run
Cloud Run is a managed compute platform that enables you to run stateless containers that are invocable via web requests or Pub/Sub events. Cloud Run is serverless: it abstracts away all infrastructure management, so you can focus on what matters most — building great applications. It is built from Knative. Learn more about the Cloud Run platforms
Cloud Run는 GCP가 관리하는 컨테이너 실행 환경이다.
다음과 같은 피쳐가 있습니다.
https://xxxxxxxx.a.run.app/
같은 URL에서 공개할 수 있음GitHub Actions
GitHub Actions는 GiitHub의 CI/CD 환경을 의미합니다.
Giit 창고
.github/workflows/*.yml
에 전용 설정 파일을 설치하면 자동으로 생성, 테스트, 디버깅 등 작업 절차를 할 수 있다.GitHub Marketplace 위에서 자신의 액션스를 공개할 수 있는 구조도 있다.
대상 용기 응용 규격
구상적 용례
위와 같은 앱 개발에서는'main 분기에서push 후 GiitHub Actions를 통해 클라우드 런에 디자인하는 것'이 목표다.
Cloud Run은 물론 콘솔에서 디자인할 수 있지만 이번에는 CI/CD 작업 흐름에서 디자인할 수 있도록 하겠습니다.
사전 준비
GCP 측
Cloud Run API 활성화
디버그에 필요한 권한의 최소 설정
Cloud Run 관리자
run.services.create
run.services.get
run.services.getIamPolicy
run.services.setIamPolicy
run.services.update
Cloud Run 서비스 에이전트iam.serviceAccounts.actAs
storage.objects.get
storage.objects.list
스토리지 관리자(Container Registry의push에 필요)storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
GiitHub 측
Secrets 설정
GCP_PROJECT_ID
GCP_REGION
GCP_SA_KEY
PORT
SERVICE_NAME
설계 워크플로우 설정
그리고 다음 작업 절차를 설정하면main 지점에서push를 하면 자동으로 클라우드 런으로 설계됩니다.
deploy.yml
name: Deploy
on:
push:
branches:
- main
env:
SERVICE_NAME: ${{ secrets.SERVICE_NAME }}
PORT: ${{ secrets.PORT }}
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
GCP_REGION: ${{ secrets.GCP_REGION }}
IMAGE: asia.gcr.io/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.SERVICE_NAME }}:${{ github.sha }}
jobs:
deploy-to-cloud-run:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2
- name: Setup gcloud
uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
with:
version: 'latest'
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Configure docker to use the gcloud cli
run: gcloud auth configure-docker --quiet
- name: Build a docker image
run: docker build -t $IMAGE .
- name: Push the docker image to Container Registry
run: docker push $IMAGE
- name: Deploy to Cloud Run
run: |
gcloud run deploy $SERVICE_NAME \
--image $IMAGE \
--port $PORT \
--project $GCP_PROJECT_ID \
--region $GCP_REGION \
--platform=managed \
--allow-unauthenticated \
--quiet
GitHub Secrets
GiitHub의 Encerypted secrets에 설정된 환경 변수는
${{ secrets.SERVICE_NAME }}
처럼 GiitHub Actions에서 참조할 수 있으므로 프로젝트의 은밀한 정보를 쉽게 처리할 수 있습니다.setup-gcloud
GCP 공식의 Actionssetup-gcloud를 사용하여 gcloud CLI 를 설정합니다.
GCP
project_id
와 service_account_key
만 설정하면 GiitHub Actions 환경에서 gcloud 명령을 실행할 수 있습니다.gcloud auth configure-docker
Container Registry의 인증 정보는 Docker에서 사용하도록 설정되어 있습니다.
이렇게 하면
docker push $IMAGE
이미지push가 Container Registry에 향할 수 있다.Cloud Run으로 설계
gcloud run deploy
명령을 사용하여 Cloud Run을 디버깅할 수 있습니다.Cloud Run에 대한 요청은 대개 8080호 컨테이너로 전송하도록 설정됨
--port $PORT
처럼 임의의 포트 번호를 설정할 수 있습니다.또한 기본적으로 인증되지 않은 접근은 올바르지 않습니다. 모든 접근을 허용하려면 옵션을 사용해야 합니다.
기타 옵션의 해설은 공식 참조에 양보된다.
총결산
Cloud Run과 GiitHub Actions를 사용하여 컨테이너 애플리케이션의 디버깅을 쉽게 자동화할 수 있습니다.
앱 개발에 집중하고 싶은 사람에게는 꼭 추천하는 방법이다.
여러분들의 개발 생활이 더욱 풍부해지면 저는 매우 기쁠 것입니다.
PR
내정된 Cyber Agent가 22 졸업 엔지니어를 모집하고 있습니다!
Reference
이 문제에 관하여(Cloud Run 및 GiitHub Action으로 컨테이너 어플리케이션 자동화 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/konnyaku256/articles/auto-deploy-with-cloudrun-and-githubactions텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)