멀티 테넌트 간 분리
테넌트 간 분리를 Amazon EKS에서 구현하는 방법들입니다.
B2B라면 고객 회사
B2C라는 소프트웨어 최종 사용자이다.
테넌트별 소비 패턴을 알아보자.
오픈 소스
비용 효율성 - 컨테이너로 적은 리소스 사용
관리형 쿠버 네티스 - 관리부 담은 적고 고가용성과 높은 확장성 제공
안정성과 확장성 - Fargate 등
Saas는 테넌트 간 환경을 공유하면서 인프라 활용도를 높이는 구조를 가진다.
1
보안 및 규정 준수.
다른 테넌트 간 데이터 전달이 안되어야 한다.
2
리소스를 고른 분배
cpu 메모리, 네트워크 분배
3
티어링
프리미엄, 베이직 등으로 비용을 구분한다.
보안과 리소스를 티어링 한다. 높은 요금제에 보안을 더 제공한다.
1
스탠더드 = 공유 테넌트
2
프리미엄 = 단독 = 보안과 리소스 강화됨
3
네임스페이스?
클러스터 내에서 테넌트 간 안전한 네트워크 간 네트워크 정책
권한을 관리하는 서비스 어카운트
리소스 쿼터
1
디폴트로 클러스터 내 모든 파드는 제한 없이 통신 가능.
멀티 테넌트에서는 테넌트 간 엄격한 네트워크 차단이 필요하다.
2
쿠버 네티스 네트워크 정책 이용법?
셀렉터, 레이블
IP, 포트
3~4 계층에서 pod 간 제어법.
3
추가로
TOGERA 등 네트워크 플러그인을 설치해 사용 시?
구체적인 정책 적용 가능
글로벌 정책 지원
서비스 메시와 통합 가능
레이어 7 계층 제어 가능
4
디폴트 Deny 정책을 적용해 네트워크 보안을 유지?
예를 들어 캘리코 네트워크 정책에 디폴트 Deny정책 적용
1
서비스 어카운트 위한 IAM 역할 사용 필요.
2
IRSA는 IAM을 통해 제어 가능.
3
IRSA 사용 조건?
해당 클러스터에서 IAM을 OIDC 공급자로 설정해야 한다.
https://brunch.co.kr/@topasvga/2471
https://brunch.co.kr/@topasvga/2473
1
특정 테넌트에 의한 과도한 리소스 소진으로 전체 장애 발생하는 것을 방지하자.
2
리소스 쿼터
네임스페이스에서 필요한 최대 CPU, 최대 메모리를 설정하자.
3
스토리지 리소스 쿼터를 적용해 보자.
https://brunch.co.kr/@topasvga/1656
1
낮은 우선순위의 파드를 축출할 수 있다.
무료 고객의 파드를 축출
유료 고객의 파드를 사용하도록 가능하다.
2
특정 파드가 특정 노드에 실행되도록 해보자.
3
테인트와 톨러 레이션?
어떤 파드가 해당 노드에 실행되지 못하도록 막는다.
taint 사용 , tolerations 설정
4
AWS FARGATE 관리형 컴퓨팅 서비스.
FARGATE에서 사용하는 POD는 다른 파드와 공유하지 않는다.
1개의 POD 가 독립적으로 사용된다.
https://brunch.co.kr/@topasvga/1656
OPA는 쿠버 네티스에 국한되지 않은 오픈소스 범용 정책 엔진
게이트키퍼는 OPA의 프로젝트 중 하나.
1
공유 환경 테넌트에서 구분하기?
2
테넌트별 인프라 비용 파악?
AWS Application Cost Porfiler 사용하자!
애플리케이션 미터링 -> S3 버킷에 데이터 수집 -> 데이터 처리 -> 리포트 (아테나와 퀵 사이트 사용)
1
https://brunch.co.kr/@topasvga/2466
2
https://brunch.co.kr/@topasvga/2439
3
https://brunch.co.kr/@topasvga/1769
4
https://brunch.co.kr/@topasvga/1758
감사합니다.