목록DevOps & Infra (151)
오늘도 한 뼘 더
# 배경 쿠버네티스 Pod을 올리는 과정에서 새로 올라간 Pod이 Pending이 나면서 올라가지 않았다. 자세한 내용을 확인해 본 결과 다음과 같은 에러 메시지를 확인하였다. kubectl describe pod {pod} Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 3s (x2 over 5m26s) default-scheduler 0/1 nodes are available: 1 Too many pods. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod. # 문제 해당 문제는 인스턴스에 만들 수 있..
# 배경 모든 환경에서 Dockerfile을 사용하여 코드를 배포하기 위해서 Elastic Beanstalk(이하 EB)에 Dockerfile을 사용하여 Docker Application으로 올려보기로 하였다. # Docker Application 환경 구성 Elastic Beanstalk의 구성은 이전에 진행한 방법과 다를 것이 없었다. Application을 생성할 때 플랫폼을 Docker로 선택해야 한다는 것 외에는 다 같은 방식으로 진행하였다. 2021.11.11 - [DevOps & Infra/AWS] - [AWS] ElasticBeanstalk 생성하기 [AWS] ElasticBeanstalk 생성하기 AWS ElasticBeanstalk 이란? https://docs.aws.amazon.co..
# 배경 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..
# 배경 S3에 보관 중인 데이터 중에 이전 버전이 필요 없는 것들이 있다. 만들어진 날짜 순으로 정렬해서 정리를 하려고 했는데 객체의 수가 999개를 초과하니 정렬이 불가능하다. S3에 수명 주기라는 것이 있어 이 규칙을 생성해서 정리할 수 있다고 한다. # 수명주기 규칙 생성하기 버킷 > 관리 > 수명 주기 규칙 생성 접두사 폴더나 파일명에 규칙이 있는 경우 작성해 주면 해당 폴더 및 파일에만 적용이 된다. 수명 주기 규칙 작업 현재 있는 객체들을 버전 만료로 변경하고 만료 처리된 객체들을 삭제하는 방법으로 진행하였다. 객체 생성 후 경과 일수 만들어진 지 90일이 지난 객체의 경우 버전을 만료 처리 객체의 이전 버전 영구 삭제 객체가 최신이 아닌 상태로 전환된 후 경과 일수 - 만료 상태로 변경되고..
# 배경 서비스를 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 경고가 떠 있었다. # 문제 해당 문제는 설치되어 있는 플러그인에 대한 취약점이 발견되면 뜨는 경고라고 한다. 문제를 해결하기 위해서는 일단 플러그인 관리에서 확인하여야 한다고 한다. # 해결 플러그인 관리에 들어가면 두 가지 색으로 경고 창이 나뉘는데 | 파란색 경고창 아래의 사진과 같이 파란색의 경고창이 뜨는 경우는 젠킨스 자체 버전을 업그레이드해야 하는 경우이다. | 노란색 경고창 아래와 같은 노란색 경고창의 경우 플러그인의 버전만 업그레이드하면 해결되는 경고이다.
# 배경 helm 차트를 사용하여 패키지를 추가하는 과정에서 다음과 같은 경고 메시지가 떴다. WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/.kube/config 보안상의 문제가 있는 건지 궁금해서 찾아보게 되었다. # 문제 해당 메시지가 떴던 이유는 config에 설정된 권한 때문이었다. 현재 권한이 제삼자도 읽기 권한을 가지고 있어 위와 같은 경고 메시지가 뜬 것이었다. # 해결 방법 위 문제는 무시해도 큰 문제는 없다고 했는데, 이런 경고 메시지를 받지 않기 위해서는 해당 파일의 권한을 다음과 같이 변경하면 된다. chmod 600 /home/.kube/config
# 배경 SSH 키를 사용해서 접근을 하려고 하는데 키에 관한 에러가 발생하면서 다음과 같은 내용이 떴다. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The ECDSA host key for gitlab.X.com has changed, and the key for the corresponding IP address X.X.X.X is unchanged. This could either mean that DNS SPOOFING is happening or ..
## 배경 ssh를 이용하여 gitlab에 접근하고자 했는데 gitlab을 도커 컨테이너로 설치하면서 도커 컨테이너 22번 포트가 제대로 열리지 않는 문제가 발생하였다. docker의 ssh 포트번호를 변경하고 ssh config를 통해서 변경된 포트로 연결될 수 있도록 설정하고자 한다. ## ssh config 작성 Host gitlab HostName gitlab.beautiful0.org User git Port 10022 Host : ssh 명령에 사용할 이름 HostName: Host에 지정된 이름이 매핑되는 호스트 명 User: 연결에 사용되는 계정 Port: 연결한 서버의 포트 번호 (기본 값: 22번) IdentityFile: 사용할 키의 위치 (기본값은 rsa의 경우 ~/. ssh/id_..
# 문제 Docker Image를 빌드하는데 sending build context to Docker daemon에 찍히는 수가 5GB가 넘어가고 있었다. 그래서 일단은 진행 중인 빌드를 중지시키고 해당 내용에 대해 검색해 보았다. # 원인 도커가 빌드를 할 때 해당 디렉터리의 모든 콘텐츠를 불러와 빌드를 하기 때문에, 루트 디렉터리에서 실행을 하게 되면 이런 경우가 발생한다고 한다. Docker 공식문서에도 루트 디렉토리는 피하라고 되어있었다. 실제로 루트 디렉토리에 디렉터리를 만들어서 그 안에서 실행했는데 그게 원인이었던 것 같다. # 해결 방법 루트 디렉토리가 아닌 home 디렉터리에 작업용 디렉터리를 만들어서 그 안에서 Dockefile을 복사해 주었다. 복사해 준 Dockerfile로 Docke..