본문 바로가기

Cloud/Oracle Cloud Infrastructure (OCI)

OCI상에서 ISTIO를 활용하여 구현한 Service Mesh - #3. 이스티오 데모 - 사전 준비

Oracle Cloud Infrastructure (OCI) 에서 이스티오(ISTIO)를 활용한 서비스 메쉬(Service Mesh)에 대한 기술 정리 및 이를 데모로 구현한 내용을 정리합니다.

글 순서

1. Overview

2. 이스티오 작동 방식

3. 이스티오 데모 - 사전 준비

4. 이스티오 데모 - 쿠버네티스 대쉬보드 설치/설정

5. 이스티오 데모 - 이스티오 설치, 엔보이 프록시 주입

6. 이스티오 데모 - 샘플 어플리케이션 (Bookinfo) 배포

7. 이스티오 데모 - 카나리 배포

8. 이스티오 데모 - 결함 주입(Fault Injection)

9. 이스티오 데모 - 서비스 시각화 (프로메테우스)

10. 이스티오 데모 - 서비스 시각화 (그라파나)

11. 이스티오 데모 - 서비스 시각화 (키알리)

12. 이스티오 데모 - 서비스 시각화 (예거)

 

REFERENCES

아래 도서 및 사이트를 참조하여 작성한 문서입니다.

  • 도메인 주도 설계로 시작하는 마이크로 서비스 개발 (위키북스)
  • 쿠버네티스 완벽 가이드 (길벗)
  • Istio로 시작하는 서비스 메시 (에이콘)
  • Isitio Documentation

 

이스티오 데모

Envoy 배포부터 이스티오를 활용한 카나리배포, 장애 주입, 프로메테우스(Prometheus)와 그라파나(Grafana)를 이용한 메트릭에 대한 시각화까지 진행합니다.

 

데모 아키텍처

아래 오라클 클라우드 아키텍처 센터에 나온 쿠버네티스 상의 Service Mesh 아키텍처를 데모로 구현합니다.

Enable OCI Service Mesh on your Kubernetes applications

 

미리 준비한 내용

쿠버네티스 클러스터 생성

 

kubectl 실행 호스트 생성/설정

 

Server with GUI 및 VNC 설치/설정

쿠버네트스 대쉬보드와 그라파나 대쉬보드를 웹페이지로 확인하기 위해 위 데모 아키텍처와 같이 kubectl/kubeconfig를 설정한 VM에 Server with GUI 모듈과 VNC를 설치하고, 로컬 클라이언트와 연결을 설정했습니다. 다음과 같은 절차로 진행합니다.

먼저 OCI VM에 VNC Server 설치를 위해 설치된 환경 그룹에 Server With GUI이 있는지 확인합니다.

[root@demo opc]# whoami
root
[root@demo opc]# yum group list
Loaded plugins: langpacks, ulninfo
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
...
Done

 

설치된 환경 그룹에 "Server With GUI"가 없으면 설치합니다.

[root@demo opc]# yum group install "Server with GUI" -y
Loaded plugins: langpacks, ulninfo
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
...
Complete!

 

이제 설치된 환경 그룹에 Server With GUI이 있는지 확인합니다.

[root@demo opc]# yum group list
Loaded plugins: langpacks, ulninfo
Installed Environment Groups:
   Server with GUI
...
Done

 

TigerVNC 설치합니다.

[root@demo opc]# yum install tigervnc-server -y
Loaded plugins: langpacks, ulninfo
Resolving Dependencies
...

Complete!

 

root 세션에서 로그아웃한 다음, opc 유저로 VNCServer 패스워드 설정합니다.

[root@demo opc]# exit
exit
[opc@demo ~]$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used

 

root 유저로 돌아와서 "/lib/systemd" 아래의 VNC 서비스 템플릿 파일을 "/etc/systemd" 아래에 복사한 다음, 복사한 파일을 열어서 "ExecStart=/usr/bin/vncserver_wrapper <USER> %i" 부분에서 <USER>를 사용할 유저(opc)로 변경합니다. 여기서는 "opc"로 변경했습니다.

[opc@demo ~]$ sudo -s
[root@demo opc]# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@\\:1.service
[root@demo opc]# vi /etc/systemd/system/vncserver@\\:1.service
...
ExecStart=/usr/bin/vncserver_wrapper opc %i

 

설정 파일을 reload하고, VNC 서비스를 enable하고 start 시킵니다.

[root@demo opc]# systemctl daemon-reload
[root@demo opc]# systemctl enable vncserver@\\:1.service
Created symlink from /etc/systemd/system/multi-user.target.wants/vncserver@:1.service to /etc/systemd/system/vncserver@:1.service.
[root@demo opc]# **systemctl start vncserver@\\:1.service
[root@demo opc]# **systemctl status vncserver@\\:1.service
● vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-07-22 09:10:50 GMT; 6s ago
  Process: 9980 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 9984 (vncserver_wrapp)
   CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
           ├─ 9984 /bin/sh /usr/bin/vncserver_wrapper opc :1
           └─10639 sleep 0.1

 

VNC 서버 설치가 끝났습니다. 이제 PuTTY로 SSH Tunnel을 설정해서 로컬 PC에서 VNC 서버로 연결을 합니다. PuTTy를 열어서 Session에서 서버 정보 입력합니다. 여기서는 demo이라는 이름으로 세션을 저장했습니다.

 

Connection > Data에서 Auto-login username에 opc를 입력했습니다.

 

Connection > SSH > Tunnels에서 Source port: "5901", Destination: "localhost:5901" 입력 한 다음, Add 클릭합니다.

 

Connection > SSH > Auth에서 Private key file for authentication에서 ppk 포맷 SSH private key 등록합니다.

 

Session으로 돌아가서 “Save” 버튼을 클릭하여 지금까지의 설정을 저장하고, “Open”을 클릭하여 SSH 연결을 생성합니다.

SSH Tunnel이 열리고 나면, VNC viewer를 실행해서 VNC Server에 localhost:5901 를 입력합니다. VNC Viewer는 "TigerVNC Viewer 1.3.1"을 사용했습니다.

 

VNC 패스워드 입력합니다.

 

VNC Viewer로 최초 접속을 하면, 언어, 자판 등의 설정을 합니다. 설정이 완료되면 아래와 같은 화면을 볼 수 있습니다.

 

<END>