목록DevOps (58)
오늘도 한 뼘 더

# 배경 로컬에서 서버를 ssh로 접근하고 일정 시간 입력이 없으면 다음 메시지가 뜨면서 연결이 끊기게 된다. 이 시간이 생각보다 짧아서 스크립트가 돌아가는 중 연결이 끊길까 엔터키를 몇 번 쳤던 경험이 있다. 이 시간을 늘리도록 해보자 $ client_loop: send disconnect: Broken pipe # connection 시간 늘리기 위와 같은 현상은 서버가 클라이언트가 살아있는지 확인을 하는데 응답이 없을 때 발생하기에 이 시간과 횟수를 늘리면 된다. SSH 설정 파일에 접근한다. $ sudo vi /etc/ssh/sshd_config 아래와 같이 설정값을 활성화 및 작성한다. 300초 * 3 = 900초 동안 클라이언트에게 응답을 요청한다. ClientAliveInterval 300 ..

# 배경 현재 회사에서 AWS 클라우드를 사용하고 있고 인프라 관리를 쉘스크립트를 통해서 진행하고 있다. 최근 많은 회사들이 Terraform, Ansible과 같은 IaC(Infrastructure as Code)를 많이 사용하고 있다고 해서 관심을 같게 되었다. 같은 환경의 리소스를 복제하여 만들 때 유익하다는 이야기를 듣고 클러스터 복원하는 스크립트를 만들어볼 수 있을 것 같다는 생각으로 시작하게 되었다. # Terraform이란? Terraform(테라폼)은 하시코프에서 오픈소스로 개발 중인 클라우드 Infrastructure 자동화를 지향하는 IaC(Infrastructure as Code) 도구이다. # Terraform 구성 출처 : https://developer.hashicorp.com/..

# 배경 Grafana에서 모니터링 중 값이 일정 값을 넘어가거나 낮아지면 알림을 받고 싶다. # Grafana Alert 사용하기 출처 : Grafana 공식 문서(Overview) # Contanct points 생성하기 알림을 보내기 위한 수신 채널을 생성한다. Slack에서 webhook URL을 복사하여 작성하고 Slack Setting의 경우 메시지를 어떻게 보낼지에 따라 설정을 다르게 해서 작성한다. Notification settings에서 Disable resolved message를 선택하면 alert에 발송된 문제가 해결된 뒤에 메시지를 받지 않도록 설정하는데 문제가 해결되었는지 확인을 하기 위해서 이 부분은 선택을 하지 않았다. Test 버튼을 눌러서 성공하면 Slack에 다음과 같..

# 배경 개발자가 작성한 테스트 코드를 돌리고 나서 결과에 따라서 GitLab에서 바로 Merge가 되지 않았으면 한다는 요구 조건이 있었다. 이전에 테스트 코드 실행은 GitLab에서 Merge Request가 열리면 Webhook을 통해서 Jenkins에서 테스트 코드가 실행되었다. 위의 요구 조건을 실행하기 위해서 GitLab의 CI/CD 툴을 사용하기로 하였다. # .gitlab-ci.yaml gitlab ci/cd의 경우 레포지토리에 .gitlab-ci.yaml 파일을 포함하고 있으면 자동으로 pipeline이 실행이 된다. gitlab repository > Settings > CI/CD에 들어가면 변수 세팅을 할 수 있다. 변수를 세팅할 때 Protected로 변수를 설정할 경우 Protec..

shell script를 작성하면서 어떠한 조건에 따라서 변수만 달라지는 경우에 같은 내용을 하나의 스크립트로 작성을 하고 싶었고 shell script에서도 if문과 case문을 사용할 수 있다는 것을 확인했다. # if문 if문의 경우 if문 뒤에 조건을 [[ ]] 로 묶어서 작성한다. 조건문 뒤에는 ";"과 then을 붙여서 조건문에 맞을 경우의 문장을 작성한다. if문을 끝낼 때에는 fi를 마지막에 작성하여 끝낸다. else문은 if문이 다 끝나기 전에 안에 작성한다. #!/bin/bash if [[ $# == 0 ]]; then echo "Insert Variable" exit else echo "Hello this is script" exit fi # case 문 스크립트 실행 시 넘기는 첫 ..

# 배경 Grafana를 도커로 올리는 과정에서 바로 Exit가 되면서 진행되지 않았다. docker logs 명령어를 통해서 확인해 본 결과 다음과 같은 에러 메시지를 확인할 수 있었다. You may have issues with file permissions, \ more information here: \ http://docs.grafana.org/installation/docker/#migrate-to-v51-or-latermkdir: \ can't create directory '/var/lib/grafana/plugins': Permission denied # 문제 해당 파일에 접근할 수 없는 권한 문제로 사용자를 변경하거나 권한을 추가하하면 된다고 한다. # 해결 방법 1. docker-c..

# 배경 서비스를 Elastic Beanstalk에서 EKS로 변경을 하면서 모니터링을 위해 Prometheus와 Grafana를 설치한다 # docker-compose.yaml 작성 version: '3.7' services: # 설치하려는 컨테이너 목록 prometheus: network_mode: bridge image: prom/prometheus:latest container_name: prometheus user: root command: - '--web.enable-lifecycle' - '--config.file=/etc/prometheus/prometheus.yaml' volumes: - /monitor/prometheus/config:/etc/prometheus/ - /monitor/p..

# 배경 Jenkins 작업 중 사용하던 플러그인 하나가 작동하지 않아서 Jenkins 관리에 들어가니 다음과 같이 빨갛게 경고가 떠있고 그 내용 중 작동하지 않는 플러그인에 대해 Vulnerability 경고가 떠 있었다. # 문제 해당 문제는 설치되어 있는 플러그인에 대한 취약점이 발견되면 뜨는 경고라고 한다. 문제를 해결하기 위해서는 일단 플러그인 관리에서 확인하여야 한다고 한다. # 해결 플러그인 관리에 들어가면 두 가지 색으로 경고 창이 나뉘는데 | 파란색 경고창 아래의 사진과 같이 파란색의 경고창이 뜨는 경우는 젠킨스 자체 버전을 업그레이드해야 하는 경우이다. | 노란색 경고창 아래와 같은 노란색 경고창의 경우 플러그인의 버전만 업그레이드하면 해결되는 경고이다.

# 배경 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에 해당 패키지를 설치하는 명령어를 진행한 뒤 한글이 깨지는 문제가 발생하였다. 한글 폰트를 적용하기 위..

DevOps 포지션으로 면접을 볼 기회가 생겨 면접을 봤다. 아직은 경험을 많이 쌓아야 하지만 그래도 면접을 지속적으로 보면 내 현재 값을 파악할 수 있다고 해서 기회가 생기면 보려고 하고 있다. # 면접 내용 처음 면접에 대한 설명을 들었을 때 다대일임을 들었고 3대 1 정도로 생각했는데 4대 1이어서 조금 놀랬다. 먼저 자기소개를 진행했다. 면접을 보면 자기소개는 무조건 일단 하고 보는 것 같다. 면접 때 받았던 질문을 끝나고 생각나는 대로 복기해보았다. 순서가 뒤죽박죽이다... ## 면접 질문 회사에서 팀 구성이 어떻게 되어 있는지 DevOps직무는 어떻게 선택하게 되었는지 - 이 직무를 계속하고 싶은 이유 - DevOps는 어떤 직무라고 생각하는지 배포 프로세스에 대한 설명을 해줄 수 있는지 - ..