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로 인증을 공유합니다.
| Input | Required | Default | Description |
|---|---|---|---|
project-id | YES | - | GCP 프로젝트 ID |
credentials | YES | - | GCP 서비스 계정 키 JSON. $\{\{ secrets.GCP_SA_KEY \}\} 권장 |
config-path | NO | "/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 이후 사용합니다.
| Input | Required | Default | Description |
|---|---|---|---|
registry | YES | - | Docker registry 호스트 (예: asia-northeast3-docker.pkg.dev) |
config-path | NO | "/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 이후 사용합니다.
| Input | Required | Default | Description |
|---|---|---|---|
project-id | YES | - | GCP 프로젝트 ID |
cluster-name | YES | - | GKE 클러스터 이름 |
cluster-location | YES | - | GKE 클러스터 위치 (zone 또는 region) |
config-path | NO | "/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 안에서.