[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
모두 잘 설치되었으면 추가해 줍니다.
'IT관련 > Kubernetes' 카테고리의 다른 글
[Kubernetes] 도커허브와 쿠버네티스를 이용한 Spring Boot 애플리케이션 배포: ConfigMap, Deployment, Service 설정 (0) | 2024.08.21 |
---|---|
[Kubernetes] Pod, LoadBalancer를 사용한 MariaDB 외부 접근 연결 설정 (0) | 2024.08.21 |
[Kubernetes] Ubuntu 쿠버네티스 설치 방법 (0) | 2024.08.13 |