전체보기

· Cloud/IaC
Terraform을 통해 aws_instance를 만들면 기본 AMI값을 지정해주어야한다. 이 ami 값은 외우기도 좀 그렇고 자주 바뀌는 터라, 동적으로 가져와서 지정해줄 필요가 있다. Terraform의 'data' Block을 사용해 특정한 AMI 값을 AMI Marketplace에서 검색해 가져올 수 있다.예시로 ubuntu-22.04의 AMI 값을 가져와 본다.data "aws_ami" "ubuntu" { most_recent = true owners = ["099720109477"] # Canonical(Ubuntu 배포사)의 AWS 계정 ID filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-jammy..
시나리오 목표"vault" 컨테이너에 Access해 플래그 획득  시나리오 세팅./cloudgoat.py create ecs_takeover  EC2 인스턴스의 Public IP가 연결된 DNS 주소 하나가 주어진다.  ECS 클러스터 구조문제에 돌입하기 전에 ECS 서비스에 대한 구조를 간략하게 알고 넘어가보자.ECS의 리소스는 cluster, service, task, container로 구성되어있다. 이러한 구조는 k8s와도 살짝 닮아있는 것을 알 수 있다. Component설명ClusterECS Service와 Task를 실행하는 인프라, service와 task를 묶는 논리적인 단위가 된다. ECS의 가장 상위 수준의 리소스ServiceTask의 지속적인 실행을 관리하는 개체로, Task를 실행..
· Study/K8s
Cluster내에서는 여러 Worker Node들이 연결되어 있고,  각 Node에는 여러 Pod들이 배치될 수 있다.배치된 Pod들은 CPU를 많이 잡아먹는 Workload, 혹은 메모리를 많이 잡아먹는 Workload 등 다양한 요구사항을 가질 수 있다. 그리고 Worker Node 또한 각각 사양이 다를 수 있기에, 이러한 요구사항과 cluster 내의 Node 상황에 맞춰 Pod를 효율적으로 Scheduling 하는 것이 중요하다. 효율적인 Pod의 Scheduling을 위해 Kubernetes에서는 Resource Requests와 Limits를 사용한다.이번에는 이 두 요소를 알아보도록 한다. Resource RequestsContainer가 생성될 때, 특정 용량을 요청하는 것, 해당 pod..
· Study/K8s
Taint & Tolerant어떤 pod가 특정 node에 schedule되는 것을 제한하는 것 (set restriction)즉, 특정 node가 특정 pod만 수용할 수 있도록 하거나 특정 node에 특정 pod가 배치되지 않도록 하는 수단이다. Taint는 node에 지정하는 요소이고, Tolerant는 pod에 지정하는 요소다.이해하기 쉽게 보자면, Taint는 '벌레 퇴치 스프레이', 그리고 Tolerant는 Taint에 적응할 수 있는 면역력으로 생각할 수 있다.  Taint와 Tolerant를 이해하기 위해 아래와 같이 Node와 Pod들이 있다고 가정해본다.  Node라는 사람 객체에 Pod라는 벌레 객체가 붙는다. 이때 Node에 예를 들어 app=prd 라는 Taint를 적용하게되면, ..
· Study/K8s
Pod를 새롭게 생성하면 Master Node(Control plane)의 Scheduler가 pod를 실행시킬 node를 선택하고 배치한다.그럼 이 Scheduler는 어떤 기준으로 pod를 실행시킬 node를 결정하는 것일까?cluster내의 node들은 모두 같은 사양을 가질수도 있지만, 각기 다른 스펙의 사양을 가질 수도 있다. 워크로드 또한 리소스 자원을 많이 요구하는 것이 있고, 비교적 적은 양을 요구하는 것이 있다. 각 node들의 리소스를 효율적으로 사용하기 위해서는 다양한 제약 조건과 요구사항 등을 고려하여 pod를 배치해야한다. 특정 워크로드가 적합한 노드에서 실행되도록 할 수 있다.이번 글에서는 Label과 Selector, 추가로 Annotation에 대해 알아보도록 한다. Labe..
· Study/CI&CD
최근에 작업하고 있는 프로젝트에 API용 django가 하나있다. 이 django를 프론트가 사용할 수 있도록 EC2에 호스팅을 하는 중이다. 개발 중간중간에 변경사항들을 매번 인스턴스에 접속해서 재시작해주는 과정이 번거로워 간단하게 Github Actions를 이용해 code가 push되면 그 내용을 반영시켜 바로 배포되도록 구성을 해보았다. 이번에는 django 프로젝트를 EC2 인스턴스에 배포하는 Github Actions 파이프라인을 구성해보도록 한다.EC2에 배포되는 django 서버는 Docker로 컨테이너화 시켜서 docker-compose를 이용해 배포하도록 한다. 이 글에서 다루는 전체적인 배포 파이프라인은 다음과 같다. AWS Credential 설정Github Actions를 실행하는..
23년 3월 소집해제와 동시에 복학해서 24년을 맞고, 예비군 통지서가 날라오게 되었다.24년은 학생예비군 소속으로 우리 단과대와 함께 장소는 수원화성오산과학화예비군훈련장으로 배정되었다.  훈련장 위치  소집 마감 시간은 9시로, 필자의 경우 단체 버스이동이 아닌 자차로 이동했다. 대략 8시 근처쯤 훈련소 근처에 다다라서 고속도로를 빠져나오면 무수히 많은 차들의 행렬이 대기중이기 때문에 최대한 여유있게 출발하는 것을 추천한다. 훈련소에 도착하면 입구 좌측으로 주차 타워가 위치한다. 면적도 넓고, 층수도 꽤 있어서 (4층?) 어지간하면 주차 공간에 문제될 경우는 없을 듯하다.  입장과 디지털 대시보드복장 갖추고 입장하면 바로 QR코드로 자가 진단을 진행하고, 입구에서 스마트폰 카메라 전/후면에 스티커를 붙..
· ToyProject
이번 프로젝트에서 API 부분은 Django와 drf(djangorestframework)를 사용해서 구현하기로 했다.우선 사용자로부터 비디오파일을 업로드받아 이를 Bucket에 저장하고, 저장됨과 동시에 Model 처리 서버로 하여금 처리작업을 시작하도록 파이프라인을 구성했다. 그 뒤로 Model 처리 결과 중 RISK 탐지내역을 클라이언트에 프레임 별로 처리되는 즉시 전송을 해주어야한다. 아무래도 주제가 CCTV 관제의 보조 도구이므로 실시간성이 무엇보다도 중요하게 다가왔다.이를 위해서는 RISK 탐지 내역의 Streaming API의 구현이 필요했다. Streaming의 구현에서 주로 언급되는 기술로는 폴링과 웹 소켓이 있다. 이외에도 SSE(Server-Sent Event)기법이 있다.이 기술들 ..
Omoknooni
'분류 전체보기' 카테고리의 글 목록 (7 Page)