분류 전체보기 122

EKS 무중단 업그레이드 경험 공유

먼저, 그동안 블로그를 소홀히했는데 다시 정신차리기로 했다. IT 엔지니어는 늘 빚지고 살고 있으니 글 쓰면서 조금이라도 빚 갚고 살아야 생각하는데 안하고 있었다. 다시 정신차리자. (하루 방문수 100은 되는것 같은데 미안한 마음이 크다) 최근에 회사에서 운영 중인 EKS를 업그레이드 했다. 아틀라스랩스는 총 10개 클러스터를 운영 중인데 작업은 1.23 to 1.24 (하나는 1.22 to 1.23) 업그레이드를 했다. 이전에는 업그레이드 작업하면 서비스 끊고 새벽 00:00 ~ 06:00 6시간 작업을 했다. 쿠베가 4개월에 한번씩 업그레이드하는데 4개월마다 서비스를 중단하는게 말이 안되고 그걸 또 밤 새면서 하는건 사람이 할 짓이 아니기에 어떻게 하던지 대책을 마련해야했다. (그래서 기존에는 4개..

제 책이 나왔습니다.

https://product.kyobobook.co.kr/detail/S000200152893 24단계 실습으로 정복하는 쿠버네티스 | 이정훈 - 교보문고 24단계 실습으로 정복하는 쿠버네티스 | 실무 현장의 경험을 고스란히 담은 쿠버네티스 실습서!직접 해야만 알 수 있는 것들이 있습니다. 쿠버네티스도 마찬가지입니다. 쿠버네티스의 기반이 되 product.kyobobook.co.kr 고맙게도 예약 판매 기간에 사람들이 구매를 해 주셔서 인증 사진까지 보내 주었습니다. 새삼 항상 고마워하고 미안해하며 살아야겠다는 생각을 합니다. 모든 사람이 그렇겠지만 늘 빚지고 살고있구나 합니다. 조금이라도 빚 갚는다는 생각으로 살아야겠구나 합니다. 책도 그렇지만 부족한 제가 글을 쓴다는 건 항상 부끄럽습니다. 특히 대학..

원격 EKS 접속 환경 설정

원격 EKS 클러스터에 접속 가능하도록 로컬에 kubectl 환경을 세팅하는 방법을 공유한다. TL;DR . eks 접속 용 aws credential 정보 등록 . aws 계정에 따라 접속 가능한 eks가 다르다. . kubectl config 파일(~/.kube/config) eks 정보 등록 . 필요한 경우 원격 eks의 configmap/aws-auth에 aws 계정 정보를 등록한다. 간략하게 그림으로 정리하면 아래와 같다. AWS Credential 정보 등록 eks에 접속하기 위해서는 로컬에 aws 계정 정보가 필요하다. 로컬에 awscli를 설치하여 해당 정보를 등록한다. awscli 설치 최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface 이전..

EKS OJT 교육 실습 목차

고맙게도 팀에 새로운 DevOps가 조인했다. 그 친구에게 업무 공유도 할 겸 DevOps로 해야 할 일을 실습으로 정리해 보았다. 아래 실습을 하면 우리 업무를 마스터 할 듯. 그리고 아마도 어느 정도는 우리 같은 40명 언더의 스타트업이고 DevOps 1~2명 조직에서도 비슷한 일을 할 것 같다. 그분들에게 도움이 될까 봐 공유한다. 기회가 된다면 이번에는 아래 목차로 동영상을 찍어볼까 한다. 온프레미스로 책을 썼으니 이번에는 EKS로 동영상을 만들어보면 어떨까 싶다. 머 책처럼 1년 걸리는 노가다이겠지만. 아니다 2번째니 6개월이면 되지 않을까? 기본적으로 모든 업무는 자동화할 수 있도록 코드화(IaC) 한다. 작업 속도를 높일 수 있도록 GUI 작업은 지양하고 스크립트화 한다. GUI는 확인 용도..

파이썬으로 여러 쿠버네티스의 클러스터 정보 가져오기

10개 클러스터를 운영하니 각각의 클러스터 버전을 체크하는 것도 일이다. 버전 정보야 간단히 shell로 가능한데 이번에는 파이썬 코드를 짜 보았다. 나는 시스템 운영자 출신이라 코딩은 손놓고 20년 살았다. 최근에 오래된 로그를 삭제하는 파이썬 코드를 고마운 팀분의 도움으로 작성했다. 안 잃어버릴 겸 해서 이번에도 익숙한 스크립트 대신 파이썬으로 만들었다. 아마도 허접한 코드일 것 같은데, 누군가에게는 도움이 될까 창피함을 무릅쓰고 공개한다. # Need an aws_profile to access EKS # Need kubectl, kubectl ctx tool import os import json # Print each EKS version & total number of nodes def pri..

AWS NLB EKS 환경에서 사용자 IP 파드로 전달

사용자의 IP를 파드까지 정상적으로 전달하도록 작업한 내역을 공유한다. TL;DR AWS NLB는 L4 기반이라 L7 Application LB의 x-forwarded-for 설정없이 client-ip 전달이 가능 하지만 쿠버네티스의 Proxy 구조 상 외부 LB에서 받은 트래픽이 전체 클러스터의 노드를 거쳐서 파드로 전달되기 때문에 파드에는 client ip가 아닌 노드 IP가 기록됨 externalTrafficPolicy을 Local로 변경하면 노드 IP가 아닌 client ip 전달 가능. 하지만 설정을 변경하면 전체 클러스터의 노드가 아닌 ingress controller가 설치된 노드에서만 트래픽을 전달하여 ingress controller가 설치된 노드(통상 이중화를 위한 2개의 노드)만 트래..

Tailscale VPN for 쿠버네티스 & VPC

최근에 EKS, AWS VPC 환경에서 Tailscale VPN을 잘 사용하고 있어 내용을 공유한다. TL;DR Tailscale VPN을 1) EKS 환경에서 LoadBalancer, Ingress 등을 추가 설정하지 않고 ClusterIP 타입 그대로 VPN을 사용하는 사용자에게 외부 노출 2) EC2 사용하는 VPC의 전체 네트워크를 Tailscale VPN으로 연결 EC2 VM이 아닌 쿠버네티스 파드로 실행할 수 있어 EC2 VM 비용을 절감할 수 있다. 추가로 Deployment로 실행하면 파드 다운 시 자동 실행되니 관리 포인트도 줄어든다. ClusterIP는 YAML 파일에서 ClusterIP를 고정할 수 있어, 서비스를 재시작해도 IP가 변경되지 않는다. 쿠버네티스 DNS 이름을 그대로 사..

망원동 브라더스

http://www.yes24.com/Product/Goods/9159388 망원동 브라더스 - YES24 세상은 온통 웃기고 슬픈데, 망원동 8평 옥탑방만이 처절하게 유쾌하다!연체된 인생들, 찌질한 네 남자가 코딱지만 한 망원동 옥탑방에서 기묘한 동거를 시작한다. 대책 없는 포 트러블 브라더 www.yes24.com 망원동 옥탑방에 동거하는 4명의 찌질한(?) 남자들 이야기. 반지하, 단칸방에 살아본 나는 이런 이야기에 감정 이입이 잘된다. 지방에서 올라와 대학 시절 그런 곳에서 오래 살았다. 열악한 환경에 살다보니 그런 환경들이 나를 패인, 루저로 만드는 것 같았다. 돈 안 버는 대학생인데 당연하지라는 생각도 들면서 우리집은 원래 가난해라는 약간 패배주의로 안일하게 살고 싶은 생각도 들게하고. 열심히..

책 이야기 2022.06.26

EKS CSI Driver 설치

EKS를 설치하고 나면 기본적으로 해야할 일이 있다. 기본 gp2 StorageClass를 사용하지 않고 gp3 기반의 ebs-sc 스토리지 클래스 사용하고 prometheus, grafana, loki, ingress 등 여러 필수 요소들도 설치해야 한다. 오늘은 그 중 ebs-sc csi driver 설치 및 사용법을 정리하였다. TL; DR 코드 및 스크립트를 이용하여 eks ebs-sc 스토리지 클래스 설치 가능하다. 코드 기반이라 반복 사용이 가능하며 작업 시간도 10분 내외만 소요된다. AWS의 많은 것들이 그렇듯이 eks csi-driver 설치 작업도 aws 공식 문서를 보고 따라하면 대부분 가능하다. (그래서 굳이 이렇게 블로그를 쓰는 이유도 없기는 하다. 하지만 나의 편집본이 작은 도움..

Strimzi Kafka Operator - Kafka 토픽 생성

지난 포스팅에 이어 이번에는 카프카 토픽을 만들어 보는 실습을 진행하였다. 실습 내역 쿠버네티스 Strimzi CRD를 이용하여 카프카 토픽 생성 및 조회 그럼, 카프카 토픽을 YAML 파일로 만들어본다. 지난 시간에 말한 Operator가 편리한게 카프카 토픽 같은 쿠버네티스 리소스가 아닌 것도 Custom으로 YAML 파일로 만들 수 있는 것이다. 쿠버네티스에 친숙한 YAML 파일 형식이라 거부감이 없고 명령어가 아닌 소스 코드 기반으로 재 사용성이 훨씬 낫다. ## visualcode 등으로 아래 내용을 kafakatopic-crd.yaml 파일에 저장한다. apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: mytopic1 ..