본문 바로가기
C.W.K.
Stream
Lesson 05 of 13 · published

클라우드 배포 — GCP & Azure

~11 min · gcp, azure, oidc

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

동일한 OIDC 패턴, 다른 IAM 이름

GCP — Workload Identity Federation

  1. Workload Identity Pool을 만들어.
  2. GitHub용 OIDC 제공자를 추가하는데, 발급자는 https://token.actions.githubusercontent.com로 설정해.
  3. 서비스 계정을 생성하고 배포 권한을 부여해.
  4. 네 저장소와 매칭되는 속성 조건으로 서비스 계정을 풀에 바인딩해.
  5. CI에서는 google-github-actions/auth 액션을 사용해.

Azure — 서비스 주체의 페더레이션 자격 증명

  1. 앱 등록이나 서비스 주체를 생성해.
  2. 페더레이션 자격 증명에서 서브젝트를 repo:my-org/my-repo:ref:refs/heads/main로 해서 GitHub Actions 항목을 추가해.
  3. 서비스 주체에 역할 할당을 부여해(Contributor, AcrPush 등).
  4. CI에서는 client-id, tenant-id, subscription-id와 함께 azure/login을 사용해.

배포 대상

  • GCP: Cloud Run, GKE, App Engine, Cloud Functions, Cloud Storage.
  • Azure: App Service, AKS, Container Apps, Functions, Static Web Apps.

Code

GCP Cloud Run 배포·yaml
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: google-github-actions/auth@v2
        with:
          workload_identity_provider: projects/123/locations/global/workloadIdentityPools/gha/providers/gha
          service_account: deploy@my-project.iam.gserviceaccount.com
      - uses: google-github-actions/setup-gcloud@v2
      - run: |
          gcloud run deploy my-service \
            --image gcr.io/my-project/my-service:${{ github.sha }} \
            --region us-central1 --platform managed
Azure Web App 배포·yaml
  deploy:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - uses: azure/webapps-deploy@v3
        with:
          app-name: my-app
          package: ./dist

External links

Exercise

어떤 클라우드든 최소 배포 작업 하나로 OIDC 엔드투엔드 설정을 해봐. 첫 시도엔 항상 실패하기 마련이야(트러스트 정책이 까다로운 부분이니까). 인증 액션의 에러 메시지를 꼼꼼히 읽어봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.