전체 글 82

[EKS] "Unhandled Error" err="couldn't get current server API group list: the server has asked for the client to provide credentials" 해결하기

테스트용 EC2에서 EKS 쪽 작업할 게 생겨 IAM Role 할당 -> ~/.kube/config 설정 후API 요청을 보냈더니 에러가 났다. 평소 쿠버네티스 세팅은EC2에 IAM Role 할당 (Administrator 혹은 최소한의 Node Role)aws eks update-kubeconfigaws-auth configmap에 IAM Role 추가 (혹은 IAM Access Entries에 Role 추가)이 세 가지만 하면 문제 없었는데,, 다 돼있는데도 안돼서 당황했다.그래서 이번 글에서는 겉핡기식으로 알고 있던 쿠버네티스 인증에 대해 조금 자세히 다뤄보고 왜 저런 이슈가 발생했는지 기록해놔야겠다 라는 생각이 들었다. 쿠버네티스 인증Kubernetes uses client certificate..

AWS 2024.10.04

쿠버네티스 Auto Scaling #2 (CA, Karpenter)

서론 앞서 쿠버네티스 Auto Scaling #1 (HPA, VPA)에서 Pod에 대한 Auto Scaling을 다뤘다. 당연한 얘기지만 충분한 Pod를 배치하기 위해선 그에 맞는 Node의 리소스가 받쳐줘야 한다. 그렇다고 확장될 경우를 대비하여 미리 용량이 큰 노드를 준비해놓는다면 리소스 낭비로 이어지기 때문에 적절한 시기에 필요한 만큼 확장/축소시켜 트래픽을 처리하는 것이 바람직하다. 이때 활용할 수 있는 것이 바로 클러스터 오토스케일링 기능이다. (참고로 EC2 타입별 띄울 수 있는 최대 Pod 개수는 정해져있다. 링크) 클러스터의 오토스케일링을 위한 솔루션에는 크게 Cluster Autoscaler, Karpenter 이외에도 nOps의 Compute Copilot, CAST AI, NeApp ..

Kubernetes 2024.03.11

AWS Lambda@Edge를 활용한 실시간 이미지 리사이징

개요 본 포스팅을 들어가기에 앞서 먼저 이미지 리사이징이 왜 필요한지 생각해볼 필요가 있습니다. B2C 서비스, 특히 온라인 쇼핑몰을 접속해보면 굉장히 많은 상품 사진들을 볼 수 있습니다. 저는 국내 브랜드를 좋아하니 탑텐몰에서 아우터 항목을 한번 살펴보겠습니다. 상품들을 한 눈에 보여주니 마음에 드는 옷을 바로바로 고를 수 있겠네요. 대부분의 쇼핑몰들은 브라우저 메인 화면부터 세부 카테고리에 접속하기까지 소비자들의 이목을 끌기 위해 공통적으로 제공하는 것이 있습니다. 바로 썸네일(Thumbnail)인데요. 위 사진처럼 굳이 상품을 하나하나 클릭하지 않더라도 어떤 상품들이 있는지, 상품의 색상은 무엇인지 등의 정보를 소비자에게 노출시키기 위해 썸네일을 활용하고 있습니다. 여러 사진들 중에서 한 가지를 골..

AWS 2023.12.01

쿠버네티스 Auto Scaling #1 (HPA, VPA)

쿠버네티스는 한정된 리소스를 유연하게 사용하기 위해 Auto Scaling 기능을 지원하고 있습니다. Auto Scaling은 각 리소스에 대한 Metric 정보을 기반으로 동작하며 데이터를 수집하기 위해선 먼저 클러스터에 Metric Server가 구성되어 있어야 합니다. Metric Server 배포하기 메트릭 서버는 클러스터 내 존재하는 Pod의 메트릭 정보를 실시간으로 수집해서 Kubernetes API 서버에 전달하는 역할을 수행합니다. 만약 메트릭 서버가 설치되지 않았다면 아래와 같이 'Metrics API not available'과 같은 에러가 표시됩니다. 설치 방법은 간단합니다. 아래 명령어를 통해 메트릭 서버 구성요소를 배포해줍니다. $ kubectl apply -f https://gi..

Kubernetes 2023.11.20

Session Manager를 통해 EC2 인스턴스 접속하기(feat. CentOS)

Private Subnet에 위치한 EC2 서버에 접속하는 방법은 크게 두 가지가 있습니다. 1. Public Subnet에 Bastion을 두고 SSH 터널링으로 접속하는 법 2. AWS Session Manager를 활용하는 법 Bastion host를 두면 아래와 같은 장점이 있습니다. 1. AWS 웹 콘솔 접속 없이 cli로 프라이빗 서버 액세스 가능 2. 방화벽 설계를 단순화할 수 있음 그러나, Bastion 서버를 직접 구성해야 하고, 서버 비용과 key 파일을 관리해야 한다는 수고로움이 발생합니다. Session Manager를 사용하면 위와 같은 작업이 불필요하게 됩니다. Session Manager(이하 SSM)는 AWS 웹 콘솔 내 브라우저 기반의 Shell, CLI를 제공하여 Priv..

AWS 2022.09.14

Openswan을 활용한 AWS Site-to-Site VPN 구성하기

1. 개요 2. 환경 구성 2.1 Key pair 생성 2.2 인프라 아키텍처 2.3 Ping 테스트 2.4 Customer Gateway 주소 확인 ( IDC ) 2.5 Customer Gateway 생성 ( AWS ) 2.6 VGW(Virtual Private gateways) 생성 2.7 VPN Connection 설정 2.8 VPN 구성 다운로드 2.9 Openswan 설치 ( IDC ) 3. Network 설정 3.1 IPSec 설정 3.1.1 Tunnel 설정 3.1.2 Secret 값 저장 3.2 라우팅 테이블 수정 4. 결과 개요 두 사설망 간의 연결을 위해선 크게 두 가지 방법이 존재합니다. 1. 물리적인 전용선을 설치하여 연결하는 방식 2. 가상의 네트워크 망을 구성하여 연결하는 방식 ..

AWS 2022.08.02

CI/CD with Jenkins&ArgoCD

이번 포스팅에선 Jenkins와 Bitbucket, Harbor를 통해 CI/CD Pipeline을 구축하는 과정에 대해 설명한다. 전체 Architecture는 아래와 같다. 개발자가 Bitbucket으로 소스코드를 Push한다. Push event를 트리거 삼아 Webhook이 Jenkins로 전달된다. Jenkins에선 Bitbucket의 Jenkinsfile을 기반으로 docker image를 build하고 이를 Harbor에 push한다. ArgoCD는 Bitbucket의 변경사항을 감지하여 이를 EKS Cluster에 배포한다. 사전 작업 Jenkins 서버에 Docker 설치 해당 포스팅에서 Jenkins는 Dockerfile을 빌드하는 역할을 한다. 따라서 Jenkins 서버에서도 Dock..

CICD 2022.05.03

EC2에 Jenkins 구축하기

Jenkins란 Jenkins는 소프트웨어 구축, 테스트, 전달 및 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용할 수 있는 오픈 소스 자동화 서버이다. 서비스를 개발하는 과정에서 개발자들이 코드 작성 외에 Test, Build, Deploy 등의 번거로운 과정을 직접 하지 않고, Pipeline 구축을 통해 자동화하여 처리할 수 있는 CI/CD 도구라고 할 수 있다. Jenkins는 여러 장점이 있지만 대표적으로 아래와 같다. 무료 다양한 플러그인 지원 많은 사용자를 보유(레퍼런스 많음) Jenkins 이외에도 Travis, GitLabCI 등의 다양한 CI 도구가 있으니 본인의 환경에 맞춰 적절하게 사용하면 될 것 같다. 설치 방법 JAVA 설치 Jenkins 설치 (원활한 실습 진행을 위해 ..

AWS 2022.05.03

EC2에 harbor 설치하기

Harbor란 Harbor는 Private Docker Registry로, 오픈소스이다. 내부적으로 Docker Registry를 사용하고 있으며, 여기에 RBAC, 웹 콘솔, Image scan 등의 편리한 기능이 추가되었다. 2020년 11월부터 Docker Hub의 image pull rate에 대한 limit이 걸렸는데, 관련된 내용은 아래와 같다. anonymous: 100 pulls per 6 hours per IP authenticated: 200 pulls per 6 hour subscription: no limits 사내에선 보통 forward proxy를 이용하니, Image Registry를 사용하면서 image pull rate을 초과할 일이 발생할 수 있다. 이러한 상황을 대비하여..

AWS 2022.05.02