helm version
version.BuildInfo{Version:”v3.x”, GitCommit:”xxx”, GitTreeState:”clean”, GoVersion:”go1.20.8”}
curl https://whatap.github.io/helm/ping
pong
helm repo add whatap https://whatap.github.io/helm/
helm repo update
whatap:
license:
host:
port:
hostNetworkEnabled: false
collect_apiserver_metric_by_leader: false
collect_custom_resources: false
collect_custom_resources_interval: 300000
addon:
npm:
enabled: false
gpu:
enabled: false
image: "nvcr.io/nvidia/k8s/dcgm-exporter:2.1.8-2.4.0-rc.3-ubuntu18.04"
apiserver_monitoring:
enabled: false
client_tls_verify:
etcd_monitoring:
enabled: false
etcd_ca_cert_path: "/etc/kubernetes/pki/etcd/ca.crt"
etcd_client_cert_path: "/etc/kubernetes/pki/etcd/server.crt"
etcd_client_key_path: "/etc/kubernetes/pki/etcd/server.key"
imagePullSecret:
name:
containerRuntime: "containerd"
daemonSetNpm:
name: whatap-npm-agent
label: whatap-npm-agent
containers:
npmAgent:
name: whatap-npm-agent
image: "whatap/k8s_npm:latest"
requests:
memory: "300Mi"
cpu: "200m"
limits:
memory: "350Mi"
cpu: "200m"
daemonSet:
name: whatap-node-agent
label: whatap-node-agent
tolerations:
- key: "node-role.kubernetes.io/master"
effect: NoSchedule
- key: "node-role.kubernetes.io/control-plane"
effect: NoSchedule
affinity: {}
initContainers:
nodeDebugger:
enabled: true
name: whatap-node-debug
image: "whatap/kube_mon"
containers:
nodeHelper:
name: whatap-node-helper
image: "whatap/kube_mon"
requests:
memory: "100Mi"
cpu: "100m"
limits:
memory: "350Mi"
cpu: "200m"
envs:
collect_nfs_disk_enabled: true
collect_kube_node_process_metric_enabled: false
collect_kube_node_process_metric_target_list: "kubelet,containerd,dockerd,crio,coredns,kube-proxy,aws-k8s-agent,kube-apiserver,etcd,kube-controller,kube-scheduler"
debug: false
nodeAgent:
name: whatap-node-agent
image: "whatap/kube_mon"
requests:
memory: "300Mi"
cpu: "100m"
limits:
memory: "350Mi"
cpu: "200m"
envs:
log_parser_containerd_std_enabled: false
collect_kube_node_process_metric_enabled: false
debug: false
count_interval: 5000
deployment:
name: whatap-master-agent
label: whatap-master-agent
replicas: 1
tolerations:
- key: "node-role.kubernetes.io/master"
effect: NoSchedule
- key: "node-role.kubernetes.io/control-plane"
effect: NoSchedule
affinity: {}
containers:
controlPlaneHelper:
enabled: true
debug: false
name: whatap-control-plane-helper
image: whatap/kube_mon
port: 9496
resources:
requests:
memory: "500Mi"
cpu: "500m"
limits:
memory: "500Mi"
cpu: "500m"
masterAgent:
name: whatap-master-agent
image: "whatap/kube_mon"
port: 6600
resources:
requests:
memory: "300Mi"
cpu: "100m"
limits:
memory: "350Mi"
cpu: "200m"
envs:
debug: false
clusterrole:
extraResources:
kubectl get nodes -o wide
containerRuntime: #CONTAINER-RUNTIME
whatap:
license: #WHATAP-LICENESE-KEY
host: "13.124.11.223/13.209.172.35"
port: "6600"
에이전트를 처음 설치하는 사용자는 아래와 같이 설치
helm install whatap-kube-agent whatap/kube -f values.yaml
기존 와탭 쿠버네티스 에이전트 사용자인 경우 clean install 을 위해 아래 명령어 입력
kubectl delete ns whatap-monitoring
kubectl delete clusterrole whatap
kubectl delete clusterrolebinding whatap
helm install whatap-kube-agent whatap/kube -f values.yaml
helm upgrade whatap-kube-agent whatap/kube -f values.yaml
helm uninstall whatap-kube-agent
whatap
이라는 이름으로 다른 Helm 레포지터리가 추가되어 있는 경우.
whatap
레포지터리 삭제후 설치 진행
helm repo remove whatap
whatap-monitoring
이라는 네임스페이스가 존재, 사용자가 yaml 로 와탭 쿠버 에이전트를 이미 설치한 경우 발생
whatap-monitoring
및 관련 리소스 삭제kubectl delete namespace whatap-monitoring
kubectl delete clusterrolebinding whatap
kubectl delete clusterrole whatap
clusterrole
,clusterrolebinding
리소스가 이미 존재
kubectl delete clusterrolebinding whatap
kubectl delete clusterrole whatap
와탭 쿠버네티스 에이전트를 설정하기 위한 values.yaml
파일 설정 항목입니다.
values.yaml
파일에서 사용자가 수정할 수 있는 주요 설정 항목
Whatap, 컨테이너 런타임 선택, 에이전트 배포를 위한 daemonSet
,deployment
에 대한 옵션 설명
Key | Type | Default Value | Description |
---|---|---|---|
whatap.license |
String | # <license-key> |
Whatap 라이센스 키 |
whatap.host |
String | # <whatap-server-host> |
Whatap 서버의 호스트 주소 |
whatap.port |
Int | # <whatap-server-port> |
Whatap 포트 번호 |
whatap.port |
Int | # <whatap-server-port> |
Whatap 포트 번호 |
containerRuntime |
String | "docker" |
사용 중인 컨테이너 런타임. "docker" , "containerd" , "crio" 중 선택 |
imagePullSecret.name |
String | null |
imagePullSecret |
daemonSet.name |
String | whatap-node-agent |
DaemonSet의 이름 |
daemonSet.label |
String | whatap-node-agent |
DaemonSet에 지정할 라벨 |
daemonSet.initContainers.nodeDebugger.enabled |
Bool | true |
Whatap 노드 디버거 컨테이너 활성화 여부 |
daemonSet.containers.nodeHelper.image |
String | whatap/kube_mon |
nodeHelper 컨테이너의 이미지. |
daemonSet.containers.nodeHelper.requests.memory |
String | 100Mi |
nodeHelper MEMORY request |
daemonSet.containers.nodeHelper.requests.cpu |
String | 100m |
nodeHelper CPU request |
daemonSet.containers.nodeHelper.limits.memory |
String | 350Mi |
nodeHelper MEMORY limit |
daemonSet.containers.nodeHelper.limits.cpu |
String | 200m |
nodeHelper CPU limit |
daemonSet.containers.nodeAgent.image |
String | whatap/kube_mon |
nodeAgent 컨테이너의 이미지 |
daemonSet.containers.nodeAgent.requests.memory |
String | 300Mi |
nodeAgent MEMORY request |
daemonSet.containers.nodeAgent.requests.cpu |
String | 100m |
nodeAgent CPU request |
daemonSet.containers.nodeAgent.limits.memory |
String | 350Mi |
nodeAgent MEMORY limit |
daemonSet.containers.nodeAgent.limits.cpu |
String | 200m |
nodeAgent CPU limit |
deployment.name |
String | whatap-master-agent |
Deployment의 이름 |
deployment.label |
String | whatap-master-agent |
Deployment에 지정할 라벨 |
deployment.replicas |
Int | 1 |
Deployment의 replica 수 |
deployment.containers.controlPlaneHelper.enabled |
Boolean | true |
whatap-control-plane-helper 컨테이너를 활성화 여부 |
deployment.containers.controlPlaneHelper.image |
String | "whatap/kube_mon" |
controlPlaneHelper 컨테이너의 이미지 |
deployment.containers.controlPlaneHelper.port |
String | 9496 |
controlPlaneHelper 컨테이너의 포트 번호입니다 |
deployment.containers.controlPlaneHelper.resources.requests.memory |
String | "300Mi" |
controlPlaneHelper 컨테이너 MEMORY request |
deployment.containers.controlPlaneHelper.resources.requests.cpu |
String | "100m" |
controlPlaneHelper 컨테이너 CPU request |
deployment.containers.controlPlaneHelper.resources.limits.memory |
String | "350Mi" |
controlPlaneHelper 컨테이너 MEMORY limit |
deployment.containers.controlPlaneHelper.resources.limits.cpu |
String | "200m" |
controlPlaneHelper 컨테이너 CPU limit |
deployment.containers.masterAgent.name |
String | whatap-master-agent |
masterAgent 컨테이너 이름 |
deployment.containers.masterAgent.image |
String | "whatap/kube_mon" |
masterAgent 컨테이너 이미지 |
deployment.containers.masterAgent.port |
Int | 6600 |
masterAgent 컨테이너 포트 번호 |
deployment.containers.masterAgent.resources.requests.memory |
String | "300Mi" |
masterAgent 컨테이너 MEMORY request |
deployment.containers.masterAgent.resources.requests.cpu |
String | "100m" |
masterAgent 컨테이너 CPU request |
deployment.containers.masterAgent.resources.limits.memory |
String | "350Mi" |
masterAgent 컨테이너 MEMORY limit |
deployment.containers.masterAgent.resources.limits.cpu |
String | "200m" |
masterAgent 컨테이너 CPU request |
gpuEnabled |
Boolean | false |
Enables GPU if set to true . This is used to enable hardware acceleration for applications that support it. |
istioEnabled |
Boolean | false |
Enables Istio automatic injection if set to true . This is useful for deploying applications that benefit from Istio’s service mesh capabilities. |
k8sOldVersion |
Boolean | false |
Set to true if using an older version of Kubernetes. This helps in managing compatibility issues with deprecated features. |
values.yaml
을 이용한 주요 구성 수정 방법
whatap:
license: "라이선스 키 입력"
host: "와탭 수집서버 호스트 입력"
port: "와탭 수집서버 포트 입력"
values.yaml
예시:daemonSet:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
- key: node-role.kubernetes.io/control-plane
effect: NoSchedule
deployment:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
- key: node-role.kubernetes.io/control-plane
effect: NoSchedule
values.yaml
예시:
deployment:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
logsink_enabled: true
log_filter_enabled: true
log_filter_allow_list: "*_infra_*, *_monitoring_*"
log_filter_deny_list: "*prod*_*_*"
helm search repo whatap --version '>=1.7.11'
결과확인
# 1.7.11 이상인 경우 다음과 같이 출력됨
NAME CHART VERSION APP VERSION DESCRIPTION
whatap/kube 1.7.11 1.0 Whatap monitoring components on Kubernetes
# 1.7.11 미만인 경우 다음과 같이 출력됨(helm repo update 로 차드 업데이트)
No results found
1.8.88 이상 버전인 경우 아래 명령어를 통해 에이전트가 설치될 namespace 를 지정할 수 있습니다.
helm install whatap-kube-agent whatap/kube --create-namespace --namespace <namespace>
###
helm lint charts/kube
==> Linting . 1 chart(s) linted, 0 chart(s) failed
helm install whatap-kube-agent charts/kube --dry-run --debug
helm package charts/kube/
helm repo index --url https://whatap.github.io/helm/ --merge index.yaml .
## revision 에서 사용하는 values.yaml 확인
helm get values whatap-kube-agent --revision=<조회할 revision>
└── kube
├── Chart.yaml
├── README.md
├── index.yaml
├── templates
│ ├── clusterrole.yaml
│ ├── clusterrolebinding.yaml
│ ├── configmap-master.yaml
│ ├── configmap-node.yaml
│ ├── daemonset.yaml
│ ├── deployment.yaml
│ ├── service.yaml
│ └── serviceaccount.yaml
├── values.yaml
└── kube-*.tgz