Keycloak CI/CD 자동화 배포

Keycloak CI/CD 자동화 배포

1️⃣ Helm Chart를 통한 GitOps 배포

1. Helm이란?

Helm은 Kubernetes 애플리케이션을 정의하고 설치하는 패키지 관리자입니다.
Keycloak도 Helm Chart를 사용하면 선언적이고 반복 가능한 방식으로 쉽게 배포할 수 있습니다.


2. 기본 Helm Chart 예제 (Bitnami)

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install keycloak bitnami/keycloak \
  --set auth.adminUser=admin \
  --set auth.adminPassword=admin123 \
  --set postgresql.enabled=true

3. GitOps 구조와 Helm 연동

Git Repository (Helm values.yaml)
        ↓
   GitOps Tool (ArgoCD/Flux)
        ↓
   Helm Chart → Kubernetes
        ↓
    Keycloak Cluster 배포

4. values.yaml 예시

auth:
  adminUser: admin
  adminPassword: admin123

replicaCount: 2

postgresql:
  enabled: true

✅ Git에 이 파일을 커밋하고, ArgoCD/Flux가 자동으로 Sync 합니다.


2️⃣ ArgoCD, Flux와 연동

1. ArgoCD + Helm 연동 구조

[Git Repo]
   ↓
[ArgoCD App] ←─── Helm Chart 관리
   ↓
[Kubernetes Cluster]
   ↓
[Keycloak + DB]

2. ArgoCD App 설정 예시

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: keycloak
spec:
  project: default
  source:
    repoURL: https://github.com/your-org/keycloak-infra
    targetRevision: HEAD
    path: helm/keycloak
    helm:
      valueFiles:
        - values.yaml
  destination:
    server: https://kubernetes.default.svc
    namespace: keycloak
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

자동화: Git의 변경사항이 → Helm Chart 업데이트 → Keycloak 자동 배포!


3. Flux 연동 구조도

Flux는 Git → HelmRelease → Kubernetes 순으로 배포합니다.

Git
└─── HelmRelease (CRD)
     └─── Keycloak Helm Chart
          └─── Deployed to Cluster

3️⃣ CRD를 이용한 Realm 정의 (Keycloak Operator)

1. Keycloak Operator란?

Keycloak Operator는 Kubernetes CRD를 활용해 Keycloak Realm, Client 등을 선언적으로 정의할 수 있게 해줍니다.


2. Keycloak Realm CRD 예시

apiVersion: keycloak.org/v1alpha1
kind: KeycloakRealm
metadata:
  name: my-realm
  namespace: keycloak
spec:
  instanceSelector:
    matchLabels:
      app: keycloak
  realm:
    id: my-realm
    realm: my-realm
    enabled: true
    displayName: "My Dev Realm"

3. Keycloak Operator 배포 후 구성 구조

Git
└─── KeycloakRealm.yaml
     └─── Keycloak Operator
          └─── Keycloak Server
               └─── Realm 자동 생성

4. Client CRD 예시

apiVersion: keycloak.org/v1alpha1
kind: KeycloakClient
metadata:
  name: react-client
spec:
  realmSelector:
    matchLabels:
      realm: my-realm
  client:
    clientId: react-app
    secret: abc123
    redirectUris:
      - https://myapp.com/*
    enabled: true

4️⃣ Git 기반 Realm/Client 관리

1. Git에 Realm 정의 버전관리하기

  • keycloak/realm.yaml
  • keycloak/client.yaml
  • keycloak/users.yaml

Git을 통해 모든 인증 구성을 코드로 관리할 수 있습니다.
변경사항은 GitOps 툴을 통해 자동으로 배포됩니다.


2. GitOps 기반 인증 구성 흐름

1. Git 커밋 (Realm/Client YAML)
         ↓
2. GitOps 툴 (ArgoCD / Flux)
         ↓
3. Keycloak Operator
         ↓
4. Keycloak Realm/Client 자동 생성

3. 실전 Git 구조 예시

keycloak-configs/
├── base/
│   ├── keycloak.yaml
│   └── realm.yaml
└── overlays/
    └── dev/
        └── values.yaml

✅ 요약 정리

주제 내용
Helm 선언적 설치, GitOps 연동
ArgoCD/Flux Git 상태와 클러스터 상태를 자동 동기화
Keycloak Operator Realm, Client를 Kubernetes CRD로 정의
Git 기반 관리 인증 시스템도 코드로 관리 (IaC)

📌 추천 실습 흐름

  1. Helm Chart로 Keycloak 설치
  2. ArgoCD App 설정으로 Git 연동
  3. Realm/Client를 CRD로 Git에 정의
  4. Keycloak Operator로 자동 배포 확인

RSS Feed
마지막 수정일자