본문 바로가기

전체 글96

Alpine Linux로 Docker 이미지 빌드 개인 테스트 목적으로 Docker를 애용하고 있는데요. 원하는 패키지가 설치된 Docker 공식 이미지가 없는 경우 Docker hub에 게시된 공인받지 않은 커스텀 이미지를 받아서 사용하기 보단 원하는 Docker 이미지를 빌드하여 사용하곤 합니다. 이때는 보통 CentOS 환경이 익숙하기 때문에 저는 CentOS 7 이미지를 베이스 이미지로 하여 빌드를 하는데 최근에 Alpine Linux를 통해 Docker 이미지를 빌드하는 방법에 대해 알게되어 기술 공유하고자합니다. Alpine 리눅스란 공식 사이트 https://www.alpinelinux.org/1. Alpine Linux는 경량 리눅스 배포판으로 Docker 이미지 빌드 시 베이스 이미지로 주로 사용됩니다. (물론 Docker 이미지를 빌드.. 2023. 3. 13.
kubernetes 에서 argocd 자동 배포 환경 구성 쿠버네티스 관련 학습을 하다 유용한 CD(지속적인 배포)도구를 알게 되어 공유하고자합니다. 1. argocd 란 argocd 는 쿠버네티스용 CD 도구로 GitOps 방법론의 특성을 가지고 있습니다. GitOps 란 배포와 관련된 모든 구성 요소를 Git을 통해 코드로 관리한다는 의미를 가지고 있습니다. 이러한 GitOps 는 크게 1) 선언형 모델과 2) SSOT(single source of truth, 단일 진실 공급원)의 특징을 가집니다. 1) 선언형 모델 모든 구성 요소가 명령형 모델이 아닌 선언형 모델을 따릅니다. 여기서 명령형 모델이란 어떤 행위를 정의하는 것이라면, 선언형 모델은 어떤 상태를 정의하는 것입니다. 예를 들어 명령형 모델이 "웹 서버 컨테이너 2개를 생성해라"라면, 선언형 모델.. 2023. 3. 13.
k8s HA 구성과 kubespray를 통한 클러스터 배포 지난 학습 자료를 통해 도커와 쿠버네티스, 그리고 관리형 쿠버네티스 서비스인 AWS EKS 등에 대해 알아보았습니다. 또 업로드해드린 자료를 통해 직접 쿠버네티스 클러스터를 구성해보신 분들도 계셨는데요. 지난 자료에 업로드해드린 쿠버네티스 클러스터는 모두 클러스터를 생성하는 가장 기본적인 방법인 kubeadm을 통한 방법이었습니다. 아래는 쿠버네티스의 컴포넌트 구성도인데요. 기억이 나실지 모르겠습니다. 이 구성도에서는 하나의 마스터노드와 3개의 워커노드로 구성된 클러스터의 모습 보여주고 있는데요. (현재는 마스터노드/워커노드라는 용어보다 컨트롤플레인/데이터플레인이라는 용어를 사용하는데, 마스터노드/워커노드라는 용어가 더 직관적이라고 생각해서 용어는 그대로 통일해서 마스터노드/워커노드로 표현하겠습니다) 하.. 2023. 3. 12.
이미지를 DB에 BLOB 데이터타입으로 저장 웹페이지에 이미지를 넣기 위해서는 웹서버 혹은 별도의 이미지 서버에 파일 형식으로 업로드를 한 뒤, img src HTML 태그를 통해 웹페이지에 포함시키는 것이 일반적인 사용 방법이나, 이미지를 DB에 저장하고 저장된 이미지를 DB로부터 select하여 웹페이지를 통해 노출할 수 있는 방법이 있어 공유해드리고자 합니다. 테스트 환경 테스트 환경은 아래와 같습니다. DB - AWS RDS(Mariadb 10) 웹서버 - apache 2.4(php 7.4) 데이터베이스 생성 및 테이블 생성 바이너리 데이터인 이미지 파일을 DB에 저장하기 위해 blob 데이터 타입으로 설정하여 테이블을 생성합니다. BLOB 이란 Binary large object 로 바이너리 데이터를 DB에 저장하기 위한 데이터 타입으로 .. 2023. 3. 12.
AWS DevOps Engineer Professional 자격 시험 응시 후기 최근 약 2주동안 AWS DevOps Engineer Professional 자격 취득을 위한 학습을 진행하여, 어제 시험을 치르고 다행히 합격하여 자격증을 취득했는데요. 자격 시험 준비하며 체크했던 부분과 실제 시험을 치렀던 경험에 대한 후기를 공유하고자 합니다. 도움이 될지는 모르겠지만 혹시라도 AWS DevOps Engineer Professional 자격증 취득에 관심이 있으신 분은 한번 읽어보시면 좋을 것 같습니다. 1. AWS DevOps Engineer Professional 자격 시험 관련 공식 안내 자격 시험과 관련된 공식적인 내용은 아래 페이지에서 확인이 가능합니다. 시험 안내서에도 나와있듯 AWS DevOps Engineer Professional 시험은 6개 도메인으로 구성되어 있고.. 2023. 3. 12.
Docker buildx를 통한 멀티 플랫폼 이미지 빌드 지난번 t4g 타입의 EC2 인스턴스를 소개하며 Arm 기반의 AWS Graviton2 프로세서에 대해 간략히 소개해드린 바가 있습니다. 이와 같이 Graviton 프로세서가 적용된 인스턴스 유형은 Amazon EC2 T4g, M6g, C6g 및 R6g 인스턴스 유형이 있는데요. Amazon EKS의 노드 그룹 생성 시에도 T4g, M6g, C6g 및 R6g 인스턴스 유형을 선택할 수 있기에 Docker 이미지 빌드 및 배포 과정에서 발생할 수 있는 CPU 아키텍쳐 관련 문제 상황 및 해결 방법에 대해 소개해드리고자 합니다. Docker 이미지와 CPU 아키텍쳐 컨테이너에서 사용되는 이미지와 컨테이너의 개념은 어플리케이션 실행에 필요한 바이너리와 라이브러리를 패키징하여 만든 이미지를 Docker 이미지,.. 2023. 3. 11.
AWS EC2 T4g 타입 인스턴스 1. Amazon EC2 T4g 인스턴스란 Amazon EC2 T4g 인스턴스는 Arm 기반 AWS Graviton2 프로세서로 구동되며, T3 인스턴스보다 최대 40% 더 나은 가격 대비 성능을 제공합니다. T4g 타입 인스턴스 소개 페이지 https://aws.amazon.com/ko/ec2/instance-types/t4/?nc1=h_ls 북미 리전 출시는 2020년 9월 15일이며, 서울 리전 출시는 2021년 2월 23일로 오래되지는 않았습니다. 인스턴스 크기는 아래와 같이 제공됩니다. 2. AWS Graviton 프로세서란 T4g의 g는 AWS Graviton 프로세서를 의미하는데요. 이는 마치 T3a 타입의 a가 AMD CPU를 의미하는 것처럼 CPU의 종류를 인스턴스 타입에서 나타냅니다.(.. 2023. 3. 11.
오픈소스 IDS_IPS Suricata 지난번 AWS Network Firewall 서비스에 대해 소개해드리면서 AWS Network Firewall이 오픈소스 IDS/IPS인 Suricata를 기반으로 동작한다는 내용을 언급한 적이 있습니다. 이번에는 EC2 인스턴스에 직접 Suricata를 설치하여 Suricata를 어떻게 설치 및 설정하고, 어떻게 작동하는지 직접 확인한 내용을 바탕으로 공유드리려고 합니다. 테스트 환경 테스트 환경에서는 Suricata 인스턴스를 웹서버가 위치한 서브넷과 다른 별도의 서브넷에 구성하고 VPC 내/외부에서 발생하는 모든 트래픽이 Suricata 인스턴스를 거쳐 통신하도록 구성하여 Suricata 인스턴스에 설정한 룰셋을 통해 트래픽을 필터링하여 웹 서버로 전달하도록 아래와 같이 구성하였습니다. 위의 그림은.. 2023. 3. 11.
istio traffic management istio traffic management # 이미 구성된 환경 gke 클러스터 asm(istio 도 무관) bookinfo 샘플 앱(gateway, virtualservice 포함) # destination rule 생성 -> 룰은 목적지에 대한 라우팅 룰일뿐 실제 라우팅을 정의하는 것을 virtualservice 리소스 kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/networking/destination-rule-all.yaml kubectl get destinationrules kubectl get destinationrules -o yaml apiVersion: networking.is.. 2023. 3. 10.