[Kubernetes] 쿠버네티스 Istio(이스티오), kiali(키알리) 설치 방법

 

 

[Kubernetes] Istio

 

[Kubernetes] Istio 이스티오

Kubernetes는 컨테이너와 서비스를 관리하는 플랫폼이고, Istio는 그 위에서 서비스 간의 통신을 보다 정교하게 관리하고 보안을 강화하는 도구입니다. 두 기술은 함께 사용되며, Kubernetes의 클러스터 내에서 Istio를 통해 더욱 효율적이고 안전한 마이크로서비스 환경을 만들 수 있습니다.

 

1. 서비스 간 통신 관리

Kubernetes는 컨테이너와 서비스의 배포를 자동화합니다. 그러나, 서비스 간의 통신을 어떻게 관리할지는 별도로 설정해야 합니다.
Istio는 서비스 간의 통신을 더 세밀하게 제어합니다. 예를 들어, 요청을 라우팅하거나, 특정 서비스로의 트래픽을 조정할 수 있습니다.

 

2. 보안 강화

Kubernetes는 기본적인 네트워크 보안을 제공하지만, 서비스 간의 암호화된 통신과 인증을 직접 설정하기는 복잡할 수 있습니다.
Istio는 모든 서비스 간의 통신을 자동으로 암호화하고, 서비스에 대한 인증 및 권한 부여를 간편하게 설정할 수 있게 해줍니다.

 

3. 모니터링 및 관찰성

Kubernetes는 서비스의 상태를 모니터링할 수 있는 기능을 제공하지만, 서비스 간의 세부적인 트래픽 정보는 부족할 수 있습니다.
Istio는 각 서비스 간의 요청과 응답을 추적하고, 성능을 모니터링할 수 있는 기능을 제공합니다. 이를 통해 시스템의 상태를 더 잘 이해하고 문제를 쉽게 찾아낼 수 있습니다.

 

 


 

Istio(이스티오) 설치

 

이스티오 설치

1. root 사용자 로그인

sudo su - root

root 사용자로 로그인 합니다. -root를 붙여야 root사용자의 설정파일을 읽을 수 있습니다.

 

 

2. 이스티오 명령어(프로그램) 설치

1) calico 설정 변경

kubectl patch FelixConfiguration default --type=merge --patch \
	   '{"spec": {"policySyncPathPrefix": "/var/run/nodeagent"}}'

 

kubectl patch installation default --type=merge -p '{"spec": {"flexVolumePath": "None"}}'

 

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/csi-driver.yaml

 

 

2) 명령어(프로그램) 설치

	curl -L https://git.io/getLatestIstio | ISTIO_VERSION=1.22.4 sh -
	echo "export PATH=$HOME/istio-1.22.4/bin:$PATH" >> ~/.bashrc
	source .bashrc
	istioctl --help

 

 

3. 이스티오 컨트롤 플레인 설치하기

istioctl install --set components.cni.enabled=true -y

설치시 시간이 꽤 걸립니다.

 

오류 발생시 삭제 명령어(설치 성공시 넘어가면 됩니다)

istioctl x uninstall --purge

 

 

 

Istio의 PeerAuthentication 리소스 생성

kubectl create -f - <<EOF
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default-strict-mode
  namespace: istio-system
spec:
  mtls:
    mode: STRICT
EOF

이 설정을 통해 모든 서비스 간의 통신은 암호화되며, 신뢰할 수 있는 인증서를 가진 서비스만 서로 통신할 수 있도록 보장합니다.

 

 

curl https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/alp/istio-inject-configmap-1.15.yaml -o istio-inject-configmap.yaml

Calico GitHub 저장소에서 v3.27.0의 Istio 사이드카 주입 설정 파일(istio-inject-configmap-1.15.yaml)을 다운로드하여, 로컬 시스템에 istio-inject-configmap.yaml이라는 이름으로 저장

 

 

kubectl patch configmap -n istio-system istio-sidecar-injector --patch "$(cat istio-inject-configmap.yaml)"

istio-system 네임스페이스의 istio-sidecar-injector ConfigMap을 업데이트

 

명령어 입력후 쿠버네티스 대시보드 - 네임스페이스 에서 istio-system이 생성되었는지 확인한다.

 

 

 

 


 

[Kubernetes] Kiali 키알리

 

[Kubernetes] Kiali 키알리

Kiali는 Kubernetes 클러스터에서 Istio와 같은 서비스 메쉬를 시각화하고 모니터링하는 도구입니다.

 

1. 서비스 메쉬 시각화: Kiali는 Kubernetes에서 실행되는 서비스 간의 트래픽 흐름과 관계를 시각적으로 표시합니다.
2. 모니터링: Istio를 통해 수집된 메트릭과 로그를 시각화하여 서비스의 상태와 성능을 모니터링합니다.
3. 통합: Istio와 함께 사용되어, 서비스 메쉬의 트래픽 관리와 정책을 쉽게 이해하고 조정할 수 있도록 돕습니다.

 

 


 

 

kaiali 설치

 

kiali 설치

addon 설치

vi istio-1.22.4/samples/addons/kiali.yaml

		336 spec:
		337   ports:
		338   - name: http
		339     appProtocol: http
		340     protocol: TCP
		341     port: 20001
		342     targetPort: 20001
		343   - name: http-metrics
		344     appProtocol: http
		345     protocol: TCP
		346     port: 9090
		347     targetPort: 9090
		348   type: LoadBalancer

kiali.yaml 파일 수정하여 Service파일 LoadBlancer 적용되도록 수정

 

kubectl apply -f istio-1.22.4/samples/addons/kiali.yaml

kiali.yaml 파일 제작

 

 

네임스페이스의 istio-system 클릭

 

 

우측상단 클릭하여 네임스페이스로 이동 버튼 클릭

 

 

주소창이 namespace=istio-system로 변경된것을 볼 수 있다.

서비스 클릭

kiali 외부 엔드포인트 주소 클릭

 

 

kiali 사이트 접속

 

 

	kubectl apply -f istio-1.22.4/samples/addons/prometheus.yaml
	kubectl apply -f istio-1.22.4/samples/addons/grafana.yaml
	kubectl apply -f istio-1.22.4/samples/addons/jaeger.yaml

모두 잘 설치되었으면 추가해 줍니다.