전체 글 112

vCluster (Multi-Tenancy in Kubernetes)

kubernetes 멀티 테넌시를 구현하며 vcluster 에 대해 공부한 내용에 대해 정리합니다. 1. vCluster 개요 vcluster 는 가상 Kubernetes 클러스터를 생성할 때 사용할 수 있다. 가상 클러스터 오버헤드를 줄이기 위해 vcluster는 기본적으로 k3s 에서 빌드합니다. k3s 외에도 k0s 및 Vanilla k8s와 같은 다른 Kubernetes 배포판 지원 각 vcluster 는 k8s 클러스터의 namespace 내에서 실행되며, 별도의 완전한 클러스터를 생성하는것보다 비용이 저렴하다. 일반 namespace 보다 더 나은 multi-tenancy 와 격리성을 제공한다. 가상 클러스터를 통해 사용자는 CRD(CustomResourceDefinitions), 네임스페이스..

Kubernetes 2023.07.10

[kubectl] kubectx + kubens 설정 및 자동 완성

1. kubectx kubectx는 cluster 간의 전환을 쉽고 빠르게 할 수 있게 해주는 플러그인입니다. A. kubectl 명령어를 이용한 context 변경 # 컨텍스트 리스트 출력 kubectl config get-contexts # kind-kind 를 기본 컨텍스트로 설정 kubectl config use-context kind-kind B. kubectx 설치 # kubectx 설치 wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubectx sudo install kubectx /usr/local/bin # 설치확인 $ which kubectx /usr/local/bin/kubectx C. kubectx 사용법 cont..

Kubernetes 2023.07.09

Lens 대신 k9s 를 사용해보자

Lens 를 사용하고 있었는데, (LENS는 쿠버네티스를 모니터링 및 관리할 수 있는 IDE이다.) 개발중 마우스에 손이 가는걸 매우 귀찮아하는 타입이고, 노트북을 옮겨다닐때마다 로그인을 해야하는 것도 귀찮아서 k9s 를 쓰기 시작했다. k9s Kubernetes 클러스터의 Pod, Service, Deployment 등의 리소스를 실시간으로 모니터링 특정 오브젝트를 검색하고 필터링하여 보기 쉽게 표시 노드, 네임스페이스, 레이블 등의 Kubernetes 오브젝트를 시각화하고 관리 k9s 설치 # mac brew install k9s # wsl (window) or ubuntu # 최신버전 확인 : https://github.com/derailed/k9s/releases wget https://githu..

DevOps, Infra 2023.07.09

Spring Boot Logging (log4j, logback, log4j2)

자바 로깅 프레임워크 log4j, logback, log4j2, apache common logging, slf4j 등 다양한 프레임워크 들이 있는데, 그중 log4j , logback, log4j2 을 비교해보겠습니다. Log4J 참고 | https://logging.apache.org/log4j/1.2/index.html 이중 가장 오래된 프레임워크로 로그 프레임워크에 대한 초반을 설정했다. EOL 상태이며, 보안취약점으로 인해 Log4j2 로 업데이트를 권고하고 있다. Logbak Log4J 개발이 중단되며, Log4j 를 대체하기 위해 출시됐으므로 Log4J 의 성능 부분에 대한 개선 작업이 많이 이루어 진 프레임워크이다. 자동 리로딩과 필터링 기능 지원 Spring Boot 에 기본적으로 적용돼..

Spring , JPA 2023.07.09

Linux 에서 정상적으로 프로세스를 중지하는 방법, Graceful Shutdown

Graceful Shutdown ? IT 쪽에서 graceful 의 의미는 "(유예를 가지고 있는) 부드러운/깔끔한/적합한"의미를 가지고 있다. 그래서 graceful shutdown 은 "(유예를 두는) 깔끔한 정상 종료", 혹은 의역하면 "깔끔하게 정상적인 종료를 하기위해 기다려줄 수 있는 것"의 늬앙스를 담아서 해석하는게 맞다. 그러므로 graceful close, graceful shutdown은 Process 의 요청 처리 과정에 있어서 유예 기간(다른 말로 타임아웃으로 이해해도 된다.)을 두고 앞서 전송된 요청 모두가 정상적으로 처리된 뒤에 깔끔하게 끊는 것을 말한다. 참고 : 오류를 잡자 : TCP에는 우아한 종료라는 것은 없다. SIGTERM 과 SIGKILL 의 차이점 Graceful S..

DevOps, Infra 2023.03.13

Spring Boot , Java Application Graceful Shutdown

1. Spring Boot Graceful Shudown Spring Boot는 자동으로 Graceful Shutdown을 지원하지 않으므로, 설정이 필요하다. Spring Boot 2.3 부터 Spring Boot는 이제 서블릿 및 반응형 플랫폼 모두에서 4개의 임베디드 웹 서버(Tomcat, Jetty, Undertow 및 Netty) 모두에 대해 정상적인 종료 기능을 지원한다. 정상적인 종료를 활성화하려면 application.yml 파일에서 server.shutdown 속성을 graceful 로 설정하기만 하면 된다. application.yml example (1) server.shutdown: graceful 그런 다음 Tomcat, Netty 및 Jetty는 네트워크 계층에서 새 요청 수락을..

Spring , JPA 2023.03.13

[Java] Checked Exception vs Unchecked Exception

Java 에는 세 종류의 예외가 존재하며, 각 예외는 아래와 같다. Checked Exception (체크 예외) Error Runtime Exception 혹은 Unchecked Exception (언체크 예외 , 런타임 예외) 쉽게 예외를 구분하는 예로, Error 와 Unchecked Exception 을 제외한 모든 예외는 Checked Exception 이다. Checked Exception (체크 예외) vs Unchecked Exception(언체크 예외) 의 차이점은 항상 throws 에 던지는 예외를 선언해야하는가 이다. Checked Exception (체크 예외) Checked Exception 는 Exception 을 잡아서 처리할 수 없을 때, 예외를 밖으로 던지는 throws 예..

슬슬의 공부 2023.03.09

[Java] Error vs Exception

목차 예외 클래스 관계도 Error (에러) 에러는 자바 프로그램 밖에서 발생한 예외를 의미합니다. 가장 흔한 예가 서버의 디스크가 고장났다든지, 메인보드 고장으로 인해 자바프로그램이 제대로 동작하지 못하는 경우가 여기에 속한다고 볼수 있습니다. Exception 클래스는 에러가 아닙니다. 자바 프로그램에 오류가 발생했을 때, 오류의 이름이 Error 로 끝나면 에러이고, Exception 으로 끝나면 예외입니다. 이는 자바를 제공하는 오라클에서 분류한 것입니다. 참고 : [Oracle] 예외의 종류와 관련 내용 Error (에러) vs Exception (예외) Error 와 Exception 의 가장 큰 차이는 프로그램 안에서 발생했는지, 밖에서 발생했는지 여부입니다. 자세히 말하면 Error 는 프..

슬슬의 공부 2023.03.09

[Ansible] include vs import

1. 요약 import 는 정적 (Static) 이며, 플레이북 (playbook) 이 Parsing 될 때 사전에 처리되어 일찍 에러를 확인할 수 있음 include 는 동적 (Dynamic) 으로, 플레이북 실행 중에 발생하는 대로 처리되므로 해당 task 에 도달했을때 에러를 발견할 수 있음 2. import tasks --- # main.yml - name: "[Jenkins] Install Jenkins" import_tasks: jenkins.yml - name: "[Jenkins] Set jenkins options" import_tasks: tune.yml 복잡한 작업을 여러 Task 로 나눌수있고, Task 는 나열된 순서 대로 실행된다. --- # main.yml tasks: - imp..

DevOps, Infra 2023.03.09

vagrant multi machine (multi vm)

VM 을 1개만 띄워서 테스트 하는경우 간단하지만, 실제 서버에 가깝게 구현하기 위해 VM 을 여러개 띄워 테스트해야할 상황이 많다. host pc 사양이 CPU intel core i7 RAM 32g 일때 무리 없이 사용했던 Vagrantfile 이다. 1. Vagrantfile box 이미지 : ubuntu/focal64 (Ubuntu 20.04 LTS) 2. vagrant 기동 PS C:\_DEV\_vagrant_workspace\vm> vagrant up 3. vagrant 간단한 명령어 # vagrant 접속 # vagrant ssh (vm host name) vagrant ssh vm-1 vagrant ssh vm-2 # vm-1 을 따로 기동시키고 싶을 경우 vagrant up vm-1 # ..

DevOps, Infra 2023.02.24