실습
Last updated
Last updated
에 명시된 내용을 참고해서 AWS Load Balancer Controller 설치
Istio 설치
CA 인증서 생성
example.com 도메인에 인증서 서명 요청 및 키 생성
인증서 서명
Secret 생성
Gateway 생성
VirtualService 생성
데모 애플리케이션 배포
데모 애플리케이션 호출 - HTTPS
Gateway에 HTTPS Redirect 설정
데모 애플리케이션 호출 - HTTP
Gateway에 설정한 HTTPS Redirect 삭제
VirtualService HTTPS Redirect 설정
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
리소스 삭제
AWS Certificate Manager를 통해서 SSL 인증서 발급
사용할 ACM 인증서의 ARN을 환경변수로 지정
e.g.
Istio 설치
사용할 Top 레벨 도메인주소를 환경변수로 지정
e.g.
Gateway 생성
VirtualService 생성
데모 애플리케이션 배포
아래의 명령어를 실행해서 나온 결과값과 같은 DNS 레코드 생성
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
Gateway에 HTTPS Redirect 설정
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
NLB와 Istio Ingress Gateway는 HTTP 프로토콜로 통신하므로 모든 요청이 HTTPS로 전환됨
Gateway에 설정한 HTTPS Redirect 삭제
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
VirtualService에 HTTPS Redirect 설정
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
VirtualService 설정한 HTTPS Redirect 삭제
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
Istio 설정변경 - NLB(HTTP) -> Istio Ingress Gateway(HTTP), NLB(HTTPS) -> Istio Ingress Gateway(HTTPS)로 라우팅 되도록 구성
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
Gateway에 443 포트 리스너 추가
데모 애플리케이션 호출 - HTTPS
Gateway에 HTTPS Redirect 설정
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
데모 애플리케이션 배포 - https://github.com/youngwjung/flask-echo
VirtualService 생성
아래의 명령어를 실행해서 나온 결과값과 같은 DNS 레코드 생성
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
Gateway에 설정한 HTTPS Redirect 삭제
데모 애플리케이션 호출 - HTTP
VirtualService에 HTTPS Redirect 설정
데모 애플리케이션 호출 - HTTPS
데모 애플리케이션 호출 - HTTP
리소스 삭제
Istio 설치
Gateway 생성
데모 애플리케이션 배포
데모 애플리케이션 호출
내 컴퓨터(혹은 현재 접속된 Cloud9 인스턴스) IP 주소 확인
내 컴퓨터에서 Ingress Gateway로 접근 차단
데모 애플리케이션 호출
Ingress Gateway 로그 확인
Envoy 로그 활성화
Ingress Gateway 재생성
데모 애플리케이션 호출
Ingress Gateway 로그 확인
NLB 설정 변경
데모 애플리케이션 호출
Ingress Gateway 로그 확인
NLB 설정 변경
Envoy Filter 생성 - Proxy Protocol
Envoy Filter 생성 - X-Forwarded-For 헤더
데모 애플리케이션 호출
Ingress Gateway 로그 확인
데모 애플리케이션 호출
Ingress Gateway 로그 확인
리소스 삭제
Istio 설치
default 네임스페이스에 생성되는 Pod에 프록시 주입 설정
Pod 생성
Pod가 생성되고 프록시 컨테이너가 추가되었는지 확인
생성한 Pod에서 httpbin.org 접근 시도
Pod에서 httpbin.org 접근 시도
Pod에서 httpbin.org 접근 시도
리소스 삭제
Istio 설치
default 네임스페이스에 생성되는 Pod에 프록시 주입 설정
Pod 생성
Pod가 생성되고 프록시 컨테이너가 추가되었는지 확인
Sidecar Proxy의 리스너 설정 확인 - https://istio.io/latest/docs/ops/diagnostic-tools/proxy-cmd/#deep-dive-into-envoy-configuration
Istio Sidecar Proxy가 사용하는 포트 확인 - https://istio.io/latest/docs/ops/deployment/requirements/#ports-used-by-istio
Sidecar Proxy의 아웃바운드 설정 확인 - https://faun.pub/understanding-how-envoy-sidecar-intercept-and-route-traffic-in-istio-service-mesh-20fea2a78833
요약: 목적지 포트가 15001일 경우에는 BlackHoleCluster로 아닐 경우에는 PassthroughCluster로
Sidecar Proxy의 클러스터 설정 확인
PassthroughCluster의 상세 설정 확인 - InboundPassthroughClusterIpv4 및 PassthroughCluster에 대한 정보가 보여지므로 name 값을 확인해서 PassthroughCluster에 대한 정보만 확인
BlackHoleCluster의 상세 설정 확인
생성한 Pod에서 httpbin.org 접근 시도
Istio 아웃바운드 트래픽 정책 변경
Pod에서 httpbin.org 접근 시도
Sidecar Proxy의 리스너 설정 확인
Sidecar Proxy의 아웃바운드 설정 확인
요약: 목적지 포트가 15001일 경우에는 BlackHoleCluster로 아닐 경우에도 BlackHoleCluster로
ServiceEntry 생성
Pod에서 httpbin.org 접근 시도
Sidecar Proxy의 Route 설정 확인
Sidecar Proxy의 Route 설정 확인 - 80/httpbin.org
요약: 포트 80으로 나갈때 호스트가 httpbin.org을 경우 httpbin.org 클러스터로 아닐 경우 502 반환
Pod에서 google.com 접근 시도
Sidecar Proxy의 클러스터 설정 확인
httpbin.org 의 상세 설정 확인
리소스 삭제
Istio 설치
default 네임스페이스에 생성되는 Pod에 프록시 주입 설정
HTTPS Proxy를 배포할 Namespace 생성
Squid proxy 설정파일 생성
Squid proxy 생성
Squid proxy 생성 확인
Sidecar Proxy가 없는 Pod 생성
Squid proxy를 통해서 외부 HTTPS 서비스 호출
Squid proxy를 통해서 외부 HTTP 서비스 호출
Squid proxy 로그 확인
Sidecar Proxy를 포함하는 Pod 생성
Squid proxy를 통해서 외부 HTTPS 서비스 호출
Squid proxy를 통해서 외부 HTTP 서비스 호출
Squid proxy 로그 확인
Sidecar Proxy 로그 확인
Istio 아웃바운드 트래픽 정책 변경
Squid proxy를 통해서 외부 HTTPS 서비스 호출
Squid proxy를 통해서 외부 HTTP 서비스 호출
Squid proxy 로그 확인
Sidecar Proxy 로그 확인
ServiceEntry 생성
Squid proxy를 통해서 외부 HTTPS 서비스 호출
Squid proxy를 통해서 외부 HTTP 서비스 호출
Squid proxy 로그 확인
Sidecar Proxy 로그 확인
ServiceEntry 변경 - TCP 프로토콜 사용
Squid proxy를 통해서 외부 HTTPS 서비스 호출
Squid proxy를 통해서 외부 HTTP 서비스 호출
Squid proxy 로그 확인
Sidecar Proxy 로그 확인
리소스 삭제