퍼블릭 CI에 의존하지 않고, 사내 망 내부에서 완전한 GitHub Actions 생태계를 운영하는 방법.
GitHub Actions의 워크플로를 완전 사내망 Kubernetes 클러스터 내부에서 실행되도록 구성하며,
GitHub Webhook → K8s 서비스 Mesh → Runner Pod 자동 생성 → Argo CD 자동 배포까지 연결하는
GitHub Actions Runner Mesh 구조를 구축합니다.
⸻
🎯 목적
• GitHub Actions 워크플로를 사내망 Kubernetes 클러스터 내부에서 실행
• 워크플로별로 개별 Runner Pod를 생성하고 Job 단위로 Auto Terminate
• Runner Autoscaler + GitHub Webhook + Service Mesh + Namespace Policy 통합 운영
• Argo CD와 연계하여 PR 기반 Preview 환경 자동 배포
⸻
⚙️ 핵심 구성
구성 요소 도구/패턴 역할
GitHub Actions Runner actions-runner-controller GitHub Workflow를 K8s Runner Pod로 처리
GitHub Webhook Ingress → EventRouter PR/Push 이벤트 트리거 수신
Runner 스케일링 HorizontalRunnerAutoscaler Job Queue 상황에 따라 Runner 수 동적 확장
CI 실행 환경 분리 Namespace per Team 팀별 격리된 Runner와 빌드 환경
CI 파이프라인 배포 Argo CD + ApplicationSet CI Job 결과에 따라 Preview 환경 생성
⸻
🔩 핵심 구성도
graph TD
A[GitHub PR 생성] --> B[Webhook Ingress Trigger]
B --> C[RunnerController: RunnerDeployment 생성]
C --> D[Runner Pod 생성 (Job 단위)]
D --> E[CI Workflow 실행]
E --> F{배포 필요?}
F -- Yes --> G[Argo CD Sync Preview Namespace]
F -- No --> H[Runner Pod Auto Terminate]
⸻
📄 주요 리소스 예시
1) RunnerDeployment
apiVersion: actions.summerwind.dev/v1alpha1
kind: RunnerDeployment
metadata:
name: team-a-runner
spec:
replicas: 0
template:
spec:
repository: your-org/your-repo
image: your-private-ci-runner:latest
resources:
limits:
cpu: "2"
memory: "4Gi"
2) HorizontalRunnerAutoscaler
apiVersion: actions.summerwind.dev/v1alpha1
kind: HorizontalRunnerAutoscaler
metadata:
name: runner-autoscaler
spec:
scaleTargetRef:
name: team-a-runner
minReplicas: 0
maxReplicas: 10
scaleUpTriggers:
- githubEvent:
event: pull_request
repository: your-org/your-repo
⸻
🧪 GitHub Workflow 예시
name: internal-ci
on:
pull_request:
types: [opened, synchronize]
jobs:
build:
runs-on: self-hosted
container:
image: your-registry/internal-builder:latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Test
run: ./run-tests.sh
⸻
🚀 실전 적용 Tips
• Runner Pod에 팀별 Label 부여 → 네트워크/리소스 격리 가능
• Private Package Cache용 Sidecar 컨테이너 사용 → 빌드 속도 향상
• Job 실행 후 Pod Auto Terminate 설정 → 자원 낭비 최소화
• CI 결과를 Argo CD App으로 전파 → 배포 파이프라인 자동 연계
• Keycloak OIDC 연계로 팀별 인증 연동 → 사내 보안 정책 충족
⸻
✅ 도입 효과
• GitHub Actions의 강력한 에코시스템은 그대로, 사내 보안 요건을 충족
• 외부 인터넷 연결 없이도 PR 기반 테스트/배포 자동화 가능
• 팀별 권한 관리·자원 할당·비용 최적화 용이
• GitOps 기반 인프라/CI/CD 완전 일체화 가능
⸻
'IT & Tech 정보' 카테고리의 다른 글
🧠 131. Kubernetes CronJob을 Argo Events로 확장하여 이벤트 중심 스케줄링 구현하기 (0) | 2025.05.30 |
---|---|
GitHub Actions에서 Nix를 이용한 완전 불변형(Immutable) 빌드 환경 구축기 (0) | 2025.05.30 |
검색과 클릭에서 ai의 시대로 (0) | 2025.05.30 |
Feature Store CI/CD as Code (0) | 2025.05.30 |
AI-Driven Predictive Autoscaling as Code (0) | 2025.05.30 |