본문 바로가기

AWS130

[ingress-nginx] restart 시 downtime 해결 - minReadySeconds # 요약 NLB 에서 IP Type의 Target이 정상적으로 Register되는데 3분 이상이 걸리는 이슈가 있다. -> deployment restart로 신규 파드가 정상적으로 뜨더라도, NLB에서 3분동안은 바라볼 수 없음 -> 그 사이에 기존 파드들이 죽기 시작하면 순단이 생김 -> minReadySeconds를 적절한 시간으로 조정하여 해결 # 현재 구조 EKS Cluster 안에서 ingress-nginx 를 사용중이며, Service Annotation을 통해 (정확히는 aws-loadbalancer-controller를 통해) AWS NLB가 생성되어 매핑되어 있다. 이 때, NLB 의 Target으로 ingress-nginx controller pod들의 ip가 등록되어 있음 # res.. 2023. 11. 29.
[Cluster-Autoscaler] Over Provisioning with Terraform # 현상 node의 cpu / memory가 거의 대부분 점유되고 있는 상황에서도 node가 늘어나지 않고 있다. 내가 생각했을 때 CA를 사용하면 노드 리소스가 80% 이상 사용 중일 때 새로 노드 추가 ~ 뭐 이런식으로 진행될 줄 알았는데, 그게 아니었다. 노드가 새로 추가되는건 노드에 자리가 없어서 배치되지 못하는 pod가 존재할 때 … 이다. 사실 쿠버네티스 사용 목적 등을 생각하면 그게 맞다. 하지만 파드가 하나 새로 떠야되는데 그 때서야 노드 프로비저닝을 시작한다? → 느리다. → 어느정도의 over provisioning이 필요하다. # Over Provisioning https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscal.. 2023. 11. 26.
[AWS SNS/꼼수] Confirm되지 않은 Email Subscription 의 ARN 알아내기 # 상황 SNS Topic과 Email 구독 등을 만들어보고, 테라포밍을 진행하려고 한다. 이 때 이미 만들어진 리소스들은 import를 해야하고, SNS Subscription 의 import를 위해서는 ARN을 알아야 한다. 그러나 안타깝게도 아직 confirm되지 않은 구독은 ARN을 확인할 수 없다. 그러나 그냥 Request confirmation (컨펌 해달라고 메일 또 보내는건듯) 을 눌러보면... 위에 ARN이 뜬다.. 별거 아니지만 나름 꿀팁(?) 이라 정리.... 끝 2023. 11. 20.
[keycloak/saml2aws] keycloak google user로 aws cli 사용하기 # 상황 google idp를 통해 만들어진 keycloak user들이 aws cli를 사용하고 싶음 google idp 및 aws client 설정, aws iam role 연동은 끝난 상태 # saml2aws 란? saml 자격증명을 통해 aws 임시 자격 증명을 가져올 수 있는 도구 https://github.com/Versent/saml2aws GitHub - Versent/saml2aws: CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP CLI tool which enables you to login and retrieve AWS temporary credentials using.. 2023. 11. 5.
[Keycloak 21/Terraform] AWS SAML 로그인 연동하기 # provider 설정 2023.10.29 - [공부/IaC] - [Terraform] Keycloak Provider 구성하기 (Keycloak 21) # 로컬 변수 설정 locals { keycloak_url = "" # keycloak 주소 keycloak_realm = "" # aws용 keycloak realm 이름 } # [keycloak] aws client 생성 resource "keycloak_saml_client" "aws" { realm_id = local.keycloak_realm client_id = "urn:amazon:webservices" idp_initiated_sso_url_name = "amazon-aws" assertion_consumer_post_url = "htt.. 2023. 10. 29.
[Keycloak 21] AWS SAML 로그인 연동하기 terraform 버전 2023.10.29 - [공부/Open Source] - [Keycloak 21/Terraform] AWS SAML 로그인 연동하기 # 1. 별도 realm 생성 (Optional) master realm과 별도로 유저/그룹 관리를 할 것이기 때문에 realm을 생성한다. (master realm하고 동일한 유저 관리를 할 것이라면 생략해도 좋을 듯 하다) 나는 infra 라고 만들었다. # 2. aws client 생성 (urn:amazon:webservices) 먼저 aws sp (서비스 제공자) 파일을 다운받자 curl -O https://signin.aws.amazon.com/static/saml-metadata.xml infra realm에서 Clients > Import.. 2023. 10. 29.
[EKS/Java/IRSA] JAVA App에 IRSA 부여할 때 종속성 추가하기 # 상황 IRSA : AWS EKS에 띄운 Application에 Pod 단위로 IAM Role을 부여하는 방법 따라서 AWS 리소스를 사용하는 Application을 쿠버에 띄울 때 IRSA 방식을 사용하면 보안적으로 좋다 근데 자바 앱들이 IRSA로 넣어준 Role을 사용하지 않고, 자꾸 EKS Node의 Role을 사용하다가 권한 에러가 났다. # 결론 sts 종속성을 추가해줘야 한다. dependencies { implementation("software.amazon.awssdk:sts:2.20.140") } # 분석 간단히 풀어 말해, IRSA 방식은 AWS STS 서비스의 AssumeRoleWithWebIdentity API 를 사용해 Role을 부여한다. -> 자바 앱들은 STS 종속성이 없.. 2023. 9. 15.
[PostgreSQL] Docker로 뜬 PostgreSQL DB -> RDS data 마이그레이션 # 상황 EC2 위에 도커로 PostgreSQL DB가 하나 돌아가던게 있었음. -> RDS로 마이그레이션 필요 진행 방식 : EC2 접속 > 도커 접속 > 디비 덤프 > 덤프파일 가져와서 RDS로 Restore EC2 접속은 gossm 사용함. # Docker로 띄운 PostgreSQL DB 접근 및 백업 ## gossm으로 EC2 접속 후 진행 # postgres docker 접속 sudo docker exec -it postgres /bin/bash # 도커 내에서 db backup 후 exit echo $POSTGRES_USER echo $POSTGRES_PASSWORD pg_dumpall -U $POSTGRES_USER > pg_dumpall_20230915.backup exit # 도커 내 백.. 2023. 9. 15.
[RBAC & IRSA] ECR Secret Updater Cronjob 구성 pod가 ECR의 이미지를 받아오는 방법은 여러가지가 있다. 1. EKS에서 보편적이고 권장되는 방법인, EKS Node Role의 권한으로 받아오는 것 2. ECR Token 값을 받아와 Docker Secret으로 저장 후 pod가 해당 Secret을 물고 올라감 나도 당연히 우리 회사의 새 아키텍처에서 1번으로 세팅해두고 싶었다. 그러나! 새 아키텍처에서는 "모든 계정의 클러스터" 에서 "공용 계정의 ECR" 에서 이미지를 받아오는 것으로 결정됐다. 뭐...그래도 Cross Account로 받아오는 방법이 당연 있을텐데, 역시 ECR Repository 단위로 타 계정을 허용해줄 수 있었다. { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPus.. 2023. 9. 4.
[k8s/aws] 쿠버네티스에서 AWS EBS를 볼륨으로 사용할 수 있기까지 본 글은 설명하고자 하는 전체 과정을 러프하게만 설명하며, 각 리소스들에 대한 상세한 설명 및 만드는 방법 등은 모두 생략합니다. # PV, PVC - 쿠버네티스에서의 볼륨 쿠버네티스에서 앱들은 pod 형태로 올라가며, 각 pod에는 1개 이상의 컨테이너가 돌아갑니다. 컨테이너 내 디스크에 존재하는 파일은 유실될 가능성이 높으며, 다른 pod 내 컨테이너와 공유할 수 없습니다. -> 쿠버네티스 클러스터 상의 볼륨 리소스를 사용해 같은 배포 내의 pod들이 같은 볼륨을 바라볼 수 있어야 합니다. 먼저 임시 볼륨 (ephemeral volume) 이 있습니다. 임시 볼륨으로도 파드 재시작 시의 데이터 보존은 가능하지만, 데이터의 영구 보존은 불가합니다. 그치만 영구 보존... 필요하죠? 필요한 경우, PV와.. 2023. 7. 26.