23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
오늘날 다양한 애플리케이션을 사용하면서 여러 계정을 관리하는 것은 상당한 부담이 될 수 있습니다.
이러한 문제를 해결하는 데 중요한 역할을 하는 것이 바로 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 환경을 구성하는 방법을 배울 수 있을 것입니다. 그럼 첫 단계부터 시작해 보겠습니다!
eksctl로 손쉽게 시작하는 Kubernetes 클러스터 및 노드그룹 생성 방법
완벽한 HTTPS 보안: Ingress 컨트롤러와 Let's Encrypt으로 무료 인증서 설정하기
Keycloak 설치부터 설정까지: SSO를 위한 첫걸음
SSO 연동 샘플 애플리케이션 구성하기: 실전 가이드
SSO 연동 테스트: Keycloak과 애플리케이션의 완벽한 통합
다음은 eksctl을 활용하여 Kubernetes 클러스터 및 노드그룹 생성에 대한 설치 가이드 입니다.
Keycloak 설정에 앞서서 eksctl 를 활용하여 간편하게 기본 인프라 구성을 진행합니다.
AWS CLI가 설치되어 있어야 합니다.
적절한 AWS 권한이 있는 IAM 사용자 또는 역할이 필요합니다.
kubectl도 설치되어 있어야 Kubernetes 클러스터와 상호작용할 수 있습니다.
$ 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]: #$ 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 versioneksctl 명령어로 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: {}클러스터 생성: 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클러스터가 성공적으로 생성되면, 다음 명령어로 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 인증서 발급을 다루겠습니다.
eksctl로 손쉽게 시작하는 Kubernetes 클러스터 및 노드그룹 생성 방법
SSO 연동 테스트: Keycloak과 애플리케이션의 완벽한 통합
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.