본문 바로가기
Devops/Keycloak

[Keycloak] Keycloak이란

by dev_ss 2024. 11. 21.

 

 

 


 

Keycloak

 

Keycloak은 RedHat에서 개발한 오픈소스 IAM(Identity and Access Management) 솔루션이다.

 

 

 

현대 애플리케이션에서 필수적인 사용자 인증과 접근 제어를 손쉽게 구현할 수 있게 해주는 도구이며, SSO(Single Sign On) 지원, 다양한 프로토콜 활용(Oauth, OIDC 및 SAML 등)용이한 소셜 로그인 통합과 같은 장점으로 많은 기업에서 채택하여 사용하고 있다.

 

 

 

간단한 예시로는 대시보드 오픈소스(Kibana, Grafana 등)를 사용하면, 사용하는 오픈소스가 늘어나면서 더불어 사용자까지도 늘어나게 된다.

 

이는 사용자 관리에 있어서 관리자의 부하가 점점 늘어날 수밖에 없다.

 

그러할 때 Keycloak을 활용하면, 사용자 통합 관리가 가능해지고, 이는 업무 부하를 낮출 수 있게 되는 것이다.

 


설치

 

쿠버네티스 환경에서는, 아래 yaml을 활용하여 간단하게 설치가 가능하다.

 

apiVersion: v1
kind: Service
metadata:
  name: keycloak
  labels:
    app: keycloak
spec:
  ports:
    - name: http
      port: 8080
      targetPort: 8080
      nodePort: <접속할 노드 포트>
  selector:
    app: keycloak
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: keycloak
  labels:
    app: keycloak
spec:
  replicas: 1
  selector:
    matchLabels:
      app: keycloak
  template:
    metadata:
      labels:
        app: keycloak
    spec:
      containers:
        - name: keycloak
          image: quay.io/keycloak/keycloak:25.0.4
          args: ["start-dev"]
          env:
            - name: KEYCLOAK_ADMIN
              value: "admin"
            - name: KEYCLOAK_ADMIN_PASSWORD
              value: "1234"
            - name: KC_PROXY
              value: "edge"
          ports:
            - name: http
              containerPort: 8080
          readinessProbe:
            httpGet:
              path: /realms/master
              port: 8080
          volumeMounts:
            - name: keycloak-data
              mountPath: /opt/keycloak/data
      volumes:
        - name: keycloak-data
          emptiDir: {}

 

 

오브젝트를 생성 후 선언한 NodePort로 접속한다면 아래와 같이 로그인 창이 나오는 것을 볼 수 있다.

 

 

 

환경변수로 주입했던 관리자의 아이디 및 비밀번호(admin / 1234)로 로그인하면 메인 대시보드를 확인할 수 있다.

 

 

 

※ Ingress 적용 시 아래 Reference를 참조하면 된다.

 

https://www.keycloak.org/getting-started/getting-started-kube

 

Kubernetes - Keycloak

A realm in Keycloak is equivalent to a tenant. Each realm allows an administrator to create isolated groups of applications and users. Initially, Keycloak includes a single realm, called master. Use this realm only for managing Keycloak and not for managin

www.keycloak.org

 

 

설치를 마쳤다면, 실제 운영에 들어가기 전, 아래 목록을 하나씩 수행하는 것이 권고된다.

반응형