Skip to content

Kiali on Istio

kimhyungkook edited this page Mar 7, 2019 · 6 revisions

Kiali 간략 설명

Kiali 는 각 마이크로 서비스간의 관계를 시각화 해주는 모니터링 툴 이다.
Kiali site 에 가보면 기본적인 모니터링 이외에도
Application(pods), Workload(deployment,statefulset..) and Service 들의 health check, request and response metrics, inbound and outbound traffic,
서비스들의 TRAFFIC ROUTING, 그리고 istio 설정(VirtualService, DestinationRule 등) 을
볼수 있는 기능들이 있다.

install Kiali

1 kiali 홈페이지에 가보면 install 이 한줄로 표시되어있는데, 이걸 설치하려면 envsubst 가 미리 설치가 되어있다고 씌어져 있다.
Mac 으로 테스트를 하였기에 homebrew 로 설치하는 방법을 적는다.

### 1. envsubst 설치
> brew install gettext
> brew link --force gettext

## kiali 설치
> bash <(curl -L http://git.io/getLatestKialiKubernetes)

설치시 사용자 명을 입력하는란이 있다.

2 다음으로는 Kiali 를 사용할수 있는 authenticate 를 생성한다.

NAMESPACE=istio-system
KIALI_USERNAME=$(read -p 'Kiali Username: ' uval && echo -n $uval | base64)
KIALI_PASSPHRASE=$(read -sp 'Kiali Passphrase: ' pval && echo -n $pval | base64)
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: kiali
  namespace: $NAMESPACE
  labels:
    app: kiali
type: Opaque
data:
  username: $KIALI_USERNAME
  passphrase: $KIALI_PASSPHRASE
EOF

필자는 read -p 명령어가 안먹어서 $(echo -n 'admin' | base64) 이런식으로 강제로 값을 주었다.

3 istio 설치시 kiali.enabled=true 가 안되어 있으니, 해당 명령을 입력할 수 있는 작업을 시행한다.

> helm template --set kiali.enabled=true install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml
> kubectl apply -f $HOME/istio.yaml

3-1 kiali 설치시 jaeger 와 grafana 도 연결해서 사용을 할수 있다.
이것을 사용하려면 아래와 같이 jaegerURL과 grafanaURL 을 설정을 하던가
혹은 최초 설치시 환경변수로 등록을 해 놓아도 된다.

설치 전에 JAEGER_URI, GRAFANA_URI 을 환경변수로 등록을 하면 입력되어 설치된다.
export GRAFANA_URL=grafana:3000
export JAEGER_URL=jaeger-query:16686

혹시 url 을 바꿀 경우에는 아래서 만든 $HOME/istio.yaml 의 Config을 변경하면 된다.
수동 변경시 kiali pod 를 강제로 재시작 해주어야 한다.

> helm template \
    --set kiali.enabled=true \
    --set "kiali.dashboard.jaegerURL=http://$(kubectl get svc tracing -o jsonpath='{.spec.clusterIP}'):80" \
    --set "kiali.dashboard.grafanaURL=http://$(kubectl get svc grafana -o jsonpath='{.spec.clusterIP}'):3000" \
    install/kubernetes/helm/istio \
    --name istio --namespace istio-system > $HOME/istio.yaml
> kubectl apply -f $HOME/istio.yaml

접속

kiali 를 loadbalancer 로 설정을 하였는데 연결이 안된다.
원인은 필자도 잘 몰라서.. port-forward 방식으로 접속하였다.

kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}') 20001:20001

Visit http://localhost:20001

아래 그림은 uEngine-cloud-k8s 가 통신되는 모습이다.

2019-03-07 4 22 59