CollabOps

GCP

Google Cloud Platform 인증, Artifact Registry, GKE 클러스터 설정

GCP 템플릿은 체인 패턴을 따릅니다: 먼저 gcloud-auth로 인증한 후, 후속 Step에서 gcloud-docker-auth 또는 gcloud-setup을 사용합니다.

collabops/gcloud-auth@v1

On-Premise: ❌ — GCP SaaS 연결 필요

GCP 서비스 계정 인증을 설정합니다. 후속 Step에서 CLOUDSDK_CONFIG로 인증을 공유합니다.

InputRequiredDefaultDescription
project-idYES-GCP 프로젝트 ID
credentialsYES-GCP 서비스 계정 키 JSON. $\{\{ secrets.GCP_SA_KEY \}\} 권장
config-pathNO"/workspace/source/.gcloud"gcloud config 저장 경로

예시

서비스 계정 JSON 키 인증

jobs:
  deploy:
    steps:
      - name: checkout
        uses: "collabops/checkout@v2"
        with:
          repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
      # 후속 Step 은 CLOUDSDK_CONFIG 를 통해 자동으로 인증을 공유.
      - name: gcloud-auth
        uses: "collabops/gcloud-auth@v1"
        with:
          project-id: my-gcp-project
          # 서비스 계정 JSON 키 전체를 secret 으로 전달.
          credentials: ${{ secrets.GCP_SA_KEY }}
      - name: sanity-check
        run: gcloud auth list
        image: gcr.io/google.com/cloudsdktool/cloud-sdk:484.0.0-alpine

포인트credentials 는 서비스 계정 키 JSON 전체 문자열 을 그대로 전달. Secret 값에 줄바꿈 그대로 저장(JSON 원문). 권장: 키 회전 가능한 짧은 만료 키 사용, 그리고 최소권한 SA 할당.

collabops/gcloud-docker-auth@v1

On-Premise: ❌ — GCP SaaS 연결 필요

GCP Artifact Registry Docker 인증을 설정합니다. gcloud-auth 이후 사용합니다.

InputRequiredDefaultDescription
registryYES-Docker registry 호스트 (예: asia-northeast3-docker.pkg.dev)
config-pathNO"/workspace/source/.gcloud"gcloud config 경로

예시

Artifact Registry — auth → docker push

jobs:
  publish:
    services:
      - docker
    steps:
      - name: gcloud-auth
        uses: "collabops/gcloud-auth@v1"
        with:
          project-id: my-gcp-project
          credentials: ${{ secrets.GCP_SA_KEY }}
      # registry 호스트 단위로 docker config.json 구성.
      - name: gcloud-docker-auth
        uses: "collabops/gcloud-docker-auth@v1"
        with:
          registry: asia-northeast3-docker.pkg.dev
      - name: build-push
        uses: "collabops/docker-build-push@v1"
        with:
          tags: "asia-northeast3-docker.pkg.dev/my-gcp-project/repo/api:${{ collabops.sha }}"

포인트gcloud-auth 가 반드시 선행. registry 는 Artifact Registry 호스트 (예: asia-northeast3-docker.pkg.dev) — /project/repo 경로는 포함하지 않음. 여러 리전을 사용한다면 각각 별도 Step 으로 인증.

collabops/gcloud-setup@v1

On-Premise: ❌ — GCP SaaS 연결 필요

GKE 클러스터 인증 및 kubectl 컨텍스트를 설정합니다. gcloud-auth 이후 사용합니다.

InputRequiredDefaultDescription
project-idYES-GCP 프로젝트 ID
cluster-nameYES-GKE 클러스터 이름
cluster-locationYES-GKE 클러스터 위치 (zone 또는 region)
config-pathNO"/workspace/source/.gcloud"gcloud config 경로

예시

GKE 클러스터 인증 + kubectl apply

jobs:
  deploy:
    steps:
      - name: checkout
        uses: "collabops/checkout@v2"
        with:
          repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
      - name: gcloud-auth
        uses: "collabops/gcloud-auth@v1"
        with:
          project-id: my-gcp-project
          credentials: ${{ secrets.GCP_SA_KEY }}
      # gke-gcloud-auth-plugin 을 통해 kubeconfig 가 자동 구성.
      - name: gke-setup
        uses: "collabops/gcloud-setup@v1"
        with:
          project-id: my-gcp-project
          cluster-name: prod-cluster
          cluster-location: asia-northeast3
      - name: apply-manifests
        run: |
          kubectl apply -f k8s/
          kubectl -n prod rollout status deployment/api --timeout=5m
        image: bitnami/kubectl:1.30

Zonal 클러스터 (location 에 zone)

jobs:
  deploy:
    steps:
      - name: gcloud-auth
        uses: "collabops/gcloud-auth@v1"
        with:
          project-id: my-gcp-project
          credentials: ${{ secrets.GCP_SA_KEY }}
      - name: gke-zonal-setup
        uses: "collabops/gcloud-setup@v1"
        with:
          project-id: my-gcp-project
          cluster-name: dev-cluster
          # zonal 클러스터는 region 대신 zone 을 그대로 전달.
          cluster-location: asia-northeast3-a
      - name: get-pods
        run: kubectl -n dev get pods
        image: bitnami/kubectl:1.30

포인트cluster-location 은 regional 이면 region(asia-northeast3), zonal 이면 zone(asia-northeast3-a). kubeconfig 는 후속 Step 에 자동 전달 — 별도 export 불필요. 운영 권장: kubectl rollout status 로 배포 완료 확인까지 같은 Job 안에서.

목차