Dev
Cobra로 Command 입력
개요 jeager의 소스 코드를 보다보니, cobra라는 package를 사용하고 있었고 검색해보니, 복잡한 파라미터를 사용하는 cli app 개발에 유용하며 kubeneties, jeager, promethtus등 go로 만들어진 많은 app 에서 사용하고 있다고 한다. cobra를 활용한 간단한 프로젝트를 해보려고한다. 데모 프로젝트 go_google_images 단어를 입력받아, 이미지를 검색해서 다운로드하는 간단한 프로그램입니다. cobra를 사용해서 커맨드 파라미터를 입력받을 것입니다. 기능 cobra로 param을 입력 받는다. 입력받은 검색어를 아래 URL로 google에 요청한다. "https://www.google.co.in/search?q="+QUERY+"&source=lnms&tbm=..
go 에서 time 없는 난수 발생
목적 랜덤 대진표를 만드려고 한다. local 환경에서 만드는 경우는 난수 생성시 seed 값을 time을 사용하는데, go playground 에서 실행해보니 항상 같은 값이 나왔다. 아마도 go-playground가 일종의 vm 이라서 최초 생성시 동일한 시간으로 생성되는것으로 추정된다. go-playground 에서도 랜덤하게 생성되도록 구현해보자. 방법 아래 예제에서는 crypto로 값을 seed를 초기화 하고 있다(init 함수). go-playground 에서도 Run 버튼 옆에 "Go dev branch"를 선택해야 정상 동작한다. package main import ( cryptoRand "crypto/rand" "encoding/binary" "fmt" mathRand "math/rand..
prompt에 kubernetes context 표시하기
목적 kubernetes를 멀티 클러스터로 구성했을때, 현재 context가 어떤 것인지 알아야 한다. 매번 조회하기도 귀찮고해서 프롬프트에 표시해보자 방법 .bashrc에 아래 내용을 추가한다. KUBEBIN=/usr/local/bin/kubectl _kube_get_context() { KUBE_CONTEXT="$(${KUBEBIN} config current-context 2>/dev/null)" IFS='@' read -a arr
nats - prometheus 연동
목적 nats -> prometheus -> grafana 구성으로 모니터링 환경을 구축 하려고 한다. 방법 nats와 prometheus 모니터링을 하기위해, nats 서버에 prometheus-nats-exporter를 설치 해야한다. nats와 nats-exporter 연동을 위해서는 nats-server 기동시 -m 옵션으로 모니터링 포트를 지정해야한다. nats-server -p 4222 -m 8222 nats-exporter를 기동한다. prometheus-nats-exporter -varz -jsz=all http://127.0.0.1:8222nats-exporter가 nats-server보다 먼저 기동되어서는 안된다. 8222 포트가 listen 된것을 확인하고, 기동해야 정상적으로 연동된..
Grafana와 EFS 연동
목적 Helm으로 설치한 Grafana가 Storage를 안잡았더니, pod가 생성될때마다 Datasource와 Dashboard 설정을 해줘야했다. 이를 위해 PVC 설정을 하려고 한다. 방법 grafana-pvc.yaml 생성 efs는 기존에 만들어진 efs-sc를 사용했다. kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-prom-grafana namespace: prometheus annotations: volume.beta.kubernetes.io/storage-class: efs-sc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi pvc 생성 및 확인 ..
promethues 쿼리 몇 가지
kubernetes에 prometheus & grafana로 구성하고, grafana 에서 사용한 prometheus 쿼리 몇가지 정리 합니다. 버전 Prometheus 2.26.0 Grafana 8.3.0 쿼리 Stat namespace 개수: count(kube_namespace_created) pvc 개수: count(kube_presistentvolumeclain_info) pod 개수: count(count by(pod)(container_spec_memory_reservation_limit_bytes{pod!=""})) container 개수: count(kube_pod_container_status_running{namespace!="/"}) Replica Rate: sum(kube_repl..