-
Notifications
You must be signed in to change notification settings - Fork 2
Kiali on Istio
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 등) 을
볼수 있는 기능들이 있다.
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 가 통신되는 모습이다.