데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Keycloak 활용한 SSO 구현 : #1 eksctl로 쉽게 시작하는 Kubernetes 클러스터 및 노드그룹 생성하기

      eclipse 24.10.17
      2,088 5 0
      DEVOTEE 요약
      SSO (Single Sign-On)는 사용자가 하나의 계정으로 여러 애플리케이션에 로그인할 수 있게 해주는 기술로, Keycloak은 이를 구현하는 데 유용한 오픈 소스 솔루션입니다. 이 글에서는 Kubernetes 환경에서 Keycloak을 활용해 SSO를 구축하는 방법을 단계별로 설명하면서, eksctl로 Kubernetes 클러스터와 노드그룹 생성, Ingress 컨트롤러와 Let's Encrypt를 통한 보안 설정 등을 포함한 과정을 안내합니다. 이 연재를 통해 SSO 구축이 처음인 분도 Keycloak을 통해 완성도 높은 SSO 환경을 구성할 수 있습니다.
      DEVOTEE 추천 블로그

      Keycloak 활용한 SSO 구현: 시작하기

      오늘날 다양한 애플리케이션을 사용하면서 여러 계정을 관리하는 것은 상당한 부담이 될 수 있습니다.

      이러한 문제를 해결하는 데 중요한 역할을 하는 것이 바로 SSO(Single Sign-On)입니다.

      SSO는 사용자가 하나의 계정으로 여러 애플리케이션에 안전하게 로그인할 수 있도록 해주며, 보안성과 사용자 경험 모두를 개선하는 핵심 기술입니다.


      Keycloak은 오픈 소스 Identity 및 Access Management 솔루션으로, SSO 구현을 손쉽게 도와줍니다.

      다양한 애플리케이션과의 통합이 용이하고, 사용자 인증, 권한 관리, LDAP 통합, 소셜 로그인 기능 등을 간단하게 설정할 수 있어 많은 개발자와 기업이 이를 채택하고 있습니다.


      이 글에서는 Kubernetes 환경에서 Keycloak을 활용하여 SSO를 구축하는 과정을 단계별로 안내합니다.

      클라우드 환경에서 Kubernetes와 eksctl을 이용해 클러스터를 설정하는 것부터 Ingress 컨트롤러와 Let's Encrypt를 통해 HTTPS 보안을 설정하는 방법까지 다룰 예정입니다.

      또한, Keycloak을 설치하고 샘플 애플리케이션과의 SSO 연동을 테스트하는 과정도 상세히 설명하겠습니다.


      SSO 구축이 처음이시거나 Keycloak에 대해 궁금한 점이 있으신 분들이라면, 이 연재를 통해 완성도 높은 SSO 환경을 구성하는 방법을 배울 수 있을 것입니다. 그럼 첫 단계부터 시작해 보겠습니다!


      [연재순서]
      1. eksctl로 손쉽게 시작하는 Kubernetes 클러스터 및 노드그룹 생성 방법

      2. 완벽한 HTTPS 보안: Ingress 컨트롤러와 Let's Encrypt으로 무료 인증서 설정하기

      3. Keycloak 설치부터 설정까지: SSO를 위한 첫걸음

      4. SSO 연동 샘플 애플리케이션 구성하기: 실전 가이드

      5. SSO 연동 테스트: Keycloak과 애플리케이션의 완벽한 통합


      eksctl로 손쉽게 시작하는 Kubernetes 클러스터 및 노드그룹 생성 방법

      다음은 eksctl을 활용하여 Kubernetes 클러스터 및 노드그룹 생성에 대한 설치 가이드 입니다.

      Keycloak 설정에 앞서서 eksctl 를 활용하여 간편하게 기본 인프라 구성을 진행합니다.

      사전준비

      • AWS CLI가 설치되어 있어야 합니다.

      • 적절한 AWS 권한이 있는 IAM 사용자 또는 역할이 필요합니다.

      • kubectl도 설치되어 있어야 Kubernetes 클러스터와 상호작용할 수 있습니다.


      1. 기본 설정

      AWS CLI 설정

      $ aws configure
      #AWS Access Key ID와 Secret Access Key를 입력
      AWS Access Key ID [****************YKU5]: 
      AWS Secret Access Key [****************MTpe]: 
      Default region name [ap-northeast-2]: 
      Default output format [json]: 

      eksctl 설치

      #$ cat << EOF > install_eksctl.sh
      # Install eksctl
      # for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
      ARCH=amd64
      PLATFORM=$(uname -s)_$ARCH
      
      curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"
      
      # (Optional) Verify checksum
      #curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check
      
      tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
      
      sudo mv /tmp/eksctl /usr/local/bin
      
      eksctl version


      2. Cluster.yaml 파일 생성하기

      eksctl 명령어로 Kubernetes 클러스터를 생성할 때 직접 명령어 인수로 설정값을 지정할 수 있지만, cluster.yaml 파일을 사용하면 더욱 복잡한 설정을 한 곳에 체계적으로 관리할 수 있습니다.

      예를 들어, 클러스터의 이름, Kubernetes 버전, VPC 설정, 노드 그룹의 세부 구성, 태그, IAM 역할 등을 모두 정의할 수 있습니다.

      apiVersion: eksctl.io/v1alpha5
      kind: ClusterConfig
      
      metadata:
        name: basic
        region: ap-northeast-2
      vpc:
        cidr: 10.10.0.0/16
      #  autoAllocateIPv6: true
      #  disable public access to endpoint and only allow private access
        clusterEndpoints:
          publicAccess: true
          privateAccess: true
      
      nodeGroups:
        - name: ng-1
          instanceType: mixed
          minSize: 2
          maxSize: 5
      #    availabilityZones: ["ap-northeast-2a", "ap-northeast-2c", "ap-northeast-2d"]
          instancesDistribution:
            maxPrice: 0.11
            instanceTypes: ["t3.2xlarge", "t3.large"] # At least one instance type should be specified
            onDemandBaseCapacity: 0
            onDemandPercentageAboveBaseCapacity: 50
            spotInstancePools: 2
          desiredCapacity: 3
          volumeSize: 100
          volumeType: gp3
          iam:
            withAddonPolicies: {}


      3. K8s 클러스터와 노드그룹 생성하기

      클러스터 생성: cluster.yaml 파일을 작성한 후 eksctl 명령어를 사용하여 해당 파일 기반으로 클러스터를 생성할 수 있습니다.

      유지 관리: cluster.yaml을 사용하면 동일한 설정으로 클러스터를 재생성하거나, 필요할 경우 설정을 수정하여 다시 적용할 수 있어, 클러스터 관리가 체계적으로 이루어집니다.

      확장 및 수정: cluster.yaml을 업데이트하여 노드 그룹을 확장하거나 클러스터의 다른 설정을 변경한 후 다시 적용할 수 있습니다. 이를 통해 클러스터가 변화하는 요구사항에 따라 유연하게 대응할 수 있습니다.

      주요 옵션 설명:
      • --name: 클러스터 이름 (예: my-cluster)

      • --version: Kubernetes 버전 (예: 1.24)

      • --region: AWS 리전 (예: ap-northeast-2, 서울 리전)

      • --nodegroup-name: 노드 그룹 이름

      • --node-type: EC2 인스턴스 타입 (예: t3.medium)

      • --nodes, --nodes-min, --nodes-max: 기본, 최소, 최대 노드 개수

      • --managed: AWS가 관리하는 노드 그룹 생성

      $ eksctl create cluster -f cluster.yaml


      4. K8s 클러스터 및 노드 상태 확인하기

      클러스터가 성공적으로 생성되면, 다음 명령어로 kubectl과 연동합니다.

      $ eksctl get cluster --region ap-northeast-2
      NAME	REGION		EKSCTL CREATED
      basic	ap-northeast-2	True
      
      $ aws eks --region ap-northeast-2 update-kubeconfig --name basic
      Added new context arn:aws:eks:ap-northeast-2:0123123123:cluster/basic to /Users/patrick/.kube/config
      
      $ kubectl get node -o wide
      NAME                                              STATUS   ROLES    AGE    VERSION               INTERNAL-IP    EXTERNAL-IP    OS-IMAGE         KERNEL-VERSION                  CONTAINER-RUNTIME
      ip-10-10-18-87.ap-northeast-2.compute.internal    Ready    <none>   0d1h   v1.30.4-eks-a737599   10.10.18.87    3.39.177.15    Amazon Linux 2   5.10.225-213.878.amzn2.x86_64   containerd://1.7.11
      ip-10-10-45-106.ap-northeast-2.compute.internal   Ready    <none>   0d1h   v1.30.4-eks-a737599   10.10.45.106   3.38.218.197   Amazon Linux 2   5.10.225-213.878.amzn2.x86_64   containerd://1.7.11
      ip-10-10-83-202.ap-northeast-2.compute.internal   Ready    <none>   0d1h   v1.30.4-eks-a737599   10.10.83.202   3.38.184.187   Amazon Linux 2   5.10.225-213.878.amzn2.x86_64   containerd://1.7.11

      이 가이드를 통해 AWS EKS 클러스터와 노드그룹을 손쉽게 생성할 수 있습니다.

      다음 단계에서는 Ingress 컨트롤러 설치와 Let's Encrypt 인증서 발급을 다루겠습니다.


      1. eksctl로 손쉽게 시작하는 Kubernetes 클러스터 및 노드그룹 생성 방법

      2. 완벽한 HTTPS 보안: Ingress 컨트롤러와 Let's Encrypt으로 무료 인증서 설정하기

      3. Keycloak 설치부터 설정까지: SSO를 위한 첫걸음

      4. SSO 연동 샘플 애플리케이션 구성하기: 실전 가이드

      5. SSO 연동 테스트: Keycloak과 애플리케이션의 완벽한 통합

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      eclipse 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기