분류 전체보기
-
Linux Load Average로 부하 확인하기커널(Kernel) 2022. 11. 27. 22:17
환경 정보 OS: ubuntu18.04 swap: off Load Average Load Average는 R(running)과 D(uninterruptted sleeping) 상태에 있는 프로세스를 1분, 5분, 15분마다의 평균 값을 나타낸 것인데, uptime 커맨드 사용시 확인할 수 있다. Load Average가 높으면 실행 중인 프로세스가 많거나 I/O등을 처리하기 위한 대기 상태에 있다는 것이다. 반대로 말하면 CPU를 많이 쓰는 프로그램을 사용하거나 I/O 리소스를 많이 사용하는 프로그램을 사용하면 Load Average가 높아질 수 있다. 좀 더 구체적으로 말하면 Load Average는 Run queue에 있는 프로세스 수에 의해서 결정이 되는데 이는 CPU core의 갯수에 따라서 다른..
-
ArgoCD와 Keycloak OIDC 연동하기K8S 2022. 11. 25. 14:14
개요 1. Keycloak 대시보드에서 argocd client를 생성한다. 2. client scope를 생성한다. 3. ArgoCDAdmin이라는 그룹을 만들고, 사용할 user를 group에 join시킨다. 4. argocd-secret에 oidc client secret 값 base64 인코딩하여 추가한다. 5. argocd-cm에 oidc.config를 추가한다. 6. argocd-rbac-cm configmap에 생성한 group명을 추가한다. 환경 argo-cd v2.2.5 1. Keycloak 대시보드에서 argocd client를 생성한다. 현 예시에서는 default realm인 Master realm에서 작업한다. 예시에서는 Root URL, valid redirect url 등을 설..
-
Keycloak client scope 정리메모 및 기타 2022. 11. 25. 12:22
OIDC 액세스 토큰이 생성되면 기본적으로 User의 모든 User role mapping이 토큰 내의 클레임으로 추가된다. 애플리케이션(클라이언트)은 이 토큰 정보를 사용하여 해당 애플리케이션이 제어하는 리소스에 대한 액세스 결정을 내린다. 만약 Application이 손상되거나 Realm에 등록된 악성 애플레케이션 클라이언트가 있는 경우, 공격자가 광범위한 권한을 가진 액세스 토큰을 얻을 수 있기 때문에 클라이언트의 권한 허용 범위를 제한할 필요가 있다. keycloak에서는 이를 client scope로 처리한다. Client scope란? Client Scope는 액세스 토큰 내 선언된 Role을 제한하는 방법이다. 클라이언트가 사용자 인증을 요청할 때, 사용자가 받은 액세스 토큰에는 client..
-
golang reflect로 struct 필드 순회하기메모 및 기타 2022. 11. 22. 16:56
Code package main import ( "fmt" "reflect" ) type Student struct { Name string Grade int Age int } type Animal struct { Name string Kind string Size int Age int } func main() { s1 := &Student{} LoopObjectField(s1) a1 := &Animal{} LoopObjectField(a1) } func LoopObjectField(object interface{}) { fmt.Println(reflect.TypeOf(object)) e := reflect.ValueOf(object).Elem() fieldNum := e.NumField() for i ..
-
Linux Top으로 확인할 수 있는 정보들커널(Kernel) 2022. 11. 21. 19:15
환경 정보 OS: ubuntu18.04 Top을 통해서 확인할 수 있는 정보들 top을 옵션 없이 사용하면, 3초마다 갱신된다. 특정 순간의 사용량을 보고 싶을 때는 -b 옵션을 사용한다. 위 이미지에서 다음과 같은 정보를 확인할 수 있다. 서버를 구동한지 19일 되었다. 3명의 사용자가 접속해있다. 현재 461개의 프로세스가 구동되고 있다. CPU, memory, swap 사용량을 확인할 수 있다. 프로세스 정보들 PR은 priority를 의미한다.(낮을 수록 우선순위가 높다) NI은 PR을 조절할 때 사용한다. VIRT: 가상 메모리 사용량 RES: 물리 메모리 사용량 SHR: 프로세스끼리 메모리를 공유하는 양 glibc를 예로 들 수 있는데, 대부분의 프로세스들은 glibc 라이브러리를 참조하기 때..
-
Linux 시스템 정보 확인하기(BIOS/CPU/Memory/DISK/NIC)커널(Kernel) 2022. 11. 21. 00:52
환경 정보 OS: ubuntu18.04 Bios 정보 확인하기 dmidecode 커맨드를 사용하면 시스템 컴포넌트의 정보를 쉽게 확인할 수 있다. 다음은 -t bios 인자를 주어 이 시스템의 BIOS를 확인한 것이다. 이 시스템은 American Megatrends Inc 에서 만든 서버이며, bios의 버전이 2019/08/13에 발표된 F2임을 알 수 있다. 시스템 정보 확인하기 주로 이 커맨드를 가장 많이 사용한다고 한다. 이 장비는 Gigabyte Technology Co.에서 만든 B365M D3H 모델이라는 것을 확인할 수 있다. CPU 정보 확인하기 -t processor를 인자로 주면 CPU 정보 확인이 가능하다. 여기서 소켓이라는 말이 나오는데, 소켓은 물리적인 CPU를 의미하며 소켓은..
-
Linux 커널 정보 확인하기커널(Kernel) 2022. 11. 20. 23:27
환경 정보 OS: ubuntu18.04 커널 버전 정보 확인 uname -a를 통해서 커널 버전이 4.15.0-194-generic 임을 알 수 있다. 커널 로그 확인 dmesg 커맨드를 사용하면 커널이 부팅할 때 나오는 메시지와 운영 중에 발생하는 메시지를 볼 수 있다 또한 Kernel command line에서 부팅시 사용한 커널 파라미터를 확인할 수 있는데 해당 커널 파라미터는 /proc/cmdline에서도 확인할 수 있다. 커널 컴파일 옵션 확인 Reference Devops와 SE를 위한 리눅스 커널 이야기
-
golang: Found, but does not contain packageTrouble Shooting 2022. 11. 19. 19:10
나같은 이상한 실수를 하는 사람이 없기를 바라면서, 작성한다. 새로운 pkg를 설치하려다 다음과 같은 error를 마주쳤다. # pkg 다운로드 시도 go get sigs.k8s.io/cluster-api-provider-vsphere/apis/v1alpha3@v0.7.6 # 실패 error go get: module sigs.k8s.io/cluster-api-provider-vsphere@v0.7.6 found, but does not contain package sigs.k8s.io/cluster-api-provider-vsphere/apis/v1alpha3 해당 error는 cluster-api-provider-vsphere라는 저장소는 찾았지만, apis/v1alpha3라는 pkg가 존재하지 않는..