본문으로 바로가기

Istio 모니터링 (feat. nginx)

category Kubernetes/Kubernetes 사용법 2022. 12. 8. 09:28

1. nginx 설치

  1) nginx yaml 입력

     # vi nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

  2) nginx ns 생성

      # kubectl create namespace nginx

 

  3) Istio injection 설정 및 확인

      # kubectl label namespace nginx istio-injection=enabled

      # kubectl get namespace -L istio-injection

  4) nginx deploy

      # kubectl apply -f nginx.yaml -n nginx

  5) nginx service 등록

      # kubectl expose deployment/nginx-deployment --type="ClusterIP" --port 80  --protocol="TCP"

        * nginx deploy yaml에 사용한 name을 입력  (metadata.name)

 

2. istio gateway / virtualservice 등록

  1) nginx gateway / virtual service yaml 생성

      # vi nginx-istio-gw-vs.yaml

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: nginx-gateway
  namespace: nginx
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "nginx.172.30.3.252.nip.io"    # 사용할 hosts 
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginx-vs
  namespace: nginx
spec:
  hosts:
  - "nginx.172.30.3.252.nip.io"     # GW에 입력한 hosts와 동일하게 작성
  gateways:
  - nginx-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: nginx-deployment       # nginx에서 사용하고 있는 service 네임
        port:
          number: 80

  2) GW, VS 확인

      # kubectl get gateway -n nginx

      # kubectl get virtualservice -n nginx

   3) web page 접속

 

 

3. kiali 에서 트래픽 확인

  1) 트래픽 유발

     # watch curl nginx.172.30.3.252.nip.io    (본인 linux 서버에서 진행)

 

  2) kiali에서 확인

 

이렇게 nginx에 istio injection 및 ingress를 태운 후 traffic monitoring 까지 진행 하였다.

다른 container에도 istio-injection을 걸어서 모니터링 해보도록 하자.

'Kubernetes > Kubernetes 사용법' 카테고리의 다른 글

Argocd-github 연결  (0) 2022.12.12
Ingress 에 cert-manager 연결  (0) 2022.12.05
Kubernetes 네트워크 구조  (0) 2021.11.17