Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 웹 취약점
- CI
- gitlab cd
- sonarqube
- CD
- Grafana
- Crawling
- CI/CD
- deploy
- gitlab ci
- ECR
- argocd
- Service Mesh
- 모의해킹
- 크롤링
- docker
- DevOps
- helm
- Jenkins
- eks
- GitLab
- scraping
- 스크레이핑
- Prometheus
- linkerd
- Monitoring
- Resource
- opentelemetry
- Kubernetes
- 웹 해킹
Archives
- Today
- Total
ㅡ.ㅡ
[Service Mesh] Linkerd 본문
Linkerd CLI 설치
## Linkerd CLI 실행파일
curl -fsL https://run.linkerd.io/install | sh
cp .linkerd2/bin/linkerd-stable-2.11.1 /bin/linkerd
## 구동환경 체크
linkerd check --pre
## Linkerd Cluster 설치
linkerd install | kubectl apply -f -
## Linkerd Cluster 설치 확인
linkerd check
Linkerd-Viz(DashBoard) 설치
## Helm Chart 다운로드
helm repo add linkerd https://helm.linkerd.io/stable
helm repo update
helm pull linkerd/linkerd-viz --untar
## 아래 Values.yaml 수정 후 마지막에 실행
helm upgrade --install linkerd-viz -f values.yaml ./
Ingress 추가(template/ingress.yaml)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: linkerd-viz
name: linkerd-viz-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.order: '룰셋 번호'
alb.ingress.kubernetes.io/group.name: external-alb
alb.ingress.kubernetes.io/success-codes: 200,301,302
spec:
rules:
- host: 호스트명
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: web
servicePort: 8084
아래 이미지와 같이 사이드카 프록시를 통해 통신된 트래픽 정보를 대략적으로 확인할 수 있고 해당 파드와 그라파나 대시보드를 통해 상세한 내용을 볼 수 있다.
공식문서를 확인해 보면 Prometheus-Stack을 통해 데이터를 저장하는 방법도 있는거같다.....
테스트를 해봤지만 그라파나쪽에서 Prometheus에 저장된 필드명을 변경해야되는건지.. Helm Chart에 내장된 Prometheus+ Grafana와 같이는 표현되지않았다... 추 후 다시 테스트후 작성 예정! >> Grafana에서 irate함수 사용시 Prometheus-stack의 scrape interval의 기본값이 30초로 설정되어있어 데이터가 나오지않는 이슈였습니다(Linkerd DashBoard에서 irate 시간 값을 60s로 설정해도 데이터가 잘 나옴, 추가로 Grafana Linkerd DashBoard에서 Prometheus의 이름이 소문자로 설정되어있음 해당값을 대문자로 수정시 해결가능)
prometheus-stack에 적용하는 방법은 아래와 같이 linkerd, linkerd-viz라는 네임스페이스의 데이터 scrape설정을 추가한다.
namespace는 구축된 linkerd와 같이 변경해야됨
## Prometheus-stack values.yaml
2026 prometheusSpec:
2036 ## Defaults to 30s.
2039 scrapeInterval: "10s"
2043 scrapeTimeout: "10s"
2047 evaluationInterval: "10s"
2386 additionalScrapeConfigs:
2387 - job_name: 'linkerd-controller'
2388 kubernetes_sd_configs:
2389 - role: pod
2390 namespaces:
2391 names:
2392 - 'linkerd-viz'
2393 - 'linkerd'
2394 relabel_configs:
2395 - source_labels:
2396 - __meta_kubernetes_pod_container_port_name
2397 action: keep
2398 regex: admin-http
2399 - source_labels: [__meta_kubernetes_pod_container_name]
2400 action: replace
2401 target_label: component
2402
2403 - job_name: 'linkerd-service-mirror'
2404 kubernetes_sd_configs:
2405 - role: pod
2406 relabel_configs:
2407 - source_labels:
2408 - __meta_kubernetes_pod_label_linkerd_io_control_plane_component
2409 - __meta_kubernetes_pod_container_port_name
2410 action: keep
2411 regex: linkerd-service-mirror;admin-http$
2412 - source_labels: [__meta_kubernetes_pod_container_name]
2413 action: replace
2414 target_label: component
2415
2416 - job_name: 'linkerd-proxy'
2417 kubernetes_sd_configs:
2418 - role: pod
2419 relabel_configs:
2420 - source_labels:
2421 - __meta_kubernetes_pod_container_name
2422 - __meta_kubernetes_pod_container_port_name
2423 - __meta_kubernetes_pod_label_linkerd_io_control_plane_ns
2424 action: keep
2425 regex: ^{{default .Values.proxyContainerName "linkerd-proxy" .Values.proxyContainerName}};linkerd-admin;linkerd$
2426 - source_labels: [__meta_kubernetes_namespace]
2427 action: replace
2428 target_label: namespace
2429 - source_labels: [__meta_kubernetes_pod_name]
2430 action: replace
2431 target_label: pod
2432 # special case k8s' "job" label, to not interfere with prometheus' "job"
2433 # label
2434 # __meta_kubernetes_pod_label_linkerd_io_proxy_job=foo =>
2435 # k8s_job=foo
2436 - source_labels: [__meta_kubernetes_pod_label_linkerd_io_proxy_job]
2437 action: replace
2438 target_label: k8s_job
2439 # drop __meta_kubernetes_pod_label_linkerd_io_proxy_job
2440 - action: labeldrop
2441 regex: __meta_kubernetes_pod_label_linkerd_io_proxy_job
2442 # __meta_kubernetes_pod_label_linkerd_io_proxy_deployment=foo =>
2443 # deployment=foo
2444 - action: labelmap
2445 regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+)
2446 # drop all labels that we just made copies of in the previous labelmap
2447 - action: labeldrop
2448 regex: __meta_kubernetes_pod_label_linkerd_io_proxy_(.+)
2449 # __meta_kubernetes_pod_label_linkerd_io_foo=bar =>
2450 # foo=bar
2451 - action: labelmap
2452 regex: __meta_kubernetes_pod_label_linkerd_io_(.+)
2453 # Copy all pod labels to tmp labels
2454 - action: labelmap
2455 regex: __meta_kubernetes_pod_label_(.+)
2456 replacement: __tmp_pod_label_$1
2457 # Take `linkerd_io_` prefixed labels and copy them without the prefix
2458 - action: labelmap
2459 regex: __tmp_pod_label_linkerd_io_(.+)
2460 replacement: __tmp_pod_label_$1
2461 # Drop the `linkerd_io_` originals
2462 - action: labeldrop
2463 regex: __tmp_pod_label_linkerd_io_(.+)
2464 # Copy tmp labels into real labels
2465 - action: labelmap
2466 regex: __tmp_pod_label_(.+)
Linkerd-viz prometheus, grafana 비활성화 및 주소 설정
59 # -- url of external prometheus instance
60 prometheusUrl: "Prometheus 도메인"
61
62 # -- url of external grafana instance with reverse proxy configured.
63 grafanaUrl: "Grafana 도메인"
280 enforcedHostRegexp: "Linkerd-viz 도메인"
296 grafana:
297 # -- toggle field to enable or disable grafana
298 enabled: false
343 prometheus:
344 # -- toggle field to enable or disable prometheus
345 enabled: false
Springboot App/Linkerd Injector Enable 설정
template:
metadata:
labels:
app: {{ .Values.app_name }}
annotations:
linkerd.io/inject: enable
'Network' 카테고리의 다른 글
[Service Mesh] Istio (0) | 2022.02.02 |
---|---|
[ServiceMesh] Emissary Ingress/Linkerd (0) | 2021.12.11 |