목록기록 일기 (242)
오늘도 한 뼘 더

# 배경 2023.01.16 - [DevOps & Infra/Docker] - [Docker] Dockerfile 이용해 wkhtmltopdf 설치하기 [Docker] Dockerfile 이용해 wkhtmltopdf 설치하기 # 배경 html파일을 pdf로 변환해 주는 `wkhtmltopdf` 명령어를 사용하기 위해서 Docker Container 내부에 wkhtmltopdf를 설치해야 한다. 직접 설치를 하는 방법도 있지만, 직접 설치를 하면 Docker 컨테이너를 배 baekji919.tistory.com wkthmltopdf를 사용하여 html을 pdf로 변경하는 코드가 있는데 Dockerfile에 해당 패키지를 설치하는 명령어를 진행한 뒤 한글이 깨지는 문제가 발생하였다. 한글 폰트를 적용하기 위..

# 배경 Elastic Beanstalk(이하 EB)에 구성된 AutoScaling을 통해 EC2가 추가되거나 줄어들 때 원하는 패키지가 설치되어 있게 하기 위해 AMI를 생성하여 지정 해당 AMI를 지정하는 방식을 구현했다. 테스트로 진행한 방법이 실제 적용을 하려고 하는 중에 적용이 되지 않고 배포가 제대로 되지 않는 문제가 발생하였다. # 문제 이전에 테스트를 진행한 방식 그대로 적용했지만, 제대로 동작하지 않았다. EB의 구성에는 AMI가 변경된 것으로 나왔는데 인스턴스에 접근하여 확인하니 코드가 제대로 배포되지 않았고 500번 에러가 발생하는 것을 볼 수 있었다. 원인은 AMI를 잘못 생성해서 그런 것이었다. 사용하고자 하는 EC2의 인스턴스 유형과 AMI를 생성할 때 사용한 EC2의 인스턴스 ..

# 배경 wkhtmltopdf 패키지를 설치 후 wkhtmltopdf를 사용하여 만든 pdf를 열었는데 한글이 깨져 있었다. # 원인 해당 작업은 Linux 환경에서 진행했는데 Linux는 기본적으로 한글을 지원하지 않아서 발생하는 문제였다. 한글 폰트를 설치해 주면 해결이 되는 문제였다. # 한글 폰트 설치 $ wget https://github.com/spoqa/spoqa-han-sans/releases/download/2.1.0/SpoqaHanSans_original.zip $ unzip SpoqaHanSans_original.zip $ mkdir /usr/share/fonts/spoqafont $ cd SpoqaHanSans_original $ mv *.ttf /usr/share/fonts/spo..

# 배경 ElasticBeanstalk(이하 EB)을 통해서 만들어진 EC2에서 설치한 패키지를 인스턴스를 생성할 때 그대로 사용하고 싶었다. EB의 Autoscaling 설정으로 인해서 간혹 EC2가 종료되었다가 새로 올라가는 경우가 생기는데 이럴 때 설치했던 패키지를 사용하지 못하기 때문에 패키지가 설치되어서 올라갈 수 있는 방법이 필요했다. 그러다가 인스턴스를 통해서 AMI를 생성하는 방법을 알게 되었다. # AMI 생성하기 EC2 인스턴스를 선택 후 작업에서 이미지 및 템플릿에 이미지 생성을 누르면 AMI를 생성할 수 있다. 이미지 이름과 설명, 스토리지 크기를 설정할 수 있다. 이미지 생성을 클릭하고 EC2 > 이미지 > AMI를 보면 다음과 같이 생성이 되고 있는 것을 볼 수 있다. 대기 중에..

# 배경 EC2에 root 시스템에 공간이 없어 연결되어 있는 스토리지 볼륨을 늘려야 했다. 볼륨 크기를 늘리는 과정에서 에러가 발생 # 문제 sudo growpart /dev/nvme0n1 1 위 명령어를 통해서 볼륨 크기를 늘리려고 했을 때 다음과 같은 문제가 발생하였다. failed [sfd_list:1] sfdisk --list --unit=S /dev/nvme0n1 # 원인 및 해결방법 EBS 볼륨 크기를 늘리기 위해서는 연결되어 있는 서버에 여유 공간이 있어야 하는데 여유 공간이 없어 크기를 늘릴 때 에러가 난 것이다. https://aws.amazon.com/ko/premiumsupport/knowledge-center/ebs-volume-size-increase/ Amazon EBS에서 ‘..

# 배경 wkhtmltopdf 패키지를 ElasticBeanstalk으로 배포되는 서비스에서 사용을 해야 해서 해당 서비스에 패키지가 설치되어야 하는 업무가 주어졌다. ## Buildfile Buildfile에서는 build.sh에 작성된 쉘스크립트를 실행시킨다. build.sh를 코드 상에서 만들어서 git을 통해 올리면 build.sh가 실행 상태가 되지 않아 chmod 명령어로 실행 가능한 파일로 만들어주는 게 필요하다. make: chmod u+r+x ./build.sh make: ./build.sh ## build.sh ElastiBeanstalk을 배포할 때 이미 wkhtmltopdf가 설치되어 있을 경우 설치가 안되고 Fail이 떠서 그전에 삭제하는 작업을 먼저 진행해 주었다. 삭제하다가 오..

# 배경 ElasticBeanstalk을 사용하여 배포를 진행할 때 서버에 명령어를 선행시키고 싶다. # Buildfile 단기간 실행되고 작업 완료 후 종료되는 명령에는 Buildfile 사용 # Procfile 프로세스가 계속 실행되어야 하는 명령어는 Procfile을 사용 ## 현재 상황 보통 ElasticBeanstalk으로 배포를 진행하면 Buildfile과 Procfile이 올라갔다는 내용이 이벤트에 떠서 볼 수 있었다. 코드에 Buildfile과 Procfile을 작성하지 않아도 자동으로 실행이 되어 EC2서버로 접속하여 `/var/app/current`에 접근하면 Buildfile과 Procfile의 내용을 확인할 수 있다. 기본 Buildfile build: go build -o bin/..

# 배경 html파일을 pdf로 변환해 주는 `wkhtmltopdf` 명령어를 사용하기 위해서 Docker Container 내부에 wkhtmltopdf를 설치해야 한다. 직접 설치를 하는 방법도 있지만, 직접 설치를 하면 Docker 컨테이너를 배포할 때마다 설치를 해줘야 하기 때문에 Dockerfile에 설치 명령어를 작성하여 Docker 컨테이너가 올라갈 때마다 설치가 될 수 있도록 해야 한다. # 기존의 Dockerfile 변경 기존의 Dockerfile은 alpine 환경으로 올라가도록 작성되어 있었다. 근데 alpine 3.14버전 이상부터 wkhtmltopdf을 지원하지 않아 alpine이 아닌 ubuntu를 사용해야 했다. # Dockerfile 작성 FROM golang:1.19 AS b..

# 문제 내용 eks로 만든 cluster를 kubectl을 통해서 접근하려고 하니 다음과 같은 에러가 발생 > kubectl get pods error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" # 원인 kubectl 12.4.x 이상의 버전에서 eks와 연동해서 사용할 경우 발생하는 오류라고 한다. https://github.com/aws/aws-cli/issues/6920 aws eks update-kubeconfig invalid apiVersion · Issue #6920 · aws/aws-cli Describe the bug Update kubectl from v1.23.6 to 1.24.0 and run ..

# 배경 쿠버네티스의 CPU, Memory 등의 사용량 Metric을 보고 싶다. # 문제 metric을 보기 위해 다음 명령어를 입력하면 에러가 발생한다. > kubectl top nodes error: Metrics API not available # 원인 Metric-server가 없어서 발생하는 문제이다. metric-server 없이는 metric을 볼 수 없다. # 해결 방법 ## Metric-Server 설치 https://github.com/kubernetes-sigs/metrics-server GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kuber..