본문 바로가기

분류 전체보기101

쿠버네티스 네임스페이스 삭제 안될 때 해결하기 (Terminating long time) 특정 네임스페이스에 해당하는 모든 쿠버네티스 리소스를 한 번에 삭제하고 싶어서 네임 스페이스 삭제 명령어를 입력했음에도 계속해서 Terminating 상태에서 변경되지 않는 경우가 있다. 이런 경우 어떻게 해결해야 할까? 아래 이미지처럼 네임스페이스가 계속해서 삭제되지 않는다. 1. 원인 파악하기 해당 네임스페이스를 describe를 통해 확인한다. kubectl describe namespaces [네임스페이스 명] 명령어 호출 후 출력된 내용에 SomeResourcesRemain / SomeFinalizersRemain 등의 Reason과 Message에 어떤 리소스가 남아 있는지 확인할 수 있다. 메시지 내용을 자세히 살펴보자. Some resources are remaining: cephblock.. 2024. 3. 24.
최신 IntelliJ(2023.2 이후 버전) GitLab 토큰 연결 방식을 비밀번호 방식으로 바꾸는 방법 최근 인텔리제이(IntelliJ) 2023.2 버전부터 GitLab 메뉴가 신규로 생성되어 GitLab 계정을 인증하는 경우, 기본적으로 토큰으로 인증하는 방식으로 강제되었다. 일반 GitLab을 사용하는 사용자면 문제가 없을 수도 있지만, 기업 등에서 사설로 사용하는 GitLab 같은 경우는 토큰 인증이 제대로 되지 않아 문제가 발생할 수 있다. 실제로 사내에서 운영 중인 사설 GitLab에서 토큰을 발급해서 입력해도 인증이 정상적으로 되지 않았다. (GraphQL 관련 오류 메시지가 출력된다.) 해당 포스트에서는 최신 인텔리제이(IntelliJ) 2023.2 이후 버전에서 GitLab 강제 토큰 인증 방식을 해제하고 비밀번호 인증 방식으로 변경하는 방법에 대해 설명한다. 해제하는 방법은 간단하다. 인.. 2024. 3. 20.
Helm Chart - Loki 설치 및 그라파나 연결 방법 쿠버네티스 환경에서 Helm Chart를 이용해서 Loki를 설치 및 설정하고, 그라파나에 연결하는 방법에 대해 공유하고자 한다. 해당 포스트에서는 작성당시 Helm Chart 최신 버전의 Loki를 사용하였다. (5.43.6) 1. Helm Chart 설치 helm repo add grafana https://grafana.github.io/helm-charts helm pull grafana/loki tar xvfz loki-5.43.6.tgz cd loki 2. values.yaml 설정 loki 폴더에 있는 values.yaml 파일을 편집기로 열어서 global 부분에 dns 설정을 수정해야 한다. global: image: # -- Overrides the Docker registry glob.. 2024. 3. 11.
클라우드 환경에서 다른 인스턴스로 암호없이 ssh 접근하기 (ssh-copy-id 대안) 클라우드 환경에서 인터넷에서 인스턴스를 직접 액세스 하기 위해 필요한 IP(플로팅 IP)를 하나의 인스턴스에만 부여하고, 다른 인스턴스는 ssh 명령어를 통해 접근으로 사용해야 하는 경우가 존재한다. 플로팅 IP가 연결된 인스턴스에서 ssh-keygen을 통해 키를 생성한 뒤, ssh-copy-id 명령어를 통해 다른 인스턴스에 키를 공유하려고 해도 인증에 실패하며 접근이 불가능한 상황이 발생한다. 퍼블릭 클라우드 인스턴스에 접근하는 경우, 인스턴스 생성시 설정하는 키 파일(.pem)을 이용하는데 이걸 활용해서 넘겨야 한다. sudo cat ~/.ssh/id_rsa.pub | sudo ssh -i [pem 파일] [다른 인스턴스 계정]@[다른 인스턴스 IP] "cat - >> ~/.ssh/authoriz.. 2024. 3. 2.
FileZilla(파일질라) ppk 파일 이용해서 연결하는 방법 AWS 같은 클라우드 환경에서는 인스턴스에 SSH 접속할 때 pem, ppk 키 파일을 주로 활용한다. 인스턴스로 특정 파일을 옮겨야 할 때, 파일질라(FileZilla)를 활용하는 방법에 대해 공유한다. 우선, [ 파일 > 사이트 관리자로 접근 > 새 사이트 생성 ] 과정을 통해 새 사이트를 생성한다. 이후 아래 이미지와 같이 설정한다. - 프로토콜 = SFTP - 호스트 = (외부 노출된 인스턴스 IP) - 포트 22 입력 - 로그온 유형 = 키 파일 - 사용자 = 인스턴스 사용자의 기본 이름(ubuntu/ec2-user 등) - 키 파일 = 클라우드 서비스에서 제공한 pem 파일을 통해 생성한 ppk 파일 경로 설정 후 연결을 클릭하면 다음과 같이 정상적으로 연결되는 것을 확인할 수 있다. 2024. 3. 1.
Apache Solr를 활용하여 MariaDB 통합 검색 기능 구현하기 (2) 이번 포스트에서는 이전에 데이터 베이스에서 추린 테이블과 컬럼을 바탕으로 통합 검색 기능을 구현해 볼 것이다. MariaDB 드라이버 추가하기 MariaDB에 연결하기 위해서는 mariaDB 드라이버를 추가해야 한다. 하단의 경로에 접속해서 다운로드 버튼을 클릭한다. https://mariadb.com/downloads/connectors/connectors-data-access/java8-connector/ 다운로드가 완료된 jar 파일은 C:\solr\server\solr-webapp\webapp\WEB-INF\lib 에 추가한다. Solr와 연동할 설정 파일 연결하기 이전에 코어를 생성했다면, C:\solr\server\solr 폴더 경로에 생성한 코어 이름으로 폴더가 존재할 것이다. 해당 폴더 밑.. 2024. 2. 25.
Apache Solr를 활용하여 MariaDB 통합 검색 기능 구현하기 (1) RDBMS 데이터베이스에 있는 여러 테이블의 컬럼 값 중 '특정 키워드에 해당하는 데이터'를 찾고 싶은 경우에는 어떻게 해야 할까? 모든 테이블을 전부 조회(select)하는 쿼리나 코드를 만들기에는 부담이고, CDC 또는 Elastic search를 구축하고 기술을 학습하기에는 너무 과하다는 생각이 든다면, Apache Solr를 고민해 볼 만하다. 해당 포스트에서는 Apache Solr를 활용해서 여러 테이블의 컬럼 중 검색이 필요한 컬럼의 값들만 저장하고, 검색하는 방법에 대해서 설명한다. Apache Solr Apache Solr는 Apache Lucene 기반의 검색 플랫폼으로, 높은 성능과 확장성을 제공한다. Lucene은 텍스트 검색 및 색인화를 위한 강력한 라이브러리로, Solr은 이를 기.. 2024. 2. 24.
Controller에서 의존성 주입 대상 필드 값이 NULL이 되는 문제와 해결방안, 이유 👋 배경 컨트롤러 매핑 메서드에서 의존성 주입된 필드에 접근하는데, 해당 필드가 null로 되어서 NullPointException이 뜨는 상황이 발생했다. 의존성 주입 대상 필드는 컴포넌트 스캔 범위에도 포함되어 있었으며, @Component 어노테이션을 통해 빈으로 등록해 놓은 상황이라 경험상으로 의존성 주입된 필드 값이 null인 것을 이해할 수 없었다. 해당 문제에 대해 여기저기 찾아보다가 원인을 찾고 해결하게 되었다. 🔎 원인 어이없게도 컨트롤러 매핑 메서드의 접근 지시자가 private인 것이 원인이었다. @PostMapping("/") @ResponseStatus(HttpStatus.OK) private ProductResponse.Register register(ProductDto prod.. 2024. 2. 17.