본문 바로가기

반응형

AWS

(55)
[AWS] 폐쇄망 EKS 환경에서 Squid Proxy를 활용하여 HTTP 아웃바운드 통신하기 1. 개요 페쇄망 환경에서 Squid Proxy를 통해 HTTP, HTTPS Proxy를 설정하는 방법에 대해 설명한다. 폐쇄망에서는 NAT Gateway나 NAT Instance를 사용하지 않기 때문에 내부에서 외부 인터넷망으로 접근이 불가능하다. 예를 들어 PG사에 결제한다거나 외부 택배사 모듈과 연동한다거나 등이 불가능한데, 이를 가능하게 하기 위해서는 1. Public Subnet에 프록시 서버를 구성하고 2. EKS Container에서는 프록시 서버를 통해 외부망에 접근함을 명시해줘야 한다. 필자는 Squid Proxy를 통해 폐쇄망에서 외부 인터넷망에 접근하도록 설정하였다. 2. Squid Proxy 설정 설치하는 방법은 인터넷에 아주 많이 나와있고 간단하기 때문에 설치 방법 설명은 생략한다..
[CloudFront] CloudFront Functions를 통해 간단히 인증 처리하기 1. 아키텍쳐 CluodFront를 통해 S3 Image를 다운로드 받을 경우 별도 인증 로직이 없다면 누구나 Download 받을 수 있다. 인증을 구현하는 방법은 다양하지만 CloudFront에 Function을 두어 Header를 검사하여 인증을 처리하도록 해보자. CF에 Image를 다운로드 받을 때 Authorization 헤더를 추가한다. 헤더 통과하면 S3로부터 이미지를 받아오게 된다. → 물론 CDN에 캐싱된 이미지가 있으면 바로 반환한다. Cloudfront Functions은 JavaScript로만 구현이 가능하다. 단순 요청 헤더에 Authorization header 값을 받아오고 이를 원하는 값과 비교하면 끝이다. 헤더가 없을 경우
[CloudFront] S3 Object 변경 시 Cloudfront Invalidation 자동으로 수행하기 1. 개요 보통 정적 컨텐츠를 처리하기 위해 CloudFront와 S3를 연동하는 경우가 많다. 이럴 때 Bucket object를 변경하면 CloudFront의 Edge Location은 이를 알아차리지 못하는데 이럴 때 자동으로 변경된 Object를 자동으로 Invalidation 해주는 방법에 대해서 알아보자. 2. 방법 소개 1. 서버 혹은 사용자가 Bucket의 Image를 변경한다. 2. S3 Bucket에 ObjectCreation 이벤트가 발생 시 Lambda 함수를 Trigger 할 수 있다. 3. Lambda 함수를 Event를 전달받아 어떤 Object가 생성/변경되었는지 확인할 수 있다. 4. Object가 새로 생성되는 이벤트는 무시하며, Object가 변경되는 이벤트일 경우에만 ..
[EKS] CA의 대체, Karpenter 사용 후기 요즘 EKS를 사용하고 있는 회사들이라면 Karpenter에 대해서 한번씩은 들어봤을 것이다. Karpenter는 EC2를 생성 및 오토스케일링 해주는 오픈소스 서비스로 Cluster Autoscaler에 대한 단점들을 보완해준다고 많이 설명되어 있다. Cluster Autoscaler에 비해 Karpenter가 가지는 장점 및 단점들은 다양한 매체나 블로그 글에 많이 소개가 되어 있기 때문에 Karpenter에 대한 소개는 아주 간단히 진행하고 현재 Karpenter를 어떻게 사용하고 있고 Karpenter를 사용할 때 주의 사항 및 간단한 팁들을 소개할 예정이다. # 1. Karpenter 구성 요소 Karpenter는 크게 다음의 요소로 구성되어 있다. - Karpenter(Pod) : 실질적으로 ..
[EKS] CoreDNS 운영 시 소소한 팁 (Rcode, ndots) 1. 개요 필자의 회사는 모니터링 서비스로 Datadog을 이용하고 있는데 CoreDNS 쪽에서 특이사항을 발견했다. 바로 rcode 중 nxdomain 수치가 높다는 점이였다. nxdomain는 non-existing domain name의 약자로 domain name이 존재하지 않다는 뜻이다. 즉, CoreDNS 에서 질의를 했을 때 domain name이 존재하지 않는 메트릭이 다소 발생한다는 뜻이다. 2. 원인 원인은 다음과 같다. bash-4.2# cat /etc/resolv.conf search testdemoapp-dev.svc.cluster.local svc.cluster.local cluster.local ap-northeast-2.compute.internal nameserver 172..
[Istio] EKS 환경에서 Istio로 여러개의 ALB, NLB 모두 사용하기 1. 개요 현업에서 외부 트래픽 인입을 받아내기 위해 Istio를 사용중인데, default 설정을 사용하면 CLB가 설치된다. EKS로 쿠버네티스를 운영중인 환경에서 Istio로 ALB, NLB를 각 환경에 맞게 사용하고 싶을 경우에 어떻게 해야 할까? ## 전제 조건 ## - AWS Load Balancer Controller 설치 AWS Load Balancer Controller는 Kubernetes에서 YAML 파일을 배포하는 것 만으로 AWS Load Balancer Controller 파드가 이를 감지하여 AWS API를 사용하여 요청한 대로 Load Balancer를 설치 및 구성해주는 오픈소스이다. 해당 AWS Load Balancer Controller가 설치되어 있지 않다면 내장 설치..
[EKS 애드온 #2] Cluster Autoscaler Helm으로 설치하기 Cluster Autoscaler는 Cluster의 NodeGroup을 자동으로 스케일링 해주는 오픈소스 Addons이다. 본 문서는 설치까지만 안내할 뿐 자세한 사용법에 대해서는 안내하지 않는다. Github : https://github.com/kubernetes/autoscaler Cluster Autoscaler IAM Role 설정 data "aws_iam_policy_document" "cluster-autoscaler" { statement { sid = "" effect = "Allow" resources = ["*"] actions = [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances",..
[EKS 애드온 #1] External DNS Helm으로 설치하기 External DNS IAM Role 설정 (IRSA) 본인은 Terraform으로 생성하였지만 AWS 공식문서에 나와있는대로 eksctl로 설치해도 무방하다. 문서 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-set-up-externaldns/ 지원 내역 본인은 Istio와 AWS LoadBalancer Controller에서 사용해보았다. https://github.com/kubernetes-sigs/external-dns#deploying-to-a-cluster Helm으로 external-dns 설치 위의 Github으로 접속하여 values.yaml을 Local로 가져온다. 이는 본인 환경에 맞게 values.yaml을 변경..

반응형