전체 글 794

Ansible mysql 플러그인을 잘못 사용해서 발생한 오류

1. 오류내용Ansible에서 mysql플러그인 동작을 잘 이해하지 못해 생긴 오류가 있었습니다. 개발환경에서 갑자기 애플리케이션이 mysql을 접속하지 못하는 오류가 발생했습니다. 2. 디버깅과 임시조치1. mysql이 잘 실행되고 있는지 확인mysql은 AWS RDS로 실행되기 때문에 mysql 는 멀쩡하다고 생각했습니다. 2. 애플리케이션을 실행하는 인스턴스에서 mysql연결 확인nc, telent을 사용해서 mysql과 네트워크 문제가 있는지 확인했습니다. 잘 연결되었습니다. 3. 최근 작업확인mysql DML는 ansible로 관리되고 있습니다. 그래서 ansible 실행이력을 확인했습니다. 마침 오류가 발생한 시점에 ansible실행이력이 있었습니다. 4. 임시조치ansible코드는 mysql..

의도하지 않는 DNS요청을 pod

https://youtu.be/cBUgtfXl_U8?si=dRckphcTIOBhsLJk&t=336 1. 들어가며pod가 DNS요청을 할 때, 클라이언트가 의도하지 않는 DNS 요청을 할 때가 있습니다.  예를 들어 google.com만 DNS 요청을 했지만, 의도하지 않은 DNS요청이 여러 번 수행되었습니다. coredns pod에서도 당연히 의도하지 않는 DNS요청을 받고 DNS응답을 줬습니다. 왜 의도하지 않는 DNS요청이 생성될까요? 2. 리눅스 리졸버의 ndots와 search의도하지 않은 DNS요청이 생긴 이유는 dots와 search설정 때문입니다. ndots와 search설정은 pod안에서 /etc/resolv.conf파일에서 확인할 수 있습니다.cat /etc/resolv.conf  nd..

쿠버네티스에서 DNS주소 끝에 cluster.local이 붙는 이유

https://youtu.be/B7IgpbOfPq8?si=b6xCbqY5oZ920lRK&t=1229  1. kubedns란?kubedns는 쿠버네티스에서 DNS(Domain Name system)서버 역할을 수행합니다. pod에서 DNS요청이 필요할 때 kube-dns pod에게 DNS요청을 합니다. kube-dns pod IP는 고정 IP가 아니므로 kubedns 서비스의 cluster IP를 사용합니다. pod에서 /etc/resolv.conf에 설정된 nameserver IP는 kube-dns 서비스 clusterIP입니다.  2. kubedns podkubedns pod는 애드온에 속합니다. 쉽게 표현하면 쿠버네티스가 어떤 애플리케이션으로 kubedns pod를 쓰라고 강제하지 않았습니다. kub..

ansible playbook에서 AWS Secret 값을 가져오는 방법

안녕하세요. 이 글은 ansible playbook에서 AWS Secret값을 가져오는 방법을 설명합니다. 1. 사용하는 모듈aws collection의 aws_secret 모듈을 사용합니다. aws collection은 ansible galaxy로 설치합니다.ansible-galaxy collection install amazon.aws ansible collection이 궁금하신분은 저의 이전 글을 참고하면 좋습니다.- ansible collection 설명 글: https://malwareanalysis.tistory.com/700 2. 사용방법aws.secret모듈은 lookup함수를 사용하여 secret manager 값을 불러옵니다. 가져온 시크릿값을 쉽게 파싱하려면 ansible from_j..

harbor저장소에 docker login할 때 발생하는 오류

harbor robot accountharbor저장소는 robot account라는 계정이 존재합니다. robot account는 "robot$name"형식으로 계정이 생성됩니다. docker login호환 문제docker login으로 harbor저장소를 로그인 할 때, robot account는 에러가 발생합니다. 에러메세지는 아래와 같습니다.msg="error authorizing context: authorization token required"  에러가 생기는 이유는 계정 이름에 특수문자 '$'가 있기 때문인데요. '$'를 회피하기 위해 따옴표(quote)를 계정으로 감싸주면 됩니다.docker login -u '' -p '' 참고자료github issue: https://github.com..

VPC CNI에서 network policy를 비활성화하다가 마주친 오류

이전 상황제가 운영하는 EKS에서 간헐적으로 pod간 통신이 안되는 증상이 있었습니다. 원인을 찾아보니 VPC CNI의 network policy기능에서 pod간 통신이 안되는 버그를 만났습니다. 패치버전이 있지만 계속 버그 이슈가 있어, 고민 끝에 network policy를 당분간 사용하지 않기로 했습니다. 쿠버네티스 네트워크 통신이 불안정하면 서비스 품질에 영향이 있기 때문입니다. 장애 재현은 저의 유투브를 참고하시면 됩니다.   버그 설명VPC CNI는 bpf를 사용하여 network policy네트워크 기능을 구현했습니다. 리눅스 conntrack 기능을 자체 구현한 것으로 보이는데 일정확률로 conntrack을 업데이트하지 못하는 상황이 발생합니다. github issue에서 올라온 설명으로는..

인공지능을 활용한 팟캐스트 썸네일 생성 과정

1. 들어가며팟캐스트 썸네일을 어떻게 만들지 고민을 많이 했습니다. 주제가 잘 보이면서 팟캐스트라는 것을 표현하고 싶었습니다. 많은 고민을 한 결과 아래처럼 완성이 되었습니다.2. 사용한 도구 목록제가 사용한 도구는 4가지입니다.pinterestchatgpt 4.oadobe fireflyadobe express 3. 생성과정전체 썸네일 작업은 adobe express를 사용했습니다.  처음에 구도를 생각했습니다. 팟캐스트를 표현하는 그림을 왼쪽에 표현하고 팟캐스트 목록은 오른쪽에 두었습니다. 그 다음, 그림에 대해 고민을 시작했습니다. "그림을 어떻게 그리지?" 평소에 유투브를 통해 인공지능을 사용하여 이미지 생성하는 방법을 알고 있어, 인공지능을 사용하기로 했습니다. 어떤 인공지능을 사용할지 고민했습니..

Pod 안정성을 높이는 쿠버네티스 설정

이 글은 pod 장애를 최소화하기 위한 쿠버네티스 설정을 이야기합니다. 세부 설정 방법은 생략하고 어떤 설정이 Pod안정성과 관련있는지 설명합니다. 짧은 기간이지만 제가 약 10개월동안 서비스를 운영하면서 중요하게 느꼈던 쿠버네티스 pod 안전성 설정을 정리했습니다.팟캐스트(오디오)로도 이 글을 들을 수 있습니다.https://audioclip.naver.com/channels/5158/clips/10 pod 안정성을 높이는 설정 (by 악분)이번 팟캐스트는 pod 안정성을 높이는 쿠버네티스 설정을 살펴봅니다.audioclip.naver.com 1. pod 안정성이란pod 안전성은 pod에 문제가 발생하더라도 서비스 중단을 최소화하는 것을 의미합니다. 이상적으로 pod안정성이 높으면, pod에 문제가 있..

EKS upgrade in-place방식에서 가장 걱정했던 것

1. EKS 업그레이드 종류EKS버전 업그레이드는 in-place와 blue-green 2가지 방법이 있습니다.bluegreen: 업그레이드된 EKS를 새로 생성하고 서비스를 이동하는 방법in-place: 현재 버전 EKS에서 버전 업그레이드 하는 방법 2. 나의 쿠버네티스 업그레이드 버전 경험저는 온프레미스에는 in-place방법으로 쿠버네티스 버전을 업그레이드 했었고 EKS는 blue-green방법으로 업그레이드를 했었습니다. 온프레미스는 서버 개수가 제한이 있어서 in-place방법으로 했었고 EKS는 언제든지 서버를 생성할 수 있어서 blue-green으로 버전 업그레이드 했습니다. 3. EKS in-place방법을 고민한 이유2가지 EKS 업그레이드 각각 장단점이 있습니다. 서비스 장애 없이 안..