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

# 배경 도커로 올린 jenkins의 이미지를 변경하는 과정에서 다음과 같은 에러가 발생했다. Unable to read /var/jenkins_home/config.xml # 문제 다음과 같은 에러 메시지가 뜨면서 Jenkins가 시작이 되지 않았다. config.xml파일을 백업으로 이름을 변경하고 올리면 Jenkins가 재시작이 되었는데 문제는 설정이 다 초기화되는 상태였다. ---- Debugging information ---- cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : hudson.security.GlobalMatrixAuthorizationStrategy class :..

# 배경 GitLab에서 CI/CD를 제공하는데 gitlab-ci.yaml을 작성하고 돌리니 gitlab runner 설치가 필요하다는 메시지가 나왔다. # GitLab Runner 설치 ## gitlab-runner 다운로드 # 다운로드 $ sudo curl -L --output /usr/local/bin/gitlab-runner \ "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64" # 권한 부여 $ sudo chmod +x /usr/local/bin/gitlab-runner # 설치 $ sudo apt-get install gitlab-runner ## gitlab-runner 등록 G..

# 배경 작업 중인 디렉터리에서 git을 사용하려고 하는데 에러가 발생했다. # 문제 git status 명령어를 실행시키는데 다음과 같은 에러가 나타났다. $ git status > fatal: detected dubious ownership in repository at 위의 문제는 Git의 보안 이슈로 인해서 해당 경로가 차단돼서 나타나는 문제라고 한다. # 해결 방법 다음 명령어를 통해서 해당 경로를 안전 경로로 등록을 해주면 된다. $ git config --global --add safe.directory [directory path]

# 배경 서버에서 불필요한 디렉터리 및 파일을 일괄적으로 삭제하고 싶었다. 서버에 temp 디렉터리와 파일을 삭제하고자 한다. find와 exec를 사용하여 삭제할 수 있다고 한다. # 특정 디렉터리 일괄 삭제하기 temp를 포함한 폴더를 일괄 삭제하는 명령어는 다음과 같다. $ find . -name "*temp*" -type d -exec -rm -r {} + . : 현재 디렉터리에서 검색함을 뜻한다. -type d : 디렉터리로 검색을 제한한다. -name "*temp*" : temp를 포함하는 디렉터리를 검색한다. -exec : 뒤에 붙는 명령어를 실행해 주기 위한 옵션 {} + : rm 명령어 끝에 검색된 폴더를 추가한다. # 특정 파일 일괄 삭제하기 temp를 포함한 파일을 일괄 삭제하는 명령..

# 배경 jenkins에서 helm 명령어를 실행해야 해서 'apt-get install kubernetes-helm' 명령어로 helm을 설치했는데 다음과 같은 에러가 발생했다. Error: Kubernetes cluster unreachable: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" # 문제 현재 사용하고 있는 EKS의 버전과 helm의 버전의 호환성에 문제가 있어서 해당 에러가 발생하는 것으로 확인했다. # 해결방법 helm의 버전을 낮추면 해결이 된다. 처음에 사용하고 있는 helm의 버전이 v3.13.2라서 로컬에서 사용하고 있는 v3.11.0으로 설치를 했는데 같은 오류가 발생했다. 검색을 통해서 같은 ..

# 배경 mysql에 복원 작업을 진행 중이었는데 다음과 같은 에러가 발생하면서 복원 작업이 중단되었다. ERROR 1114 (HY000): The table 'tb_name' is full # 원인 및 해결 방법 테이블에 더 이상 데이터를 추가할 수 없을 때 발생한다. 이 오류는 원인이 여러 가지라고 한다. 오류와 해결 방법을 알아보았다. 1. 디스크 공간 부족 서버의 디스크 공간을 확인한다. 디스크가 가득 찬 경우, 불필요한 파일을 삭제하거나 디스크를 확장하여 공간을 확보한다. 2. InnoDB 저장 엔진 제한 InnoDB 저장 엔진을 사용하는 경우, 데이터 파일의 최대 크기에 제한이 있습니다. InnoDB 테이블 스페이스의 크기를 늘려야 할 수 있다. 구성 파일(my.cnf 또는 my.ini)을 수..

# 배경 grafana 외에 직접 모니터링 및 개발자들이 사용할 수 있는 간단한 페이지를 만들고 싶다. 시니어분이 틀을 잡아놓은 페이지는 자바스크립트로 되어있는데 이 틀에서 원하는 것을 작성하기 위해서 자바스크립트와 HTML을 알아야 한다. ## HTML이란? 이건 Title입니다. ## HTML 기본 문서 #현재 문서가 HTML5 언어로 작성되어 있다. #웹 문서의 시작과 끝 #실제 브라우저에 보이는 내용 웹 개발 HTML HTML 삽입 미리보기할 수 없는 소스

# 배경 최근 쿠버네티스를 사용하게 되었는데 이전에 ElasticBeanstalk에서는 배포 방식을 선택할 수 있는 설정이 있었는데 쿠버네티스에서의 경우 어떤 방식으로 진행되는지 사실 생각해보지 못했다. 관련 질문을 받고 무슨 방식이 있고 현재 회사에서 사용하기에 제일 적절한 게 무엇인지 고민해 볼 필요가 있다고 생각됐다. # 무중단 배포 방식 실제 사용자가 사용하고 있기 때문에 특히 운영에 배포를 하는 데 있어 무중단 배포 방식은 중요하다! 무중단 배포 전략은 크게 3가지 방법이 있다. Rolling Update, Blue-Green, Canary 세 가지 방식에 대해 알아보고 정리해보고자 한다. # Rolling Update Rolling Update는 구 버전의 Pod을 하나씩 내리고 새 버전의 P..

Jenkins job에 대해서 pipeline으로 작성을 할 때 빌드 및 배포에 대한 결과에 따라서 다른 작업을 두 가지 방법으로 진행할 수 있다. # try / catch 사용하기 pipeline { agent any stages { stage('Checkout') { steps { script { try { build job: 'jenkins_job', parameters: [ string(name: 'parameter_name', value: "${parameter_value}")] } catch (e) { catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') { sh "exit 0" echo "error" } echo 'TEST Fail! But..

# 배경 보통 데이터 백업받을 때 워크벤치에서 export를 사용하거나 mysqldump를 사용했는데, 대부분 전체 데이터를 백업하면 돼서 조건에 맞는 특정 데이터만 받을 일이 없었는데 데이터를 나눠서 백업해야 하다 보니 특정 행들만 dump 해야 하는 상황이 발생하였다. 이때 where문을 쓸 수 있는 것을 확인했다. # 데이터만 백업하기 --no-create-info 옵션을 사용한다. mysqldump -h {hostname} -u {username} -p --no-create-info=TRUE {database} {table} > dump.sql # 조건 추가해서 데이터 백업하기 --where 옵션을 사용한다. mysqldump -h {host} -u {username} -p --no-create-..