본문 바로가기

전체 글300

[terraform-provider-kubernetes/Issue] StorageClass ReclaimPolicy 관련 이미 생성된 Strorage Class의 경우, Reclaim Policy를 변경할 수 없다. 그러나 Terraform 으로 변경 시도 시 변경된다고 뜸 -> 실제로 변경되진 않음 Terraform으로 변경 시도 시, replacement되도록 변경되어야 한다. 이미 누가 이슈를 올려놨다. https://github.com/hashicorp/terraform-provider-kubernetes/issues/1965 Storage class reclaim_policy changes don't force recreation · Issue #1965 · hashicorp/terraform-provider-kubernetes For a plan like this: # kubernetes_storage_class.. 2023. 9. 5.
[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.
[oh-my-zsh/agnoster] prompt에 kubernetes context 표시하기 (theme prompt customizing하기) k8s 클러스터를 여러 대 운영할 때, 현재 컨텍스트가 헷갈리는 경우가 많다. 터미널 세션별로 컨텍스트 다르게 유지한다거나, iterm status bar에 컨텍스트를 표시한다거나 방법들이 있지만, 나는 그냥 터미널 명령줄 프롬프트에서 현재 컨텍스트를 보면서 명령을 날리고 싶었다. agnoster prompt 커스터마이징을 어떻게 하는지 찾아봐도 잘 안나와서...그냥 코드 까보고 직접 구성해봤다. 결과적으론 아래와 같다. 클러스터 이름 : prod일땐 빨간색, 그 외엔 노란색 네임스페이스 이름 : cyan 색 클러스터와 네임스페이스 사이 콜론은 흰색 ~/.oh-my-zsh/themes/agnoster.zsh-theme에서 진행 먼저 kubectx용 prompt segment를 정의해야 한다. prompt.. 2023. 7. 30.
[Grafana Loki] Errors loading rules # 상황 - 중앙 EKS 클러스터에 grafana chart를 사용해 Grafana가 설치되어 있음 - 각 EKS 클러스터별로 loki-stack chart를 사용해 Loki와 promtail이 설치되어 있음 - 각 EKS 클러스터별로 kube-prometheus-stack chart를 통해 Prometheus와 AlertManager가 설치되어 있음 (로키 스택에서 프로메테우스도 전부 깔 수 있지만, 프로메테우스가 먼저 깔려있는 상태에서 로키 도입하다 보니 이렇게 됨) # 문제 상황 Grafana와 Loki를 별도로 쿠버네티스 위에 띄우고, Grafana에서 Data Source로 Loki를 추가했습니다. Connection Test는 성공하지만,,, 위 사진처럼 Alert rules로 가면 로키 데이.. 2023. 7. 27.
[k8s/aws] 쿠버네티스에서 AWS EBS를 볼륨으로 사용할 수 있기까지 본 글은 설명하고자 하는 전체 과정을 러프하게만 설명하며, 각 리소스들에 대한 상세한 설명 및 만드는 방법 등은 모두 생략합니다. # PV, PVC - 쿠버네티스에서의 볼륨 쿠버네티스에서 앱들은 pod 형태로 올라가며, 각 pod에는 1개 이상의 컨테이너가 돌아갑니다. 컨테이너 내 디스크에 존재하는 파일은 유실될 가능성이 높으며, 다른 pod 내 컨테이너와 공유할 수 없습니다. -> 쿠버네티스 클러스터 상의 볼륨 리소스를 사용해 같은 배포 내의 pod들이 같은 볼륨을 바라볼 수 있어야 합니다. 먼저 임시 볼륨 (ephemeral volume) 이 있습니다. 임시 볼륨으로도 파드 재시작 시의 데이터 보존은 가능하지만, 데이터의 영구 보존은 불가합니다. 그치만 영구 보존... 필요하죠? 필요한 경우, PV와.. 2023. 7. 26.
[Terraform/k8s] aws-auth ConfigMap Patch # aws-auth란? aws와 k8s는 권한 체계를 다르게 가져간다. -> aws에 어드민 권한이 있더라도 eks를 최초로 생성한 User(또는 Role)가 아니라면 내부 리소스를 확인할 수 없다. 하지만 aws에서 올리는 k8s인 eks 특성상, aws의 권한을 인가받을 수 있어야 한다. 예를들면, 당장 eks의 노드(ec2. 또는 fargate session)에서도 k8s 리소스들에 대한 권한이 필요하며, aws의 다른 유저들에게 내가 생성한 eks를 공유할수도 있어야 한다. -> aws authentication을 k8s 권한체계랑 매핑시켜주는게 aws-auth ConfigMap의 역할이다. aws-auth의 full configuration format은 아래에서 확인할 수 있다. https:/.. 2023. 7. 20.
[MAC Terminal] ls 말고 exa 사용하기 ls 말고 exa 사용해야 하는 이유? 이쁘다. (이유 끝) ---- exa 는 inpa님 블로그 보고 알게 되었다. ls의 최신판이며, 색상/아이콘 표시 등의 기능 뿐 아니라 git도 통합되고 속도도 빠르다고 한다. 다만 인파님 블로그는 리눅스 기준이라, mac에서 사용하는 방법에 대해서 포스팅해보려고 한다. ---- # exa 설치 brew install exa brew로 쉽게 깔리며, 기본 ls 명령 옵션들과 호환된다. 근데 (가장 중요하다고 생각하는) 아이콘을 같이 보여주는 옵션 (--icons) 을 넣으면 깨진다 nerd font 시리즈 중 하나를 받아야 한다 # 폰트 설치 brew tap homebrew/cask-fonts brew install --cask font-hack-nerd-font.. 2023. 7. 15.
[MAC Terminal] oh-my-zsh 디렉터리 표시 설정 (prompt_dir) # agnoster 테마 파일 열기 (다른 테마 사용하면 다른거..) vim ~/.oh-my-zsh/themes/agnoster.zsh-theme # prompt_dir 함수 찾기 /prompt_dir() 원하는 설정에 따라 아래와 같이 표시한다 # 현재 Directory만 보이기 prompt_dir() { prompt_segment blue $CURRENT_FG '%c' } # 마지막 3개 Directory만 보이기 (3 대신 원하는 숫자 적용) prompt_dir() { prompt_segment blue $CURRENT_FG '%3~' } # 전체 경로 보이기 (기본값) prompt_dir() { prompt_segment blue $CURRENT_FG '%~' } 터미널에 적용 source ~/... 2023. 6. 26.
[대규모 시스템 설계 기초] 5장 - 안정 해시 (Consistent Hash) 설계 # 서론 수평적 규모 확장을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. -> 이 목표를 달성하기 위해 보편적으로 안정 해시 기술을 사용함 이 해시 기술이 풀려고 하는 문제를 자세히 살펴보자 # 일반 해시 함수의 해시 키 재배치 (rehash) 문제 N개의 캐시 서버가 있다고 가정해보자 이 서버들에 부하를 균등하게 나누기 위해, 보편적으로는 아래와 같은 해시 함수를 사용한다. serverIndex = hash(key) % N 예를 들어, 서버 대수(N)가 4대일 때, hash(key0) % 4 = 1 이면 데이터를 찾기 위해 1번 서버에 접속하게 됨 이 방법은 서버 풀의 크기가 고정되어 있고, 데이터 분포가 균등할 때 잘 동작한다. 그러나....서버가 새로 추가되거나 삭제.. 2023. 6. 17.
[2023-06-15] 당근 SRE 밋업 3회 내용 정리 한 줄 후기 : 당근은 개발자 경험(DX)에 진심이다. (부럽,,) 제일 놀랐던 점 : SRE팀이 16명이다 (전체 엔지니어는 200명 넘는 듯) (플랫폼?파트, 클라우드 파트, 클러스터 파트) 내가 나중에 만들고 싶다고 생각한 플랫폼 다 만들어져 있음 나도 나중에 꼭 만들어야지...... 아래는 밋업 당시 그 자리에서 바로 정리하며 적은 내용들이며, 정리가 덜 되어있을 수 있습니다. 1️⃣ 당근마켓 개발자 플랫폼: 지난 2년간 무엇을 만들었는가? (변정훈) https://blog.outsider.ne.kr/ SRE (전체 인프라 관리) -작업(자동화: 스크립트, IaC)-> 인프라 입장 차이 서비스 개발 - 빠른 변경, 다양한 시도 SRE - 안정적 운영, 정책 적용, 일관된 형태, 승인 양쪽 모두 불.. 2023. 6. 17.