본문 바로가기

데브옵스 이야기13

명심 If you don't know why it's working when it's working, you won't know how to fix it when it breaks. 작동 중인데 왜 작동하는지 모르면 고장이 났을 때 어떻게 해결해야 할지 알 수 없습니다. 2024. 10. 6.
AWS S3 Bucket ACL은 권장사항이 아닙니더! 들어가며AWS S3 라이브러리를 이용하여 AWS S3에 객체를 업로드 하였고, 특정 객체에 대해 불러오려고 했는데 AcceeDenied가 발생했습니다.  처음엔 해당 AWS S3 Bucket에 get 권한이 없나? 싶어서 해당 권한을 설정해주었는데도 해당 문제가 지속되었습니다.  원인은 ownershipterraform으로 AWS S3 Bucket을 만들때 aws_s3_bucket_ownership_controls 리소스를 설정했었습니다.resource "aws_s3_bucket_ownership_controls" "ownership_controls_bucket_A" { bucket = aws_s3_bucket.bucket.id rule { object_ownership = "BucketOwne.. 2024. 8. 20.
[오픈소스 기여하기] 첫번째 기여 - ArgoCD (Implement graceful shutdown in application-controller) 제 올해 목표 중 하나였고 지난 주에 첫 문을 성공적으로 열었던 따끈따끈한 오픈소스에 기여하기에 대해 작성 해보려고 합니다. ArgoCD-OSS 참여 먼저, 저는 OSSCA에서 주관하는 ArgoCD 오픈소스에 기여하는 프로젝트에 합격해서 현재 참여하고 있습니다! (현재는 마스터 멘티로 선정되어서 조금 더 주도적으로 참여하고 있습니다!)왜 오픈소스 기여일까?대학생때부터 막연하게 오픈소스에 기여해보고 싶다라는 생각을 갖고 있었습니다. 하지만 막상 실행에 옮기지는 못했었고, 시간나면 해야지라는 생각만 갖고 있었습니다. 그러던 중 이렇게 팀으로서 활동할 수 있게 되어 오픈 소스에 기여하기 위해선 무엇을 해야 할 지 명확해져서 바로 실행에 옮길 수 있게 되었습니다. 저는 현재 SRE/Devops로 현업에 종사하고.. 2024. 8. 12.
K8s의 Memory? (RAM, Storage) Memory?많은 사람들이 메모리와 스토리지를 동일한 것으로 생각하기도 합니다. 아마 지칭하는 단위를 GB를 사용하기 때문이 아닐까 싶은데요.둘 다 용량을 나타내는 GB단위를 사용하는 이유는 기본적으로 용량을 측정하는 표준 단위이기 때문입니다. 엄연히 다른 Memory우리가 흔히 말하는 메모리에는 크게 RAM이라고 하는 휘발성 메모리, Storage라고 불리는 영구적 메모리 2가지가 존재합니다.  K8s의 Memory이 두 가지의 차이를 살펴보기 전에 먼저 Pod를 정의하는 manifest file에 선언하는 resource.limit.memory와 resource.request.memory는 무엇을 의미할까요?apiVersion: v1kind: Podmetadata: name: example-pods.. 2024. 8. 2.
Kubernetes common errors CrashLoopBackOff설명: 파드가 반복적으로 충돌하고 재시작합니다.문제 해결 방법 : 애플리케이션의 시작 및 초기화 코드를 조사합니다.명령어 # 파드 로그 확인kubectl logs # Pod 명세 확인kubectl describe pod  ImagePullBackOff설명: Kubernetes가 레지스트리에서 컨테이너 이미지를 가져올 수 없습니다.문제 해결 방법:이미지 이름과 태그를 확인합니다.이미지 레지스트리 자격 증명을 확인합니다.지정된 레지스트리에 이미지가 존재하는지 확인합니다. Pending Pods설명: 파드가 "Pending" 상태에 머물며 스케줄링되지 않습니다.문제 해결 방법:노드 자원 (CPU, 메모리)을 확인하여 충분한 용량이 있는지 확인합니다.노드 셀렉터 또는 어피니티를 사용.. 2024. 7. 29.
AWS 리소스를 IAM ResourceTag로 더욱 세밀하게 제어하기 (feat. 공식문서의 위대함) 들어가며사내에서 특정 서비스가 배포된 EC2에만 SSM(AWS Systems Manage) 허용하도록 하는 요청이 있었습니다. 해당 요청의 대상 EC2에는 특정 Tag가 할당되어 있었는데, Service: store 같은 방식으로 서비스의 내용이 tag로 할당되어 있었습니다. 그렇기에 해결 방법은 2가지로 구상해보았습니다.ec2 목록을 노출시킬 때 특정 Tag가 있는 EC2 목록을 노출시켜 그 EC2들에게만 SSM 접근을 허용한다.전체 EC2 목록을 노출시키고, 특정 Tag가 있는 EC2에만 SSM 접근을 허용한다.바로 1번 방법을 시행해보자!1번의 방법이 가장 효율적으로 보였기에 바로 아래와 같이 IAM 권한을 할당했습니다.{ "Sid": "ec2Describes", "Action": [ "ec.. 2024. 7. 23.
CKA, CKAD 취득 후기 들어가며 사내에서 Kubernetes를 도입하기 위해 공부하던 찰나 쿠버네티스 관련 자격증이 있다는 것을 알게 되었습니다. 하지만 당시에 자격증 취득을 위한 공부보단 하루 빨리 실무에 적용하기 급급했던터라 수박겉핥기 식으로 공부를 했었습니다. 그렇게 오직 이론보단 실무를 위하여 Kubernetes를 도입하여 운영했었고, 어느정도 시간이 지남에 따라 안정화가 되어 자격증을 공부를 하기 시작했습니다. (시기로 보자면 23년 11월부터 준비를 했네요.) 23년 12월에 2번의 시험을 본 후 연달아 불합격했고 24년 1월에 한 번 더 결제를 하여 2번을 보아 합격했습니다!(총 4번을 보았네요…) 그리고 바로 2주 뒤 45% 설날 세일때 이때다 싶어 CKAD까지 1번의 불합격에 이어 결국 합격을 했습니다..! (.. 2024. 3. 4.
좌충우돌 AWS EKS NodeGroup EC2 Type 전환기 개요 현재 AWS EKS를 이용하여 K8s 를 구축하고 운영하고 있습니다. 하지만 최근들어 신규 서비스도 런칭하고, 배포해야 할 Pod 수도 늘어나고, 여러 가지 devops 관련 pod를 구축하고 싶어 프로젝트로 일정을 수립하고 진행하고 있던 와중 Pod가 정상적으로 생성되지 않는 현상이 발생했습니다..! 찾아보니 EKS Workernode로 사용중인 EC2 Instance 의 Memory 의 용량이 부족하여 Pod를 띄울 수 없었습니다. 적절한 EC2 Instance Type을 찾아보자! 제가 처음 고려했던 Type은 현재쓰고 있는 다음 크기의 EC2 였습니다. As-Is : t3.xlarge To-Be : t3.2xlarge 타입 비교 vCPU* 메모리(GiB) 네트워크 성능(Gbps)*** 최대 .. 2023. 8. 14.
AWS OpenSearch를 활용해 EFK Stack 구축하기 들어가며 Kubernetes는 생성된 Pod들에 대하여 Stateless하게 관리되어야하는 것이 기본 관리 원칙이다. 그렇기에 STDOUT/STDERR등 SYSOUT의 형태로 쌓이는 로그들을 노드내에 저장하는 방식이 아닌 중앙 집중식 로깅 시스템을 구축해야 한다. Pod로부터 수신된 로그를 Fluent-bit를 통해 AWS Kinesis로 전송하고, 수신된 로그 데이터를 AWS OpenSearch의 ElasticSearch가 받게 되고 Kibana를 통해 시각화하게 된다. What Is EFK Stack? ELF Stack ELK Stack은 ElasticSearch + Logstash + Kibana의 로그 분석 프로세스를 지칭한다. 하지만 이 중 Logstash보다 fluent-bit이 쿠버네티스 환.. 2023. 5. 3.
AWS EC2 Storage 용량 늘리기(scale-up) 들어가며 k8s를 운영하다보면 어느날 갑자기 resource 에 대한 부족으로 인해 문제가 생길 수 있습니다. 그럴 때 AWS Console에 접속하여 해당 EC2 Instance의 storage 용량을 증가시켜 해결할 수 있습니다. WorkFlow 인스턴스에 접속합니다. (보통은 pem key를 통한 SSH 접속) 아래의 명령어로 해당 노드의 파티션을 확인합니다. $ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:0 0 30G 0 disk /data nvme0n1 259:1 0 16G 0 disk └─nvme0n1p1 259:2 0 8G 0 part / └─nvme0n1p128 259:3 0 1M 0 part growpart 명령을 사용.. 2023. 4. 29.
728x90