쿠버네티스 클러스터 구성 및 관리
클라우드의 권한 관리(IAM)
사용 목적
- 허가받은 사용자만 접속할 수 있도록 통제
- 사용자마다의 적절한 권한 관리
- 일관성을 가지는 권한 관리
역할 기반 접근 제어(RBAC)
현재 적용된 인가(Authorization) 설정
역할 기반 접근 제어의 전체 구조
Role
과 SA(Service Account)
를 RoleBinding
으로 묶음
컨텍스트(쿠버네티스 클러스터)로 구분된 구조
- 컨텍스트 단위로 묶기 위하여 네임스페이스 적용
ns-sa-dev-both.yaml
Namespace
:ServiceAccount
: 누가 할 것인가? 의 누구
role-get-dev1.yaml, role-get-dev2.yaml
rolebidning-dev1.yaml, rolebidning-dev2.yaml
subjects
와 roleRef
를 묶어줌apiGroup
을 ""
으로 지정하면 SA가 현재 속한 그룹으로 자동 지정됨
sa-pod-admin, clusterrole, clusterrolebinding.yaml
시스템 자원 사용 관리 1부(리소스 쿼터/ ResourceQuota)
리소스 쿼터 (ResourceQuota)
- 파드, 디플로이먼트, 서비스와 같은 리소스의 개수를 네임스페이스 단위로 제한
spec
: Provisioner 이름을 따라가는 것이 권장사항
각 리소스 별 쿼터
시스템 자원 사용 관리 2부(리밋 레인지/ LimitRange)
- 파드나 PVC 같은 리소스가 일정 수준 이상/이하의 자원을 가져가지 못하도록 네임스페이스 단위에서 제한
네트워크 정책(Network Policy)
- 인그레스 트래픽: 방화벽을 통과하여 서버로 들어오는 트래픽
- 이그레스 트래픽: 서버에서 외부로 나가는 트래픽
- 쿠버네티스는 이러한 트래픽을 파드 기준으로 관리
1-2-NetworkPolicy-deny-all.yaml
networkpolicy-deny-all
: 모든 트래픽을 거부- 차후에 필요한 트래픽만 허용
2-2-NetworkPolicy-podSelector.yaml
internal
: chk-info
레이블을 가진 파드끼리만 내부 통신
3-[2-3]-NetworkPolicy-[ipBlock | ipBlock-except].yaml
4-2-NetworkPolicy-namespaceSelector-dev2
namespaceSelector
: 특정 namespace의 트래픽만 허용