본문 바로가기

반응형

⭐ Kubernetes & EKS

(135)
IRSA를 활용하여 Pod에 특정 사용자만 접근 하도록 설정하기 # IRSA (IAM Roles for Service Accounts)를 활용한 pod 접근 권한 관리 - IRSA는 pod에 특정 IAM Accounts를 매핑하여 특정 사용자만이 해당 pod에 접근이 가능하도록 구성하는 작업 이다. 설정은 간단하다 아래의 샘플을 보면 확인이 가능하다. - IAM Open ID Connect provider를 추가한다. eksctl utils associate-iam-oidc-provider --region=ap-northeast-2 --cluster={cluster_name} --approve - 결과 - ServiceAccount를 생성한다. (default 네임스페이스에만 접근가능) eksctl create iamserviceaccount --cluster={cl..
클러스터 접근을 위한 사용자 생성 및 특정 NameSpace에 접근하도록 설정하기 # 클러스터 User 생성 및 특정 NamaSpace에만 접근하도록 설정하기 1. 유저 확인 및 롤 확인하기 - 일단 기본 템플릿은 아래와 같다. apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [""] # "" indicates the core API group resources: ["pods"] verbs: ["get", "watch", "list"] - 특정 user에 대한 접근 템플릿 apiVersion: rbac.authorization.k8s.io/v1 # This role binding allows "dave" to read sec..
RBAC 권한의 종류 # RBAC 권한의 종류 - RBAC 권한의 종류는 아래와 같다. - cluster-admin : system:masters group - admin : None - edit : None - view : None 위와 같이 총 4개의 권한을 부여 할 수 있다. 그리고 권한을 아래와 같이 만들수도 있다. (특정 네임스페이스에 대해서 적용 가능한 항목들이다. "*" 를 부여하면 전체 권한이 부여된다.) kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dev-was namespace: dev-was rules: - apiGroups: ["", "extensions", "apps"] resources: ["deployments", "rep..
EKS에 CSI Driver 설치하기 # EKS에 CSI Driver 설치하기 1. CSI Driver가 필요한 이유? - EKS 1.23 부터는 CSI Driver만 사용하여 EBS와 연결 할 수 있다. 그러니까 한마디로, EKS에 pod로 DB를 올리거나, 기타 EBS가 필요한 애플리케이션을 올릴경우 CSI Driver가 필수로 필요하다. - CSI Driver는 인터페이스로써 DB나 애플리케이션과 EBS 드라이버를 연결해주는 매개체 역할을 한다. 2. EBS CSI Driver의 역할? - 공식 사이트 에서는 아래와 같이 설명을 하고 있다. 1. Kubernetes 와 Amazon EBS 볼륨 을 통합한다. 2. Kubernetes 클러스터 내에서 EBS 볼륨을 쉽게 구성 및 관리가 가능하다. 3. Kubernetes 클러스터에서 EB..
PV, PVC를 이용한 EBS 볼륨 사용하기 # PV와 PVC를 이용한 EBS 볼륨을 사용해보자. PV와 PVC는 pod를 생성하는 yaml 관점에서 보면 EFS인지 EBS인지 상관 하지 않고 볼륨만 생성해주는 역할을 한다고 보면 된다. 예를들어 인프라를 관리하는 사람은 PV만 생성해서 두면, 개발자는 PVC를 생성하여 볼륨을 사용 할 수 있다. 그렇다면 볼륨을 생성하는 과정에 대해서 알아본다. 1. EBS 볼륨을 생성 - AWS 콘솔에서 EBS볼륨을 생성하고 해당 볼륨의 ID를 복사한다. 2. PV를 생성 - ebs-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: ebs-pv spec: capacity: storage: 8Gi accessModes: - ReadWriteOnce aws..
파드, 서비스 도메인을 이용한 통신 CoreDNS는 파드 또는 서비스를 도메인으로 접근할 수 있습니다. 파드/서비스 도메인은 설정 후 변경되는 파드IP, 서비스 IP의 불편함을 해결해줍니다. 파드 또는 서비스가 수정된다면 (Cluster)IP가 수정됩니다. CoreDNS는 파드와 서비스에 대한 도메인을 관리하며 해당하는 DNS요청이 오면 DNS응답을 전달합니다. - 파드 도메인과 서비스 도메인의 생성 방법은 아래와 같다. 파드 도메인: ..pod.cluster.local 서비스 도메인: ..svc.cluster.local - 하지만 EKS에서 노드그룹을 수정하면 초기화가 서비스 도메인으로 설정해 놓아도 초기화가 된다. - 끝 -
Cordon & Uncordon # Cordon & Uncordon Cordon - 명령어 kubectl cordon cordon 명령어는 현재 노드에 배포된 Pod는 그대로 유지하면서, 추가로 생성되는 Pod의 배포를 제한하는 명령어다. 따라서, drain 과정에서의 cordon이 포함되어 있다고 볼 수 있다. Uncordon - 명령어 kubectl uncordon drain 혹은 cordon 명령어를 적용한 노드는 SechedulingDisabled 상태가 되어 더 이상 Pod이 scheduling되지 않는다.kubectl uncordon는 노드의 이러한 SchedulingDisabled 상태를 제거하여 노드에 Pod이 정상적으로 스케쥴링 될 수 있도록 복구하는 명령어다. - 끝 -
Drain # Drain Drain 이란? kubectl drain은 노드에 존재하는 모든 Pod을 제거하고, Pod들을 다른 노드에 새롭게 스케쥴링하는 명령어이다. 그리고 kubectl drain이 적용된 노드는 SchedulingDisabled 상태가 되며, 이후 새롭게 생성되는 어떤 Pod도 해당 노드에는 생성되지 않는다. 명령어 kubectl drain minikube --force --ignore-daemonsets # 모든 Pod이 종료되므로 주의 - 여기서 주의할 점은 StaticPods는 재배치 되어 생성되지 않는다. - kubectl drain 명령어는 새로운 Pod을 배포할 수 있는 추가적인 노드가 있는 경우에 가능하다. 그래서 1개의 노드로 운영되는 minikube 환경에서는 테스트가 현실적으로..

728x90
반응형