반응형

Infra 21

[AWS] Lambda와 EventBridge 조합으로 일정 시간마다 함수 호출 예제

안녕하세요.이번 글에서는 AWS에서 Lambda와 EventBridge 조합으로주기적으로 원하는 함수를 실행할 수 있는 방법을 정리해보도록 하겠습니다.  Lambda 함수 설정1. AWS의 Lambda 함수 생성 페이지에 들어갑니다. 2. 아래와 같이 함수 이름 / 런타임 등을 골라주시고, 함수 생성을 진행합니다. 3. 이제 실행을 원하는 코드를 적어주시면 됩니다.결과 양식은 딕셔너리 형태로 key로 statusCode와 body를 가집니다.statusCode는 성공 시 200, 실패 시는 500 등으로 설정해주시고,body에는 출력을 원하는 메시지를 적어주시면 됩니다. 예를 들어, 특정 url의 상태를 검사하는 코드 스니펫은 다음과 같습니다.import jsonimport requestsdef lamb..

Infra/AWS 2024.12.12

도커 파일 작성 기본 예제(React 프로젝트 예시)

이번 글에서는 리액트 프로젝트의 Dockerfile 작성 방법을간단한 예제를 통하여 이해해보도록 하겠습니다.(아래의 Step 1과 Step 2 부분의 내용을 이어서 한 파일로 작성해주시면 됩니다.)  Step 1. 애플리케이션 빌드# Step 1: 애플리케이션 빌드FROM node:22.6.0-slim AS builder# 앱 디렉토리 생성WORKDIR /app# package.json 및 package-lock.json 파일 복사COPY package*.json ./# 모듈 설치RUN npm install# 코드 복사COPY . ./# 빌드 진행RUN npm run build 도커 파일의 앞 부분에서는 애플리케이션 빌드를 진행하게 됩니다.먼저, 원하는 node.js 버전을 선택하여 베이스 이미지로 고른..

Infra/Docker 2024.09.13

k8s ALB ingress 배포 앱의 timeout이 60초로 제한될 때 해결법

서비스를 배포한 코드와 도커 환경 내에서는 타임아웃이 60초보다 더 길지만(즉, 로컬 환경에서는 정상 실행이 가능)배포 이후 60초의 timeout 제한이 걸리는 경우가 있습니다. 만일, timeout이 제한되는 앱이 쿠버네티스에서 ALB 유형의 ingress로 배포한 서비스라면 ALB를 설정한 ingress yaml 파일에서 다음과 같은 사항이 포함되어있는지 확인해봅니다.(아래 예시는 timeout이 2분으로 설정된 경우입니다.)metadata: annotations: alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=120 만일, alb.ingress.kubernetes.io/load-balancer..

Infra/Debugging 2024.09.03

k8s에서 웹 서비스 배포 후 "backend service is not existed" 현상 해결법

쿠버네티스에서 웹 페이지로 구성된 서비스를 배포한 이후,정상적으로 페이지가 보이지 않고 흰 화면에 "backend service is not existed"메시지만 나오는 경우 해결 방법을 간략하게 정리해보도록 하겠습니다.  해결 매뉴얼1. 먼저, 다음 명령어를 통하여 의도한 namespace 내에 서비스가 잘 배포되었는지 확인합니다.kubectl get svc -n  위 명령어로 조회한 결과, 서비스가 목록에서 조회되지 않는다면,오타가 있었거나 엉뚱한 이름이 대신 지정된 경우가 흔하기에service yaml 파일 등을 열어 namespace나 app 이름이 올바르게 지정되었는지확인하고 수정 후 다시 배포합니다. 2. 만일, 서비스 배포 자체는 되었지만 배포 상태에 이상이 있는 경우라면,아래의 명령어를 ..

Infra/Debugging 2024.08.30

쿠버네티스 Deployment yaml 파일 작성 및 명령어 예제 정리

Kubernetes(K8s)에서 애플리케이션 배포 및 관리를 자동화하는데 필수적인deployment의 yaml 파일을 작성하는 방법과 이용하는 명령어를예제들을 중심으로 간략하게 정리해보도록 하겠습니다.  Deployment 이점 / 사용하는 이유k8s에서 pod를 수동으로 배포하는 것도 얼마든지 가능하지만,실무에서는 deployment를 이용한 배포를 많이 활용합니다. 이에는 다음과 같은 이점이 있습니다.pod가 실행 중 오류가 발생하더라도 지정된 개수의 pod를 유지할 수 있도록 관리해줍니다.애플리케이션 업데이트 시 안정적으로 진행할 수 있는 기능을 제공합니다.새로운 버전에 오류가 생긴 경우, 이전 버전으로 롤백이 용이합니다.  Deployment yaml 파일 예제기본적인 deployment를 다루는..

쿠버네티스 Node/Pod Affinity와 Taint-Tolerations 개념 정리

kubernetes(k8s) 에서 많이 사용되지만 혼동되는 개념인Affinity와 Taint-Tolerations에 대해서 정리해보도록 하겠습니다.  0. 언제 사용되는 개념인가요?해당 개념들은 Pod를 Node에 배정하는 스케줄링을 진행할 때,조건을 제어하는 용도로 사용됩니다.  1. Node Affinity사용 목적Pod를 특정한 조건을 만족하는 Node에 배정하고 싶을 때 사용합니다.  종류- 필수 조건 (requiredDuringSchedulingIgnoredDuringExecution):반드시 만족해야 하는 조건입니다.해당 조건을 만족하지 않으면 Pod는 해당 노드에 스케줄링되지 않습니다.- 선호 조건 (preferredDuringSchedulingIgnoredDuringExecution):만족..

쿠버네티스 kubectl 주요 명령어 정리

kubernetes(k8s) 클러스터를 다루기 위한 명령줄 도구인 kubectl의기초적인 명령어 목록들에 대하여 간략하게 정리를 해보도록 하겠습니다.  1. 클러스터 / 노드 정보 관련# 클러스터 정보 확인kubectl cluster-info# 노드 정보 확인kubectl get nodes  2. 네임스페이스 관련# 네임스페이스 리스트 확인kubectl get namespaceskubectl get ns# 네임스페이스 생성kubectl create ns # 네임스페이스 삭제kubectl delete ns   3. Pod 관련# 파드 리스트 확인(default namespace 기준)kubectl get podskubectl get pokubectl get po -o wide # 상세 정보 포함# 모든 네..

도커 컨테이너 종료 / 삭제 및 이미지 제거 방법

실행 중인 Docker container를 중지하고 더 이상 사용되지 않을 컨테이너를제거하는 방법, 그리고 컨테이너를 생성했던 이미지까지 삭제하는 방법을차례대로 하나씩 정리해보도록 하겠습니다.  Docker 컨테이너 중지 방법먼저, docker ps 명령어로 실행 중인 도커 id 혹은 이름을 확인합니다. 이후, 다음과 같은 명령어로 도커 컨테이너 종료가 가능합니다.docker stop [컨테이너 ID 또는 이름]# 실제 사용 예제(id가 a1b2c3d4e5, name이 mysql인 경우 둘 다 가능)docker stop a1b2c3d4e5docker stop mysql  Docker 컨테이너 삭제 방법컨테이너 실행 종료 이후, 해당 container를 더 이상 사용하지 않을 계획이라면컨테이너 삭제를 진행..

Infra/Docker 2024.05.10

종료된 도커 컨테이너를 찾고 재실행하는 방법

Docker container가 중지된 경우, 해당 컨테이너의 id를 찾고다시 실행하는 명령어에 대하여 간략하게 정리해보도록 하겠습니다.  종료된 Docker 컨테이너 id 탐색 명령어일반적인 docker ps 명령어로는 현재 실행 중인 도커 컨테이너들만 조회가 됩니다.중지된 도커 컨테이너까지 함께 조회하기 위해서는 docker ps -a 명령어로-a 추가 옵션을 같이 지정해주어야 합니다. STATUS 항목이 다음과 같이 Exited로 되어있는 컨테이너가 종료된 컨테이너에 해당됩니다.CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS ..

Infra/Docker 2024.04.28

Dockerfile로부터 도커 이미지 생성 / 컨테이너 실행 명령어 정리

프로그램을 도커로 실행하기 위해 필요한 도커파일을 작성한 뒤에 Dockerfile로 부터 도커 이미지를 생성하고 컨테이너를 실행하는 과정이 필요합니다. 이 글에서는 이 과정들에 필요한 명령어들을 간략하게 정리해보도록 하겠습니다. Step 1. 도커 이미지 생성(docker build) 컨테이너 실행을 위해서는 먼저 docker image 생성이 필요합니다. 이를 위해서는 docker build 명령어가 수행되어야 하며, 명령어의 포맷은 다음과 같습니다. docker build -t [이미지명]:[태그] [Dockerfile 위치] -t [이미지명]:[태그]는 생성될 이미지의 이름과 태그를 지정합니다. 태그는 선택 사항이며, 생략할 경우 latest가 기본값으로 지정됩니다. [Dockerfile 위치]는 ..

Infra/Docker 2024.02.28
반응형